!2618 fix codex and codeCheck warnings

Merge pull request !2618 from zhaozhibo/master
This commit is contained in:
openharmony_ci 2022-10-13 13:03:09 +00:00 committed by Gitee
commit 3a84b55139
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
8 changed files with 99 additions and 65 deletions

View File

@ -1524,7 +1524,7 @@ JSTaggedValue BuiltinsString::ToLocaleLowerCase(EcmaRuntimeCallInfo *argv)
// starting at the first element of S.
// Transform those elements in uString to the to the Unicode Default Case Conversion algorithm
icu::Locale icuLocale = icu::Locale::createFromName(locale.c_str());
EcmaString *result = EcmaStringAccessor::LocaleConvertCase<true>(ecmaVm, string, icuLocale);
EcmaString *result = EcmaStringAccessor::ToLocaleLower(ecmaVm, string, icuLocale);
return JSTaggedValue(result);
}
@ -1580,7 +1580,7 @@ JSTaggedValue BuiltinsString::ToLocaleUpperCase(EcmaRuntimeCallInfo *argv)
// starting at the first element of S.
// Transform those elements in uString to the to the Unicode Default Case Conversion algorithm
icu::Locale icuLocale = icu::Locale::createFromName(locale.c_str());
EcmaString *result = EcmaStringAccessor::LocaleConvertCase<false>(ecmaVm, string, icuLocale);
EcmaString *result = EcmaStringAccessor::ToLocaleUpper(ecmaVm, string, icuLocale);
return JSTaggedValue(result);
}
@ -1594,7 +1594,7 @@ JSTaggedValue BuiltinsString::ToLowerCase(EcmaRuntimeCallInfo *argv)
JSHandle<JSTaggedValue> thisTag(JSTaggedValue::RequireObjectCoercible(thread, GetThis(argv)));
JSHandle<EcmaString> thisHandle = JSTaggedValue::ToString(thread, thisTag);
RETURN_EXCEPTION_IF_ABRUPT_COMPLETION(thread);
EcmaString *result = EcmaStringAccessor::ConvertCase<true>(thread->GetEcmaVM(), thisHandle);
EcmaString *result = EcmaStringAccessor::ToLower(thread->GetEcmaVM(), thisHandle);
return JSTaggedValue(result);
}
@ -1616,7 +1616,7 @@ JSTaggedValue BuiltinsString::ToUpperCase(EcmaRuntimeCallInfo *argv)
JSHandle<JSTaggedValue> thisTag(JSTaggedValue::RequireObjectCoercible(thread, GetThis(argv)));
JSHandle<EcmaString> thisHandle = JSTaggedValue::ToString(thread, thisTag);
RETURN_EXCEPTION_IF_ABRUPT_COMPLETION(thread);
EcmaString *result = EcmaStringAccessor::ConvertCase<false>(thread->GetEcmaVM(), thisHandle);
EcmaString *result = EcmaStringAccessor::ToUpper(thread->GetEcmaVM(), thisHandle);
return JSTaggedValue(result);
}

View File

@ -176,50 +176,5 @@ EcmaString *EcmaString::FastSubUtf16String(const EcmaVM *vm, const JSHandle<Ecma
ASSERT_PRINT(canBeCompressed == CanBeCompressed(string), "canBeCompresse does not match the real value!");
return string;
}
template<bool isLower>
EcmaString *EcmaString::ConvertCase(const EcmaVM *vm, const JSHandle<EcmaString> &src)
{
uint32_t srcLength = src->GetLength();
auto factory = vm->GetFactory();
if (src->IsUtf16()) {
std::u16string u16str = base::StringHelper::Utf16ToU16String(src->GetDataUtf16(), srcLength);
std::string res;
if (isLower) {
res = base::StringHelper::ToLower(u16str);
} else {
res = base::StringHelper::ToUpper(u16str);
}
return *(factory->NewFromStdString(res));
} else {
const char start = isLower ? 'A' : 'a';
const char end = isLower ? 'Z' : 'z';
auto newString = AllocStringObject(vm, srcLength, true);
Span<uint8_t> data(src->GetDataUtf8Writable(), srcLength);
auto newStringPtr = newString->GetDataUtf8Writable();
for (uint32_t index = 0; index < srcLength; ++index) {
if (base::StringHelper::Utf8CharInRange(data[index], start, end)) {
*(newStringPtr + index) = data[index] ^ (1 << 5); // 1 and 5 means lower to upper or upper to lower
} else {
*(newStringPtr + index) = data[index];
}
}
return newString;
}
}
template<bool isLower>
EcmaString *EcmaString::LocaleConvertCase(const EcmaVM *vm, const JSHandle<EcmaString> &src, const icu::Locale &locale)
{
auto factory = vm->GetFactory();
std::u16string utf16 = src->ToU16String();
std::string res;
if (isLower) {
res = base::StringHelper::ToLocaleLower(utf16, locale);
} else {
res = base::StringHelper::ToLocaleUpper(utf16, locale);
}
return *(factory->NewFromStdString(res));
}
} // namespace panda::ecmascript
#endif

View File

@ -634,6 +634,76 @@ EcmaString *EcmaString::TrimBody(const JSThread *thread, const JSHandle<EcmaStri
return res;
}
/* static */
EcmaString *EcmaString::ToLower(const EcmaVM *vm, const JSHandle<EcmaString> &src)
{
uint32_t srcLength = src->GetLength();
auto factory = vm->GetFactory();
if (src->IsUtf16()) {
std::u16string u16str = base::StringHelper::Utf16ToU16String(src->GetDataUtf16(), srcLength);
std::string res = base::StringHelper::ToLower(u16str);
return *(factory->NewFromStdString(res));
} else {
const char start = 'A';
const char end = 'Z';
auto newString = AllocStringObject(vm, srcLength, true);
Span<uint8_t> data(src->GetDataUtf8Writable(), srcLength);
auto newStringPtr = newString->GetDataUtf8Writable();
for (uint32_t index = 0; index < srcLength; ++index) {
if (base::StringHelper::Utf8CharInRange(data[index], start, end)) {
*(newStringPtr + index) = data[index] ^ (1 << 5); // 1 and 5 means lower to upper or upper to lower
} else {
*(newStringPtr + index) = data[index];
}
}
return newString;
}
}
/* static */
EcmaString *EcmaString::ToUpper(const EcmaVM *vm, const JSHandle<EcmaString> &src)
{
uint32_t srcLength = src->GetLength();
auto factory = vm->GetFactory();
if (src->IsUtf16()) {
std::u16string u16str = base::StringHelper::Utf16ToU16String(src->GetDataUtf16(), srcLength);
std::string res = base::StringHelper::ToUpper(u16str);
return *(factory->NewFromStdString(res));
} else {
const char start = 'a';
const char end = 'z';
auto newString = AllocStringObject(vm, srcLength, true);
Span<uint8_t> data(src->GetDataUtf8Writable(), srcLength);
auto newStringPtr = newString->GetDataUtf8Writable();
for (uint32_t index = 0; index < srcLength; ++index) {
if (base::StringHelper::Utf8CharInRange(data[index], start, end)) {
*(newStringPtr + index) = data[index] ^ (1 << 5); // 1 and 5 means lower to upper or upper to lower
} else {
*(newStringPtr + index) = data[index];
}
}
return newString;
}
}
/* static */
EcmaString *EcmaString::ToLocaleLower(const EcmaVM *vm, const JSHandle<EcmaString> &src, const icu::Locale &locale)
{
auto factory = vm->GetFactory();
std::u16string utf16 = src->ToU16String();
std::string res = base::StringHelper::ToLocaleLower(utf16, locale);
return *(factory->NewFromStdString(res));
}
/* static */
EcmaString *EcmaString::ToLocaleUpper(const EcmaVM *vm, const JSHandle<EcmaString> &src, const icu::Locale &locale)
{
auto factory = vm->GetFactory();
std::u16string utf16 = src->ToU16String();
std::string res = base::StringHelper::ToLocaleUpper(utf16, locale);
return *(factory->NewFromStdString(res));
}
EcmaString *EcmaString::Trim(const JSThread *thread, const JSHandle<EcmaString> &src, TrimMode mode)
{
uint32_t srcLen = src->GetLength();

View File

@ -386,11 +386,13 @@ private:
bool ToTypedArrayIndex(uint32_t *index);
template<bool isLower>
static EcmaString *ConvertCase(const EcmaVM *vm, const JSHandle<EcmaString> &src);
static EcmaString *ToLower(const EcmaVM *vm, const JSHandle<EcmaString> &src);
template<bool isLower>
static EcmaString *LocaleConvertCase(const EcmaVM *vm, const JSHandle<EcmaString> &src, const icu::Locale &locale);
static EcmaString *ToUpper(const EcmaVM *vm, const JSHandle<EcmaString> &src);
static EcmaString *ToLocaleLower(const EcmaVM *vm, const JSHandle<EcmaString> &src, const icu::Locale &locale);
static EcmaString *ToLocaleUpper(const EcmaVM *vm, const JSHandle<EcmaString> &src, const icu::Locale &locale);
template<typename T>
static EcmaString *TrimBody(const JSThread *thread, const JSHandle<EcmaString> &src, Span<T> &data, TrimMode mode);
@ -680,16 +682,24 @@ public:
return string_->ToTypedArrayIndex(index);
}
template<bool isLower>
static EcmaString *ConvertCase(const EcmaVM *vm, const JSHandle<EcmaString> &src)
static EcmaString *ToLower(const EcmaVM *vm, const JSHandle<EcmaString> &src)
{
return EcmaString::ConvertCase<isLower>(vm, src);
return EcmaString::ToLower(vm, src);
}
template<bool isLower>
static EcmaString *LocaleConvertCase(const EcmaVM *vm, const JSHandle<EcmaString> &src, const icu::Locale &locale)
static EcmaString *ToUpper(const EcmaVM *vm, const JSHandle<EcmaString> &src)
{
return EcmaString::LocaleConvertCase<isLower>(vm, src, locale);
return EcmaString::ToUpper(vm, src);
}
static EcmaString *ToLocaleLower(const EcmaVM *vm, const JSHandle<EcmaString> &src, const icu::Locale &locale)
{
return EcmaString::ToLocaleLower(vm, src, locale);
}
static EcmaString *ToLocaleUpper(const EcmaVM *vm, const JSHandle<EcmaString> &src, const icu::Locale &locale)
{
return EcmaString::ToLocaleUpper(vm, src, locale);
}
static EcmaString *Trim(const JSThread *thread,

View File

@ -197,10 +197,9 @@ int TaggedList<Derived>::FindDataIndexByNodeIndex(int index) const
}
template<typename Derived>
void TaggedList<Derived>::MapNodeIndexToDataIndex(int* nodeIndexMapToDataIndex)
void TaggedList<Derived>::MapNodeIndexToDataIndex(int* nodeIndexMapToDataIndex, int length)
{
int i = 0;
int length = NumberOfNodes();
int nextIndex = ELEMENTS_START_INDEX;
while (i < length) {
nextIndex = GetElement(nextIndex + NEXT_PTR_OFFSET).GetInt();
@ -400,7 +399,7 @@ JSTaggedValue TaggedSingleList::Sort(JSThread *thread, const JSHandle<JSTaggedVa
JSMutableHandle<JSTaggedValue> previousValue(thread, JSTaggedValue::Undefined());
// create index map
int* nodeIndexMapToDataIndex = new int[length];
taggedList->MapNodeIndexToDataIndex(nodeIndexMapToDataIndex);
taggedList->MapNodeIndexToDataIndex(nodeIndexMapToDataIndex, length);
int beginIndex = 0;
int endIndex = 0;

View File

@ -47,7 +47,7 @@ public:
int FindIndexByElement(const JSTaggedValue &element);
int FindLastIndexByElement(const JSTaggedValue &element);
int FindDataIndexByNodeIndex(int index) const;
void MapNodeIndexToDataIndex(int* nodeIndexMapToDataIndex);
void MapNodeIndexToDataIndex(int* nodeIndexMapToDataIndex, int length);
void RemoveNode(JSThread *thread, int prevDataIndex);
int FindPrevNodeByIndex(int index) const;
int FindPrevNodeByValue(const JSTaggedValue &element);