diff --git a/libabckit/src/adapter_static/abckit_static.cpp b/libabckit/src/adapter_static/abckit_static.cpp index ab37415761ecc828d80f26cb484429b49e08a6fd..057e78b8653fe7c96f8d2e6b09ec6bb4cd53ee55 100644 --- a/libabckit/src/adapter_static/abckit_static.cpp +++ b/libabckit/src/adapter_static/abckit_static.cpp @@ -45,8 +45,8 @@ namespace { constexpr std::string_view ETS_ANNOTATION_CLASS = "ets.annotation.class"; constexpr std::string_view ETS_ANNOTATION_MODULE = "ets.annotation.Module"; constexpr std::string_view ENUM_BASE = "std.core.BaseEnum"; -constexpr std::string_view INTERFACE_GET_FUNCTION_PATTERN = ".*(.*)"; -constexpr std::string_view INTERFACE_SET_FUNCTION_PATTERN = ".*(.*)"; +constexpr std::string_view INTERFACE_GET_FUNCTION_PATTERN = ".*%%get-(.*)"; +constexpr std::string_view INTERFACE_SET_FUNCTION_PATTERN = ".*%%set-(.*)"; const std::unordered_set GLOBAL_CLASS_NAMES = {"ETSGLOBAL", "_GLOBAL"}; } // namespace @@ -420,7 +420,7 @@ static bool IsEnum(const pandasm::Record &record) return record.metadata->GetBase() == ENUM_BASE; } -static const std::string LAMBDA_RECORD_KEY = "LambdaObject"; +static const std::string LAMBDA_RECORD_KEY = "%%lambda-"; static const std::string INIT_FUNC_NAME = "_$init$_"; static const std::string TRIGGER_CCTOR_FUNC_NAME = "_$trigger_cctor$_"; diff --git a/libabckit/src/adapter_static/metadata_inspect_static.cpp b/libabckit/src/adapter_static/metadata_inspect_static.cpp index 599374539feea52a8f9903df633040b55ca1f637..3c6ac6d69392bf044f91ebd27e042cb1da0c2ce3 100644 --- a/libabckit/src/adapter_static/metadata_inspect_static.cpp +++ b/libabckit/src/adapter_static/metadata_inspect_static.cpp @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -287,7 +287,7 @@ bool FunctionIsAnonymousStatic(AbckitCoreFunction *function) size_t pos = func->name.rfind('.'); ASSERT(pos != std::string::npos); std::string name = func->name.substr(pos + 1); - return name.find("lambda$invoke$") == 0; + return name.find("lambda_invoke-") == 0; } bool FunctionIsNativeStatic(AbckitCoreFunction *function) diff --git a/libabckit/tests/ut/metadata_core/inspect_api/enumerators/enumerators_test.cpp b/libabckit/tests/ut/metadata_core/inspect_api/enumerators/enumerators_test.cpp index 779b20b2e9e0de40c00daa721471a9feee59c781..f854bb5c2076292894102967bc93d1c3fd1288c4 100644 --- a/libabckit/tests/ut/metadata_core/inspect_api/enumerators/enumerators_test.cpp +++ b/libabckit/tests/ut/metadata_core/inspect_api/enumerators/enumerators_test.cpp @@ -365,7 +365,7 @@ TEST_F(LibAbcKitInspectApiEnumeratorsTest, StaticClassEnumerateAnonymousFunction { TestStructType testStruct; testStruct.nameModuleToSearch = "enumerators_static"; - testStruct.namesOfAnonFuncs = std::vector {"lambda$invoke$0:void;", "lambda$invoke$1:void;"}; + testStruct.namesOfAnonFuncs = std::vector {"lambda_invoke-0:void;", "lambda_invoke-1:void;"}; EnumerateAnonymousFunctions(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/enumerators/enumerators_static.abc", testStruct); diff --git a/libabckit/tests/ut/metadata_core/inspect_api/interfaces/interfaces_static_test.cpp b/libabckit/tests/ut/metadata_core/inspect_api/interfaces/interfaces_static_test.cpp index a1a20b5388c79f0ae205da9df5adb41646864ce1..5ac0962085857c3f7491a064647e2ffbd1c8467c 100644 --- a/libabckit/tests/ut/metadata_core/inspect_api/interfaces/interfaces_static_test.cpp +++ b/libabckit/tests/ut/metadata_core/inspect_api/interfaces/interfaces_static_test.cpp @@ -57,8 +57,8 @@ TEST_F(LibAbcKitInspectApiInterfacesTest, InterfaceGetAllMethodsStatic) } std::vector actualMethodNames = { - "fieldA:interfaces_static.InterfaceA;std.core.String;", "fieldB:interfaces_static.InterfaceA;f64;", - "fieldA:interfaces_static.InterfaceA;std.core.String;void;", "bar:interfaces_static.InterfaceA;void;"}; + "%%get-fieldA:interfaces_static.InterfaceA;std.core.String;", "%%get-fieldB:interfaces_static.InterfaceA;f64;", + "%%set-fieldA:interfaces_static.InterfaceA;std.core.String;void;", "bar:interfaces_static.InterfaceA;void;"}; sort(methodNames.begin(), methodNames.end()); ASSERT_EQ(methodNames, actualMethodNames); @@ -85,4 +85,4 @@ TEST_F(LibAbcKitInspectApiInterfacesTest, InterfaceGetFieldsStatic) ASSERT_EQ(fieldNames, actualFieldNames); } -} // namespace libabckit::test \ No newline at end of file +} // namespace libabckit::test diff --git a/libabckit/tests/ut/metadata_core/inspect_api/methods/methods_test.cpp b/libabckit/tests/ut/metadata_core/inspect_api/methods/methods_test.cpp index 4895432141a8901b5934da7c10a1921b3307f461..5d6f9b7640dc455bbbe8212cf829aa10a9403809 100644 --- a/libabckit/tests/ut/metadata_core/inspect_api/methods/methods_test.cpp +++ b/libabckit/tests/ut/metadata_core/inspect_api/methods/methods_test.cpp @@ -53,26 +53,33 @@ TEST_F(LibAbcKitInspectApiMethodsTest, StaticMethodGetName) AbckitFile *file = nullptr; helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/methods/methods_static.abc", &file); + // "m0F1:void;", + // "%%async-m0F2:std.core.Object;", + // "m0F2:std.core.Promise;", + // "m0N0F0:void;", + // "m0N0F1:void;", + // "%%async-m0N0F2:std.core.Object;", + std::set names = { "main:void;", "m0F0:void;", - "m0F2$asyncimpl:std.core.Object;", + "%%async-m0F2:std.core.Object;", "m0F2:std.core.Promise;", "m0N0F0:void;", - "m0N0F2$asyncimpl:std.core.Object;", + "%%async-m0N0F2:std.core.Object;", "m0N0F2:std.core.Promise;", "m0N0N0F0:void;", "_cctor_:void;", - "lambda$invoke$0:void;", - "lambda$invoke$1:void;", + "lambda_invoke-0:void;", + "lambda_invoke-1:void;", "M0C0F0:methods_static.M0C0;void;", "M0C0F1:void;", - "M0C0F2$asyncimpl:methods_static.M0C0;std.core.Object;", + "%%async-M0C0F2:methods_static.M0C0;std.core.Object;", "M0C0F2:methods_static.M0C0;std.core.Promise;", "_ctor_:methods_static.M0C0;void;", "M0N0C0F0:methods_static.M0N0C0;void;", "M0N0C0F1:void;", - "M0N0C0F2$asyncimpl:methods_static.M0N0C0;std.core.Object;", + "%%async-M0N0C0F2:methods_static.M0N0C0;std.core.Object;", "M0N0C0F2:methods_static.M0N0C0;std.core.Promise;", "_ctor_:methods_static.M0N0C0;void;", }; @@ -292,15 +299,15 @@ TEST_F(LibAbcKitInspectApiMethodsTest, StaticFunctionIsStatic) "M0N0C0F1:void;", "M0C0F1:void;", "m0F0:void;", - "m0F2$asyncimpl:std.core.Object;", + "%%async-m0F2:std.core.Object;", "m0F2:std.core.Promise;", "m0N0F0:void;", - "m0N0F2$asyncimpl:std.core.Object;", + "%%async-m0N0F2:std.core.Object;", "m0N0F2:std.core.Promise;", "m0N0N0F0:void;", "_cctor_:void;", - "lambda$invoke$0:void;", - "lambda$invoke$1:void;", + "lambda_invoke-0:void;", + "lambda_invoke-1:void;", }; helpers::EnumerateAllMethods(file, [&staticMethods](AbckitCoreFunction *method) { @@ -356,8 +363,8 @@ TEST_F(LibAbcKitInspectApiMethodsTest, StaticFunctionIsAnonymous) helpers::AssertOpenAbc(ABCKIT_ABC_DIR "ut/metadata_core/inspect_api/methods/methods_static.abc", &file); std::set anonymousMethods = { - "lambda$invoke$0:void;", - "lambda$invoke$1:void;", + "lambda_invoke-0:void;", + "lambda_invoke-1:void;", }; helpers::EnumerateAllMethods(file, [&anonymousMethods](AbckitCoreFunction *method) { @@ -481,23 +488,23 @@ TEST_F(LibAbcKitInspectApiMethodsTest, StaticFunctionGetParentClass) std::unordered_map methodClasses = { {"main:void;", ""}, {"m0F0:void;", ""}, - {"m0F2$asyncimpl:std.core.Object;", ""}, + {"%%async-m0F2:std.core.Object;", ""}, {"m0F2:std.core.Promise;", ""}, {"m0N0F0:void;", ""}, - {"m0N0F2$asyncimpl:std.core.Object;", ""}, + {"%%async-m0N0F2:std.core.Object;", ""}, {"m0N0F2:std.core.Promise;", ""}, {"m0N0N0F0:void;", ""}, {"_cctor_:void;", ""}, - {"lambda$invoke$0:void;", ""}, - {"lambda$invoke$1:void;", ""}, + {"lambda_invoke-0:void;", ""}, + {"lambda_invoke-1:void;", ""}, {"M0C0F0:methods_static.M0C0;void;", "M0C0"}, {"M0C0F1:void;", "M0C0"}, - {"M0C0F2$asyncimpl:methods_static.M0C0;std.core.Object;", "M0C0"}, + {"%%async-M0C0F2:methods_static.M0C0;std.core.Object;", "M0C0"}, {"M0C0F2:methods_static.M0C0;std.core.Promise;", "M0C0"}, {"_ctor_:methods_static.M0C0;void;", "M0C0"}, {"M0N0C0F0:methods_static.M0N0C0;void;", "M0N0C0"}, {"M0N0C0F1:void;", "M0N0C0"}, - {"M0N0C0F2$asyncimpl:methods_static.M0N0C0;std.core.Object;", "M0N0C0"}, + {"%%async-M0N0C0F2:methods_static.M0N0C0;std.core.Object;", "M0N0C0"}, {"M0N0C0F2:methods_static.M0N0C0;std.core.Promise;", "M0N0C0"}, {"_ctor_:methods_static.M0N0C0;void;", "M0N0C0"}, }; diff --git a/static_core/abc2program/tests/abc2program_test.cpp b/static_core/abc2program/tests/abc2program_test.cpp index 0cf3354b53aa9cb2cc4c2a7cfe5f4dcd41f8f034..37f82c398a26309cddd777fc16080d89e9238e7e 100644 --- a/static_core/abc2program/tests/abc2program_test.cpp +++ b/static_core/abc2program/tests/abc2program_test.cpp @@ -214,8 +214,8 @@ TEST_F(Abc2ProgramFunctionsTest, RecordTable) const std::array expectedRecordNames = { "Functions.ETSGLOBAL"s, "Functions.Cls"s, - "Functions.LambdaObject-ETSGLOBAL$lambda$invoke$0"s, - "Functions.LambdaObject-ETSGLOBAL$lambda$invoke$1"s, + "Functions.%%lambda-lambda_invoke-0"s, + "Functions.%%lambda-lambda_invoke-1"s, }; panda_file::SourceLang expectedLang = panda_file::SourceLang::ETS; std::vector recordNames; @@ -229,7 +229,7 @@ TEST_F(Abc2ProgramFunctionsTest, RecordTable) TEST_F(Abc2ProgramFunctionsTest, Functions) { - const std::string prefix = "Functions.LambdaObject-ETSGLOBAL$lambda$invoke"; + const std::string prefix = "Functions.%%lambda-lambda_invoke"; const std::set expectedFunctions = { "Functions.Cls._ctor_:Functions.Cls;void;", "Functions.Cls.func_f:Functions.Cls;i32;i32;", @@ -239,15 +239,15 @@ TEST_F(Abc2ProgramFunctionsTest, Functions) "Functions.ETSGLOBAL._cctor_:void;", "Functions.ETSGLOBAL.bar:f64;std.core.String;", "Functions.ETSGLOBAL.foo:std.core.String;std.core.String;", - "Functions.ETSGLOBAL.lambda$invoke$0:std.core.String;std.core.String;", - "Functions.ETSGLOBAL.lambda$invoke$1:std.core.String;std.core.String;", + "Functions.ETSGLOBAL.lambda_invoke-0:std.core.String;std.core.String;", + "Functions.ETSGLOBAL.lambda_invoke-1:std.core.String;std.core.String;", "Functions.ETSGLOBAL.main:void;", - prefix + "$0.$_invoke:Functions.LambdaObject-ETSGLOBAL$lambda$invoke$0;std.core.String;std.core.String;", - prefix + "$0._ctor_:Functions.LambdaObject-ETSGLOBAL$lambda$invoke$0;void;", - prefix + "$0.invoke1:Functions.LambdaObject-ETSGLOBAL$lambda$invoke$0;std.core.Object;std.core.Object;", - prefix + "$1.$_invoke:Functions.LambdaObject-ETSGLOBAL$lambda$invoke$1;std.core.String;std.core.String;", - prefix + "$1._ctor_:Functions.LambdaObject-ETSGLOBAL$lambda$invoke$1;void;", - prefix + "$1.invoke1:Functions.LambdaObject-ETSGLOBAL$lambda$invoke$1;std.core.Object;std.core.Object;", + prefix + "-0.$_invoke:Functions.%%lambda-lambda_invoke-0;std.core.String;std.core.String;", + prefix + "-0._ctor_:Functions.%%lambda-lambda_invoke-0;void;", + prefix + "-0.invoke1:Functions.%%lambda-lambda_invoke-0;std.core.Object;std.core.Object;", + prefix + "-1.$_invoke:Functions.%%lambda-lambda_invoke-1;std.core.String;std.core.String;", + prefix + "-1._ctor_:Functions.%%lambda-lambda_invoke-1;void;", + prefix + "-1.invoke1:Functions.%%lambda-lambda_invoke-1;std.core.Object;std.core.Object;", "std.core.Lambda1._ctor_:std.core.Lambda1;void;", "std.core.Object._ctor_:std.core.Object;void;", "std.core.Runtime.failedTypeCastException:std.core.Object;std.core.String;u1;std.core.ClassCastError;", @@ -298,7 +298,7 @@ TEST_F(Abc2ProgramLiteralArrayTest, LiteralArray) TEST_F(Abc2ProgramTypeTest, Type) { const std::set expectedType = { - "Type.Cls$partial._ctor_ Type.Cls$partial void", + "Type.%%partial-Cls._ctor_ Type.%%partial-Cls void", "Type.Cls._ctor_ Type.Cls void", "Type.Cls.add_inner Type.Cls i32 i64 f32 f64 std.core.String", "Type.ETSGLOBAL._$init$_ void", diff --git a/static_core/assembler/assembly-emitter.cpp b/static_core/assembler/assembly-emitter.cpp index e59a3fcbc585e7c7b7a38ca1ca20af9517c9196c..a7532ae94409cf2610ede8c8eff4f2dc6dd5e5d6 100644 --- a/static_core/assembler/assembly-emitter.cpp +++ b/static_core/assembler/assembly-emitter.cpp @@ -991,8 +991,8 @@ static std::vector> SortByLas literalarrayTable.end()); std::sort(items.begin(), items.end(), [](const auto &a, const auto &b) { - size_t posA = a.first.rfind('$'); - size_t posB = b.first.rfind('$'); + size_t posA = a.first.rfind('-'); + size_t posB = b.first.rfind('-'); std::string lastNumberA = (posA != std::string::npos) ? a.first.substr(posA + 1) : ""; std::string lastNumberB = (posB != std::string::npos) ? b.first.substr(posB + 1) : ""; diff --git a/static_core/assembler/assembly-parser.h b/static_core/assembler/assembly-parser.h index cae6ecace1c69858fffd7ab1555cfbea4cfbeaeb..ad9b446ba56ef64ce9b3f9879f7cd43f933bb3ca 100644 --- a/static_core/assembler/assembly-parser.h +++ b/static_core/assembler/assembly-parser.h @@ -81,7 +81,7 @@ public: } inline bool IsUnderscoreOrDollarOrHyphen(char c) { - return c == '_' || c == '$' || c == '-'; + return c == '_' || c == '$' || c == '-' || c == '%'; } inline bool IsAlphaNumeric(char c) diff --git a/static_core/plugins/ets/runtime/ani/ani_interaction_api.cpp b/static_core/plugins/ets/runtime/ani/ani_interaction_api.cpp index 8d6b60944339de1d4bdfe8acbaed31bdf64aebbf..1a38db4bb755171d5ecc3a7ebb266f57402dc1ae 100644 --- a/static_core/plugins/ets/runtime/ani/ani_interaction_api.cpp +++ b/static_core/plugins/ets/runtime/ani/ani_interaction_api.cpp @@ -2339,7 +2339,7 @@ static ani_status DoGetField(ScopedManagedCodeFix &s, ani_class cls, const char EtsField *foundField = klass->GetFieldIDByName(name, nullptr); if (UNLIKELY(foundField == nullptr)) { // NOTE: Need to look for class property implemented from interface - auto interfaceFieldName = PandaString("") + name; + auto interfaceFieldName = PandaString("%%property-") + name; foundField = klass->GetFieldIDByName(interfaceFieldName.c_str(), nullptr); } return foundField; @@ -2827,7 +2827,7 @@ NO_UB_SANITIZE static ani_status Class_SetStaticFieldByName_Ref(ani_env *env, an // NOLINTNEXTLINE(readability-identifier-naming) ani_status Class_FindSetter(ani_env *env, ani_class cls, const char *name, ani_method *result) { - PandaString setterName(""); + PandaString setterName("%%set-"); setterName += name; return Class_FindMethod(env, cls, setterName.c_str(), nullptr, result); } @@ -2835,7 +2835,7 @@ ani_status Class_FindSetter(ani_env *env, ani_class cls, const char *name, ani_m // NOLINTNEXTLINE(readability-identifier-naming) ani_status Class_FindGetter(ani_env *env, ani_class cls, const char *name, ani_method *result) { - PandaString getterName(""); + PandaString getterName("%%get-"); getterName += name; return Class_FindMethod(env, cls, getterName.c_str(), nullptr, result); } diff --git a/static_core/plugins/ets/runtime/ani/ani_mangle.cpp b/static_core/plugins/ets/runtime/ani/ani_mangle.cpp index acf6fb6f9d4894581b4cbc9c8f7c1e94e893430c..d80220dbeae8711c5e1e99da3c18a4985c128ed8 100644 --- a/static_core/plugins/ets/runtime/ani/ani_mangle.cpp +++ b/static_core/plugins/ets/runtime/ani/ani_mangle.cpp @@ -119,9 +119,10 @@ static size_t ParseBody(char type, const std::string_view data, PandaStringStrea } PandaString oldName(data.substr(1, pos - 1)); std::replace(oldName.begin(), oldName.end(), '.', '/'); + size_t lastPos = oldName.find_last_of('/') + 1; ss << 'L'; - ss << oldName; - ss << (type == 'P' ? "$partial;" : ";"); + ss << (type == 'P' ? oldName.substr(0, lastPos) + "%%partial-" + oldName.substr(lastPos) : oldName); + ss << ";"; return pos + 1; } return std::string_view::npos; diff --git a/static_core/plugins/ets/runtime/ets_libbase_runtime.yaml b/static_core/plugins/ets/runtime/ets_libbase_runtime.yaml index 8f6bfc03546a13d1f81847455a848a87522eea9b..1c22b0b005cedc0e71cd7f1a607f9db57fba546c 100644 --- a/static_core/plugins/ets/runtime/ets_libbase_runtime.yaml +++ b/static_core/plugins/ets/runtime/ets_libbase_runtime.yaml @@ -726,7 +726,7 @@ intrinsics: - name: StdCoreStringLength space: ets class_name: std.core.String - method_name: length + method_name: \u0025\u0025get-length static: false signature: ret: f64 diff --git a/static_core/plugins/ets/runtime/ets_stubs-inl.h b/static_core/plugins/ets/runtime/ets_stubs-inl.h index 9214eff0b94b295cb6b50c9919ad13073df7c070..843819332ab2a009c4b2e7ce59f53071f40b9ca8 100644 --- a/static_core/plugins/ets/runtime/ets_stubs-inl.h +++ b/static_core/plugins/ets/runtime/ets_stubs-inl.h @@ -24,8 +24,8 @@ namespace ark::ets { -static constexpr const char *GETTER_PREFIX = ""; -static constexpr const char *SETTER_PREFIX = ""; +static constexpr const char *GETTER_PREFIX = "%%get-"; +static constexpr const char *SETTER_PREFIX = "%%set-"; ALWAYS_INLINE inline bool EtsReferenceNullish(EtsCoroutine *coro, EtsObject *ref) { diff --git a/static_core/plugins/ets/runtime/ets_vm.cpp b/static_core/plugins/ets/runtime/ets_vm.cpp index 1aa990dc6f9d515b151193202aa7772ed0e863ad..c7d4cf1c9a51d1879bbdfdd26bd01e03dffc9f27 100644 --- a/static_core/plugins/ets/runtime/ets_vm.cpp +++ b/static_core/plugins/ets/runtime/ets_vm.cpp @@ -631,7 +631,8 @@ static void PrintExceptionInfo(EtsCoroutine *coro, EtsHandle exceptio << performCall(cls->GetInstanceMethod("toString", ":Lstd/core/String;")).value_or("invoke toString failed"); if (PlatformTypes(coro)->escompatError->IsAssignableFrom(cls)) { ss << std::endl - << performCall(cls->GetInstanceMethod("stack", ":Lstd/core/String;")).value_or("exception dump failed"); + << performCall(cls->GetInstanceMethod("%%get-stack", ":Lstd/core/String;")) + .value_or("exception dump failed"); } } diff --git a/static_core/plugins/ets/runtime/interop_js/call/call_js.cpp b/static_core/plugins/ets/runtime/interop_js/call/call_js.cpp index ab27955e1431ba8e140eae5d2d8b3cf4f65d8cdc..1f520ea3392786f7fa24ce51eb87a4e9bd7dc3df 100644 --- a/static_core/plugins/ets/runtime/interop_js/call/call_js.cpp +++ b/static_core/plugins/ets/runtime/interop_js/call/call_js.cpp @@ -236,16 +236,20 @@ napi_value CallJSHandler::HandleSpecialMethod(Span jsargs) NAPI_CHECK_FATAL(napi_create_string_utf8(env, content.c_str(), NAPI_AUTO_LENGTH, &handlerResult)); NAPI_CHECK_FATAL(napi_set_property(env, jsThis_, handlerResult, jsargs[0])); napi_get_undefined(env, &handlerResult); - } else if (std::strncmp(methodName, GET_INDEX_METHOD, SETTER_GETTER_PREFIX_LENGTH) == 0) { + } + } + + if (methodName != nullptr && std::strlen(methodName) >= SET_GET_INDEX_METHOD_PREFIX_LENGTH) { + if (std::strncmp(methodName, GET_INDEX_METHOD, SET_GET_INDEX_METHOD_PREFIX_LENGTH) == 0) { int32_t idx; NAPI_CHECK_FATAL(napi_get_value_int32(env, jsargs[0], &idx)); NAPI_CHECK_FATAL(napi_get_element(env, jsThis_, idx, &handlerResult)); - } else if (std::strncmp(methodName, SET_INDEX_METHOD, SETTER_GETTER_PREFIX_LENGTH) == 0) { + } else if (std::strncmp(methodName, SET_INDEX_METHOD, SET_GET_INDEX_METHOD_PREFIX_LENGTH) == 0) { int32_t idx; NAPI_CHECK_FATAL(napi_get_value_int32(env, jsargs[0], &idx)); NAPI_CHECK_FATAL(napi_set_element(env, jsThis_, idx, jsargs[1])); napi_get_undefined(env, &handlerResult); - } else if (std::strncmp(methodName, ITERATOR_METHOD, SETTER_GETTER_PREFIX_LENGTH) == 0) { + } else if (std::strncmp(methodName, ITERATOR_METHOD, SET_GET_INDEX_METHOD_PREFIX_LENGTH) == 0) { napi_value global; NAPI_CHECK_FATAL(napi_get_global(env, &global)); napi_value symbol; diff --git a/static_core/plugins/ets/runtime/libani_helpers/ani_signature_builder.cpp b/static_core/plugins/ets/runtime/libani_helpers/ani_signature_builder.cpp index 53be22d94b7e8d5f386316006b41d00ab8d5fec3..aae6045a2769da8e9fb14c72e9a577ab5fdb9469 100644 --- a/static_core/plugins/ets/runtime/libani_helpers/ani_signature_builder.cpp +++ b/static_core/plugins/ets/runtime/libani_helpers/ani_signature_builder.cpp @@ -282,13 +282,20 @@ Type Builder::BuildEnum(std::string_view fullName) Type Builder::BuildPartial(std::initializer_list fullName) { std::string origName = JoinParts(fullName); - return CreateType("L" + ConvertFullname(origName) + "$partial;"); + std::string convertedName = ConvertFullname(origName); + int lastPos = convertedName.find_last_of('/') + 1; + std::string newName = convertedName.substr(0, lastPos) + "%%partial-" + convertedName.substr(lastPos); + + return CreateType("L" + newName + ";"); } Type Builder::BuildPartial(std::string_view fullName) { std::string origName = std::string(fullName); - return CreateType("L" + ConvertFullname(origName) + "$partial;"); + std::string convertedName = ConvertFullname(origName); + int lastPos = convertedName.find_last_of('/') + 1; + std::string newName = convertedName.substr(0, lastPos) + "%%partial-" + convertedName.substr(lastPos); + return CreateType("L" + newName + ";"); } Type Builder::BuildRequired(std::initializer_list fullName) @@ -350,12 +357,12 @@ std::string Builder::BuildConstructorName() std::string Builder::BuildSetterName(std::string_view name) { - return "" + std::string(name); + return "%%set-" + std::string(name); } std::string Builder::BuildGetterName(std::string_view name) { - return "" + std::string(name); + return "%%get-" + std::string(name); } // NOLINTBEGIN(misc-non-private-member-variables-in-classes) diff --git a/static_core/plugins/ets/runtime/libani_helpers/interop_js/hybridgref_ani.cpp b/static_core/plugins/ets/runtime/libani_helpers/interop_js/hybridgref_ani.cpp index 9168c6e13f655fe45f2f1e9afbfea5b21ef18614..ae80892ecc02cf10adf84cb8a11739a87a1b8eed 100644 --- a/static_core/plugins/ets/runtime/libani_helpers/interop_js/hybridgref_ani.cpp +++ b/static_core/plugins/ets/runtime/libani_helpers/interop_js/hybridgref_ani.cpp @@ -93,7 +93,7 @@ static bool InitializeGlobal(ani_env *env) "dX{C{std.core.Null}C{std.core.Object}}:", &g_methodSetPropertyByIndex); ASSERT(status == ANI_OK); status = - env->Class_FindStaticMethod(esobjectClass, "Undefined", ":C{std.interop.ESValue}", &g_methodGetUndefined); + env->Class_FindStaticMethod(esobjectClass, "%%get-Undefined", ":C{std.interop.ESValue}", &g_methodGetUndefined); ASSERT(status == ANI_OK); status = env->Class_FindMethod(esobjectClass, "isUndefined", ":z", &g_methodIsUndefined); ASSERT(status == ANI_OK); diff --git a/static_core/plugins/ets/runtime/types/ets_type.h b/static_core/plugins/ets/runtime/types/ets_type.h index a03c52946d764a6e9d7b45864a51920f8b230d6f..556d8e2d098bc7e9a3852e8998455029ece49a8b 100644 --- a/static_core/plugins/ets/runtime/types/ets_type.h +++ b/static_core/plugins/ets/runtime/types/ets_type.h @@ -32,14 +32,18 @@ static constexpr const char *TYPE_API_UNDEFINED_TYPE_DESC = "__TYPE_API_UNDEFINE static constexpr const char *INVOKE_METHOD_NAME = "$_invoke"; static constexpr const char *CONSTRUCTOR_NAME = "constructor"; static constexpr char TYPE_DESC_DELIMITER = ';'; -static constexpr const char *GETTER_BEGIN = ""; -static constexpr const char *SETTER_BEGIN = ""; -static constexpr const char *PROPERTY = ""; +// ------- +static constexpr const char *PROPERTY = "%%property-"; +static constexpr const uint8_t PROPERTY_PREFIX_LENGTH = 11; +// ------- +static constexpr const char *GETTER_BEGIN = "%%get-"; +static constexpr const char *SETTER_BEGIN = "%%set-"; +static constexpr const uint8_t SETTER_GETTER_PREFIX_LENGTH = 6; +// ------- static constexpr const char *ITERATOR_METHOD = "$_iterator"; static constexpr const char *GET_INDEX_METHOD = "$_get"; static constexpr const char *SET_INDEX_METHOD = "$_set"; -static constexpr const uint8_t SETTER_GETTER_PREFIX_LENGTH = 5; -static constexpr const uint8_t PROPERTY_PREFIX_LENGTH = 10; +static constexpr const uint8_t SET_GET_INDEX_METHOD_PREFIX_LENGTH = 5; static constexpr const char *STD_CORE_FUNCTION_PREFIX = "std.core.Function"; static constexpr const char *STD_CORE_FUNCTION_UNSAFECALL_METHOD = "unsafeCall"; diff --git a/static_core/plugins/ets/stdlib/escompat/Reflect.ets b/static_core/plugins/ets/stdlib/escompat/Reflect.ets index 56b41afb46508fee38b60553dec635bd29a8d711..93014f7bdc79f17e6bb9c00b52478e5c49412fb1 100644 --- a/static_core/plugins/ets/stdlib/escompat/Reflect.ets +++ b/static_core/plugins/ets/stdlib/escompat/Reflect.ets @@ -17,8 +17,8 @@ package escompat export class Reflect { - private static readonly GETTER_PREFIX = "" - private static readonly SETTER_PREFIX = "" + private static readonly GETTER_PREFIX = "%%get-" + private static readonly SETTER_PREFIX = "%%set-" private static native isLiteralInitializedInterfaceImpl(target: Object): boolean private constructor () {} diff --git a/static_core/plugins/ets/stdlib/std/core/Proxy.ets b/static_core/plugins/ets/stdlib/std/core/Proxy.ets index afa483ca29bdd2871d894030b3086194433dd6bc..277a57cd3a370771a0bf36b48572345dc4501f9a 100644 --- a/static_core/plugins/ets/stdlib/std/core/Proxy.ets +++ b/static_core/plugins/ets/stdlib/std/core/Proxy.ets @@ -29,10 +29,10 @@ export final class Proxy { private static readonly CTOR_METHOD_NAME = "constructor" - private static readonly GETTER_METHOD_PREFIX = "" + private static readonly GETTER_METHOD_PREFIX = "%%get-" private static readonly GETTER_METHOD_PREFIX_LENGTH = Proxy.GETTER_METHOD_PREFIX.getLength() - private static readonly SETTER_METHOD_PREFIX = "" + private static readonly SETTER_METHOD_PREFIX = "%%set-" private static readonly SETTER_METHOD_PREFIX_LENGTH = Proxy.SETTER_METHOD_PREFIX.getLength() static tryGetTarget(obj: Object): NullishType { diff --git a/static_core/plugins/ets/tests/ani/tests/mangling/mangle_signature_test.cpp b/static_core/plugins/ets/tests/ani/tests/mangling/mangle_signature_test.cpp index 41709d221a32fb84839b0f45d1665097448af4f8..f979d410abcc9657b8beb3eeffc05ea6d7effc59 100644 --- a/static_core/plugins/ets/tests/ani/tests/mangling/mangle_signature_test.cpp +++ b/static_core/plugins/ets/tests/ani/tests/mangling/mangle_signature_test.cpp @@ -197,9 +197,9 @@ TEST_F(MangleSignatureTest, FormatReferences_NewToOld) // Check 'Partial' desc = Mangle::ConvertSignature("P{a.b.c.X}:"); - EXPECT_STREQ(desc.c_str(), "La/b/c/X$partial;:V"); + EXPECT_STREQ(desc.c_str(), "La/b/c/%%partial-X;:V"); desc = Mangle::ConvertSignature(":P{a.b.c.X}"); - EXPECT_STREQ(desc.c_str(), ":La/b/c/X$partial;"); + EXPECT_STREQ(desc.c_str(), ":La/b/c/%%partial-X;"); } TEST_F(MangleSignatureTest, FormatPrimitivesFixedArray_NewToOld) @@ -329,15 +329,15 @@ TEST_F(MangleSignatureTest, FormatReferencesFixedArray_NewToOld) PandaString desc; desc = Mangle::ConvertSignature("A{C{std.core.String}}dA{A{E{a.b.Color}}}:A{P{a.b.X}}"); - EXPECT_STREQ(desc.c_str(), "[Lstd/core/String;D[[La/b/Color;:[La/b/X$partial;"); + EXPECT_STREQ(desc.c_str(), "[Lstd/core/String;D[[La/b/Color;:[La/b/%%partial-X;"); } TEST_F(MangleSignatureTest, FormatReferencesFixedArray_OldToOld) { PandaString desc; - desc = Mangle::ConvertSignature("[Lstd/core/String;D[[La/b/Color;:[La/b/X$partial;"); - EXPECT_STREQ(desc.c_str(), "[Lstd/core/String;D[[La/b/Color;:[La/b/X$partial;"); + desc = Mangle::ConvertSignature("[Lstd/core/String;D[[La/b/Color;:[La/b/%%partial-X;"); + EXPECT_STREQ(desc.c_str(), "[Lstd/core/String;D[[La/b/Color;:[La/b/%%partial-X;"); } TEST_F(MangleSignatureTest, FormatUnion_NewToRuntime) @@ -354,7 +354,7 @@ TEST_F(MangleSignatureTest, FormatUnion_NewToRuntime) // type F = (u: number | string | FixedArray) => (msig.E | msig.B) | Partial desc = Mangle::ConvertSignature(FOO_UNION_SIGNATURE); - EXPECT_STREQ(desc.c_str(), "{ULstd/core/Double;Lstd/core/String;[C}:{ULmsig/A$partial;Lmsig/B;Lmsig/E;}"); + EXPECT_STREQ(desc.c_str(), "{ULstd/core/Double;Lstd/core/String;[C}:{ULmsig/%%partial-A;Lmsig/B;Lmsig/E;}"); // type F = (u: T | V | A | number): FixedArray | null | V desc = Mangle::ConvertSignature(FOO1_UNION_SIGNATURE); @@ -429,7 +429,7 @@ TEST_F(MangleSignatureTest, Module_FindFunction_OldFormat) // Check references EXPECT_EQ(env_->Module_FindFunction(m, "foo", "DLmsig/A;Lmsig/B;:Lmsig/E;", &fn), ANI_OK); - EXPECT_EQ(env_->Module_FindFunction(m, "foo", "Lmsig/A$partial;Lescompat/Array;:V", &fn), ANI_OK); + EXPECT_EQ(env_->Module_FindFunction(m, "foo", "Lmsig/%%partial-A;Lescompat/Array;:V", &fn), ANI_OK); } TEST_F(MangleSignatureTest, Namespace_FindFunction) @@ -479,7 +479,7 @@ TEST_F(MangleSignatureTest, Namespace_FindFunction_OldFormat) // Check references EXPECT_EQ(env_->Namespace_FindFunction(ns, "foo", "DLmsig/rls/A;Lmsig/rls/B;:Lmsig/rls/E;", &fn), ANI_OK); - EXPECT_EQ(env_->Namespace_FindFunction(ns, "foo", "Lmsig/A$partial;Lescompat/Array;:V", &fn), ANI_OK); + EXPECT_EQ(env_->Namespace_FindFunction(ns, "foo", "Lmsig/%%partial-A;Lescompat/Array;:V", &fn), ANI_OK); } TEST_F(MangleSignatureTest, Class_FindMethod) @@ -529,7 +529,7 @@ TEST_F(MangleSignatureTest, Class_FindMethod_OldFormat) // Check references EXPECT_EQ(env_->Class_FindMethod(cls, "foo", "DLmsig/A;Lmsig/B;:Lmsig/E;", &method), ANI_OK); - EXPECT_EQ(env_->Class_FindMethod(cls, "foo", "Lmsig/A$partial;Lescompat/Array;:V", &method), ANI_OK); + EXPECT_EQ(env_->Class_FindMethod(cls, "foo", "Lmsig/%%partial-A;Lescompat/Array;:V", &method), ANI_OK); } TEST_F(MangleSignatureTest, Class_FindStaticMethod) @@ -579,7 +579,7 @@ TEST_F(MangleSignatureTest, Class_FindStaticMethod_OldFormat) // Check references EXPECT_EQ(env_->Class_FindStaticMethod(cls, "foo", "DLmsig/A;Lmsig/B;:Lmsig/E;", &method), ANI_OK); - EXPECT_EQ(env_->Class_FindStaticMethod(cls, "foo", "Lmsig/A$partial;Lescompat/Array;:V", &method), ANI_OK); + EXPECT_EQ(env_->Class_FindStaticMethod(cls, "foo", "Lmsig/%%partial-A;Lescompat/Array;:V", &method), ANI_OK); } TEST_F(MangleSignatureTest, Class_FindIndexableGetter) diff --git a/static_core/plugins/ets/tests/checked/ets_static_lookup.pa b/static_core/plugins/ets/tests/checked/ets_static_lookup.pa index d4335deaf2cd1dc6f76e2bab07a7792cb3cc84fc..825eb7c17fc0976337b636f37d7266785ad2cb13 100644 --- a/static_core/plugins/ets/tests/checked/ets_static_lookup.pa +++ b/static_core/plugins/ets/tests/checked/ets_static_lookup.pa @@ -81,19 +81,19 @@ i32 foo } -.function i32 A.baz(A a0) { +.function i32 A.%%get-baz(A a0) { ldai 42 return } -.function void C.bar(C a0, i32 a1) { +.function void C.%%set-bar(C a0, i32 a1) { mov.obj v0, a0 lda a1 stobj v0, C.foo return.void } -.record $NamedAccessMeta-i32 { +.record %%union_prop-i32 { i32 bar i32 baz } @@ -102,11 +102,11 @@ newobj v1, B ldai 6 stobj v1, B.baz - ets.ldobj.name v1, $NamedAccessMeta-i32.baz + ets.ldobj.name v1, %%union_prop-i32.baz movi v2, 6 jne v2, error1 ldai 7 - ets.stobj.name v1, $NamedAccessMeta-i32.bar + ets.stobj.name v1, %%union_prop-i32.bar ldobj v1, B.bar movi v2, 7 jne v2, error2 @@ -123,11 +123,11 @@ error2: .function i32 main1() { newobj v1, A newobj v0, C - ets.ldobj.name v1, $NamedAccessMeta-i32.baz + ets.ldobj.name v1, %%union_prop-i32.baz movi v2, 42 jne v2, error1 ldai 7 - ets.stobj.name v0, $NamedAccessMeta-i32.bar + ets.stobj.name v0, %%union_prop-i32.bar ldobj v0, C.foo movi v2, 7 jne v2, error2 diff --git a/static_core/plugins/ets/tests/checked/ets_static_lookup_16bit.pa b/static_core/plugins/ets/tests/checked/ets_static_lookup_16bit.pa index 80706fbb6d505ad1d90d2cf4c785483626791c6a..bcf1e82e5ddf2e47cfb53ccb5d1eb1d9a7e2d845 100644 --- a/static_core/plugins/ets/tests/checked/ets_static_lookup_16bit.pa +++ b/static_core/plugins/ets/tests/checked/ets_static_lookup_16bit.pa @@ -1,4 +1,4 @@ -# Copyright (c) 2024 Huawei Device Co., Ltd. +# Copyright (c) 2024-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -65,32 +65,32 @@ i16 foo } -.record $NamedAccessMeta-i16 { +.record %%union_prop-i16 { i16 bar i16 baz i16 foo } .function i32 load_bar__noinline__(A a0) { - ets.ldobj.name a0, $NamedAccessMeta-i16.bar + ets.ldobj.name a0, %%union_prop-i16.bar return } .function i32 load_baz__noinline__(A a0) { - ets.ldobj.name a0, $NamedAccessMeta-i16.baz + ets.ldobj.name a0, %%union_prop-i16.baz return } .function i32 load_foo__noinline__(A a0) { - ets.ldobj.name a0, $NamedAccessMeta-i16.foo + ets.ldobj.name a0, %%union_prop-i16.foo return } .function i32 test_store() { newobj v0, A ldai -1 - ets.stobj.name v0, $NamedAccessMeta-i16.bar - ets.stobj.name v0, $NamedAccessMeta-i16.foo + ets.stobj.name v0, %%union_prop-i16.bar + ets.stobj.name v0, %%union_prop-i16.foo call.short load_baz__noinline__, v0 jnez error1 @@ -117,8 +117,8 @@ error3: .function i32 fill__noinline__(A a0) { ldai -1 - ets.stobj.name a0, $NamedAccessMeta-i16.bar - ets.stobj.name a0, $NamedAccessMeta-i16.foo + ets.stobj.name a0, %%union_prop-i16.bar + ets.stobj.name a0, %%union_prop-i16.foo return } @@ -126,14 +126,14 @@ error3: newobj v0, A call.short fill__noinline__, v0 - ets.ldobj.name v0, $NamedAccessMeta-i16.baz + ets.ldobj.name v0, %%union_prop-i16.baz jnez error1 movi v1, -1 - ets.ldobj.name v0, $NamedAccessMeta-i16.bar + ets.ldobj.name v0, %%union_prop-i16.bar jne v1, error2 - ets.ldobj.name v0, $NamedAccessMeta-i16.foo + ets.ldobj.name v0, %%union_prop-i16.foo jne v1, error3 ldai 0 diff --git a/static_core/plugins/ets/tests/checked/ets_static_lookup_8bit.pa b/static_core/plugins/ets/tests/checked/ets_static_lookup_8bit.pa index fedeffaa97ab378263a2877d43b38c26fee4dcf2..2d22d01903afe1457a0f4a4ece1e4543bddfb67b 100644 --- a/static_core/plugins/ets/tests/checked/ets_static_lookup_8bit.pa +++ b/static_core/plugins/ets/tests/checked/ets_static_lookup_8bit.pa @@ -1,4 +1,4 @@ -# Copyright (c) 2024 Huawei Device Co., Ltd. +# Copyright (c) 2024-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -65,32 +65,32 @@ i8 foo } -.record $NamedAccessMeta-i8 { +.record %%union_prop-i8 { i8 bar i8 baz i8 foo } .function i32 load_bar__noinline__(A a0) { - ets.ldobj.name a0, $NamedAccessMeta-i8.bar + ets.ldobj.name a0, %%union_prop-i8.bar return } .function i32 load_baz__noinline__(A a0) { - ets.ldobj.name a0, $NamedAccessMeta-i8.baz + ets.ldobj.name a0, %%union_prop-i8.baz return } .function i32 load_foo__noinline__(A a0) { - ets.ldobj.name a0, $NamedAccessMeta-i8.foo + ets.ldobj.name a0, %%union_prop-i8.foo return } .function i32 test_store() { newobj v0, A ldai -1 - ets.stobj.name v0, $NamedAccessMeta-i8.bar - ets.stobj.name v0, $NamedAccessMeta-i8.foo + ets.stobj.name v0, %%union_prop-i8.bar + ets.stobj.name v0, %%union_prop-i8.foo call.short load_baz__noinline__, v0 jnez error1 @@ -117,8 +117,8 @@ error3: .function i32 fill__noinline__(A a0) { ldai -1 - ets.stobj.name a0, $NamedAccessMeta-i8.bar - ets.stobj.name a0, $NamedAccessMeta-i8.foo + ets.stobj.name a0, %%union_prop-i8.bar + ets.stobj.name a0, %%union_prop-i8.foo return } @@ -126,14 +126,14 @@ error3: newobj v0, A call.short fill__noinline__, v0 - ets.ldobj.name v0, $NamedAccessMeta-i8.baz + ets.ldobj.name v0, %%union_prop-i8.baz jnez error1 movi v1, -1 - ets.ldobj.name v0, $NamedAccessMeta-i8.bar + ets.ldobj.name v0, %%union_prop-i8.bar jne v1, error2 - ets.ldobj.name v0, $NamedAccessMeta-i8.foo + ets.ldobj.name v0, %%union_prop-i8.foo jne v1, error3 ldai 0 diff --git a/static_core/plugins/ets/tests/checked/inlining_test/inlining_nested_lambdas.ets b/static_core/plugins/ets/tests/checked/inlining_test/inlining_nested_lambdas.ets index 7f63bb2553fe9d993d67647976da483f3b7e5442..81d4aac2427407177020bab8b467622b26a1e169 100644 --- a/static_core/plugins/ets/tests/checked/inlining_test/inlining_nested_lambdas.ets +++ b/static_core/plugins/ets/tests/checked/inlining_test/inlining_nested_lambdas.ets @@ -15,12 +15,12 @@ //! CHECKER Check inlining of nested lambda calls //! RUN force_jit: true, options: "--compiler-regex='.*test.*'", entry: "inlining_nested_lambdas.ETSGLOBAL::main" -//! EVENT /Inline,inlining_nested_lambdas.ETSGLOBAL::test,inlining_nested_lambdas.LambdaObject-ETSGLOBAL\$lambda\$invoke\$0::,.*,STATIC,SUCCESS/ -//! EVENT_NEXT /Inline,inlining_nested_lambdas.ETSGLOBAL::test,inlining_nested_lambdas.LambdaObject-ETSGLOBAL\$lambda\$invoke\$1::,.*,STATIC,SUCCESS/ -//! EVENT_NEXT /Inline,inlining_nested_lambdas.ETSGLOBAL::test,inlining_nested_lambdas.LambdaObject-ETSGLOBAL\$lambda\$invoke\$1::invoke1,.*,VIRTUAL,SUCCESS/ +//! EVENT /Inline,inlining_nested_lambdas.ETSGLOBAL::test,inlining_nested_lambdas.%%lambda-lambda_invoke-0::,.*,STATIC,SUCCESS/ +//! EVENT_NEXT /Inline,inlining_nested_lambdas.ETSGLOBAL::test,inlining_nested_lambdas.%%lambda-lambda_invoke-1::,.*,STATIC,SUCCESS/ +//! EVENT_NEXT /Inline,inlining_nested_lambdas.ETSGLOBAL::test,inlining_nested_lambdas.%%lambda-lambda_invoke-1::invoke1,.*,VIRTUAL,SUCCESS/ //! METHOD "inlining_nested_lambdas.ETSGLOBAL::test" //! PASS_AFTER "Inline" -//! INST /CallResolvedVirtual.Inlined .* inlining_nested_lambdas.LambdaObject-ETSGLOBAL\$lambda\$invoke\$1::invoke1/ +//! INST /CallResolvedVirtual.Inlined .* inlining_nested_lambdas.%%lambda-lambda_invoke-1::invoke1/ //! INST_NEXT /CallResolvedVirtual .* std.core.Function1::invoke1/ // NOTE(compiler): lambda$invoke$0::invoke1 can be also inlined (now only `F2` is inlined into `test`) @@ -28,12 +28,12 @@ //! CHECKER Check inlining of nested lambda calls (AOT) //! SKIP_IF @architecture == "arm32" //! RUN_PAOC options: "--compiler-regex='.*test.*'" -//! EVENT /Inline,inlining_nested_lambdas.ETSGLOBAL::test,inlining_nested_lambdas.LambdaObject-ETSGLOBAL\$lambda\$invoke\$0::,.*,STATIC,SUCCESS/ -//! EVENT_NEXT /Inline,inlining_nested_lambdas.ETSGLOBAL::test,inlining_nested_lambdas.LambdaObject-ETSGLOBAL\$lambda\$invoke\$1::,.*,STATIC,SUCCESS/ -//! EVENT_NEXT /Inline,inlining_nested_lambdas.ETSGLOBAL::test,inlining_nested_lambdas.LambdaObject-ETSGLOBAL\$lambda\$invoke\$1::invoke1,.*,VIRTUAL,SUCCESS/ +//! EVENT /Inline,inlining_nested_lambdas.ETSGLOBAL::test,inlining_nested_lambdas.%%lambda-lambda_invoke-0::,.*,STATIC,SUCCESS/ +//! EVENT_NEXT /Inline,inlining_nested_lambdas.ETSGLOBAL::test,inlining_nested_lambdas.%%lambda-lambda_invoke-1::,.*,STATIC,SUCCESS/ +//! EVENT_NEXT /Inline,inlining_nested_lambdas.ETSGLOBAL::test,inlining_nested_lambdas.%%lambda-lambda_invoke-1::invoke1,.*,VIRTUAL,SUCCESS/ //! METHOD "inlining_nested_lambdas.ETSGLOBAL::test" //! PASS_AFTER "Inline" -//! INST /CallResolvedVirtual.Inlined .* inlining_nested_lambdas.LambdaObject-ETSGLOBAL\$lambda\$invoke\$1::invoke1/ +//! INST /CallResolvedVirtual.Inlined .* inlining_nested_lambdas.%%lambda-lambda_invoke-1::invoke1/ //! INST_NEXT /CallResolvedVirtual .* std.core.Function1::invoke1/ //! RUN options: "", entry: "inlining_nested_lambdas.ETSGLOBAL::main" diff --git a/static_core/plugins/ets/tests/ets_func_tests/std/core/TypeMethodTest.ets b/static_core/plugins/ets/tests/ets_func_tests/std/core/TypeMethodTest.ets index 7e79334c92ac038c422f7964d7d1b49ac1ca4947..126b3597506bc2ab65e8d810ed0aa8427b486c10 100644 --- a/static_core/plugins/ets/tests/ets_func_tests/std/core/TypeMethodTest.ets +++ b/static_core/plugins/ets/tests/ets_func_tests/std/core/TypeMethodTest.ets @@ -99,8 +99,8 @@ function testMethodType(): int { let serializeMethodType = findMethodByName(pt, "serialize")!.getType() let addMethodType = findMethodByName(pt, "add")!.getType() let cType = hwt.getConstructor(0).getType() - let getterType = findMethodByName(hwt, "state")!.getType() - let setterType = findMethodByName(hwt, "state")!.getType() + let getterType = findMethodByName(hwt, "%%get-state")!.getType() + let setterType = findMethodByName(hwt, "%%set-state")!.getType() return test(serializeMethodType.getParametersNum() == 0, " 0 Parameters") + test(serializeMethodType.getResultType() == StringType.REF, " has String result type") + @@ -128,8 +128,8 @@ function testMethod() { let wt = hwt.getBaseType() let cMethod = hwt.getConstructor(0) - let getterMethod = findMethodByName(hwt, "state")! - let setterMethod = findMethodByName(hwt, "state")! + let getterMethod = findMethodByName(hwt, "%%get-state")! + let setterMethod = findMethodByName(hwt, "%%set-state")! let createFileExtMethod = findMethodByName(hwt, "createFileExt")! let abstractWriteMethod = findMethodByName(wt, "write")! let closeMethod = findMethodByName(hwt, "close")! @@ -142,7 +142,7 @@ function testMethod() { test(!cMethod.isAbstract(), " not abstract") + test(!cMethod.isGetter(), " not getter") + test(!cMethod.isSetter(), " not setter") + - test(getterMethod.getName() == "state", "MethodName: state") + + test(getterMethod.getName() == "%%get-state", "MethodName: %%get-state") + test(getterMethod.getAttributes() == Attributes.GETTER, " getter attrib") + test(getterMethod.getAccessModifier() == AccessModifier.PUBLIC, " public access modifier") + test(!getterMethod.isInherited(), " not inherited") + @@ -150,7 +150,7 @@ function testMethod() { test(!getterMethod.isAbstract(), " not abstract") + test(getterMethod.isGetter(), " getter") + test(!getterMethod.isSetter(), " not setter") + - test(setterMethod.getName() == "state", "MethodName: state") + + test(setterMethod.getName() == "%%set-state", "MethodName: %%set-state") + test(setterMethod.getAttributes() == Attributes.SETTER, " setter attrib") + test(setterMethod.getAccessModifier() == AccessModifier.PRIVATE, " private access modifier") + test(!setterMethod.isInherited(), " not inherited") + diff --git a/static_core/plugins/ets/tests/ets_test_suite/modules/mismatched/app/arktsconfig.json b/static_core/plugins/ets/tests/ets_test_suite/modules/mismatched/app/arktsconfig.json index 58220f0a9c949d7f91b2db5d25592e3d29a03557..4a58c7c22da490acaaa027766fc7b8f8f1ba339c 100644 --- a/static_core/plugins/ets/tests/ets_test_suite/modules/mismatched/app/arktsconfig.json +++ b/static_core/plugins/ets/tests/ets_test_suite/modules/mismatched/app/arktsconfig.json @@ -4,15 +4,23 @@ "outDir": "${CMAKE_CURRENT_BINARY_DIR}/modules-build/abc", "baseUrl": ".", "paths": { - "@spawn": ["../../spawn"], - "@mismatched": ["../src"] + "@spawn": [ + "../../spawn" + ], + "@mismatched": [ + "../src" + ] } }, "include": [ "./**/*.ets" ], "references": [ - { "path": "../src" }, - { "path": "../../spawn"} + { + "path": "../src" + }, + { + "path": "../../spawn" + } ] -} +} \ No newline at end of file diff --git a/static_core/plugins/ets/tests/libani_helpers/tests/ani_signature_builder/ani_signature_builder_test.cpp b/static_core/plugins/ets/tests/libani_helpers/tests/ani_signature_builder/ani_signature_builder_test.cpp index ba68946d612708904d68a2a8aa3014154e3000d1..71cbc44b50b8bdf1a9cb4208df8e6621c3c53d28 100644 --- a/static_core/plugins/ets/tests/libani_helpers/tests/ani_signature_builder/ani_signature_builder_test.cpp +++ b/static_core/plugins/ets/tests/libani_helpers/tests/ani_signature_builder/ani_signature_builder_test.cpp @@ -80,7 +80,7 @@ TEST(BuilderTest, ClassEnumPartialRequired) ASSERT_EQ(enumType.Descriptor(), "Lcom/example/MyEnum;"); Type partialType = Builder::BuildPartial("com.example.MyClass"); - ASSERT_EQ(partialType.Descriptor(), "Lcom/example/MyClass$partial;"); + ASSERT_EQ(partialType.Descriptor(), "Lcom/example/%%partial-MyClass;"); Type requiredType = Builder::BuildRequired({"com", "example", "RequiredClass"}); ASSERT_EQ(requiredType.Descriptor(), "Lcom/example/RequiredClass;"); @@ -116,8 +116,8 @@ TEST(SignatureBuilderTest, BasicSignatureBuilder) TEST(BuilderTest, SpecialNames) { ASSERT_EQ(Builder::BuildConstructorName(), ""); - ASSERT_EQ(Builder::BuildSetterName("value"), "value"); - ASSERT_EQ(Builder::BuildGetterName("value"), "value"); + ASSERT_EQ(Builder::BuildSetterName("value"), "%%set-value"); + ASSERT_EQ(Builder::BuildGetterName("value"), "%%get-value"); } TEST(SignatureBuilderTest, ComplexSignatureBuilder) @@ -136,7 +136,7 @@ TEST(SignatureBuilderTest, ComplexSignatureBuilder) std::string sig = sb.BuildSignatureDescriptor(); std::string expectedSig = "IFZLcom/example/ComplexClass;" - "Lcom/example/MyEnum;Lcom/example/PartialClass$partial;" + "Lcom/example/MyEnum;Lcom/example/%%partial-PartialClass;" "Lcom/example/RequiredClass;" "Lstd/core/FunctionR4;" ":Lcom/example/ReturnClass;"; @@ -212,7 +212,7 @@ TEST(SignatureBuilderExtraTest, ClassAndEnumMixed) std::string expectedSig = "Lcom/example/ClassA;" "Lcom/example/EnumB;" - "Lcom/example/PartialC$partial;" + "Lcom/example/%%partial-PartialC;" "Lcom/example/RequiredD;" ":Lcom/example/ReturnE;"; ASSERT_EQ(sb.BuildSignatureDescriptor(), expectedSig); diff --git a/static_core/plugins/ets/tests/lookup_by_name/correct_case_16bit.pa b/static_core/plugins/ets/tests/lookup_by_name/correct_case_16bit.pa index c7999b9ccf62b333e3f46383005ef4aa172baf98..e67ecda07d2b2a8a665cbb7e32aa4ee2bd498670 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/correct_case_16bit.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/correct_case_16bit.pa @@ -23,28 +23,28 @@ i16 foo } -.function i16 A.baz(A a0) { +.function i16 A.%%get-baz(A a0) { ldai 42 return } -.function void C.bar(C a0, i32 a1) { +.function void C.%%set-bar(C a0, i32 a1) { mov.obj v0, a0 lda a1 stobj v0, C.foo return.void } -.record $NamedAccessMeta-i16 { +.record %%union_prop-i16 { i16 bar i16 baz } .function i32 test(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name a0, $NamedAccessMeta-i16.baz + ets.ldobj.name a0, %%union_prop-i16.baz movi v0, 5 add2 v0 - ets.stobj.name a1, $NamedAccessMeta-i16.bar + ets.stobj.name a1, %%union_prop-i16.bar return } diff --git a/static_core/plugins/ets/tests/lookup_by_name/correct_case_32bit.pa b/static_core/plugins/ets/tests/lookup_by_name/correct_case_32bit.pa index a81a2d3d080fa915c6fe2e0511254a1ed339b125..5c01add6461f35a0ce52f437c101e5b3c9bbe45f 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/correct_case_32bit.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/correct_case_32bit.pa @@ -23,28 +23,28 @@ i32 foo } -.function i32 A.baz(A a0) { +.function i32 A.%%get-baz(A a0) { ldai 42 return } -.function void C.bar(C a0, i32 a1) { +.function void C.%%set-bar(C a0, i32 a1) { mov.obj v0, a0 lda a1 stobj v0, C.foo return.void } -.record $NamedAccessMeta-i32 { +.record %%union_prop-i32 { i32 bar i32 baz } .function i32 test(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name a0, $NamedAccessMeta-i32.baz + ets.ldobj.name a0, %%union_prop-i32.baz movi v0, 5 add2 v0 - ets.stobj.name a1, $NamedAccessMeta-i32.bar + ets.stobj.name a1, %%union_prop-i32.bar return } diff --git a/static_core/plugins/ets/tests/lookup_by_name/correct_case_64bit.pa b/static_core/plugins/ets/tests/lookup_by_name/correct_case_64bit.pa index 6028f2c2b95e1d177c188258d7023a7c9bca4ce2..98f2ce772c74f8cdc493c91580689baf877245d9 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/correct_case_64bit.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/correct_case_64bit.pa @@ -23,32 +23,32 @@ i32 foo } -.function i64 A.baz(A a0) { +.function i64 A.%%get-baz(A a0) { ldai.64 42 return.64 } -.function void C.bar(C a0, i32 a1) { +.function void C.%%set-bar(C a0, i32 a1) { mov.obj v0, a0 lda a1 stobj v0, C.foo return.void } -.record $NamedAccessMeta-i32 { +.record %%union_prop-i32 { i32 bar } -.record $NamedAccessMeta-i64 { +.record %%union_prop-i64 { i64 baz } .function i32 test(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name.64 a0, $NamedAccessMeta-i64.baz + ets.ldobj.name.64 a0, %%union_prop-i64.baz i64toi32 movi v0, 5 add2 v0 - ets.stobj.name a1, $NamedAccessMeta-i32.bar + ets.stobj.name a1, %%union_prop-i32.bar return } diff --git a/static_core/plugins/ets/tests/lookup_by_name/correct_case_8bit.pa b/static_core/plugins/ets/tests/lookup_by_name/correct_case_8bit.pa index 1bcdfc85ef0567d909d94763925096d3fafcaa7b..9f55c92266926aa3283caad590d238b519ee4a30 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/correct_case_8bit.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/correct_case_8bit.pa @@ -23,28 +23,28 @@ i8 foo } -.function i8 A.baz(A a0) { +.function i8 A.%%get-baz(A a0) { ldai 42 return } -.function void C.bar(C a0, i32 a1) { +.function void C.%%set-bar(C a0, i32 a1) { mov.obj v0, a0 lda a1 stobj v0, C.foo return.void } -.record $NamedAccessMeta-i8 { +.record %%union_prop-i8 { i8 bar i8 baz } .function i32 test(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name a0, $NamedAccessMeta-i8.baz + ets.ldobj.name a0, %%union_prop-i8.baz movi v0, 5 add2 v0 - ets.stobj.name a1, $NamedAccessMeta-i8.bar + ets.stobj.name a1, %%union_prop-i8.bar return } diff --git a/static_core/plugins/ets/tests/lookup_by_name/correct_case_ref.pa b/static_core/plugins/ets/tests/lookup_by_name/correct_case_ref.pa index 0d0f6836d0fcad2190e99ec86a72916dcc6cd087..24d274a22f3f542298fe1bc26a64b09d8e683908 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/correct_case_ref.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/correct_case_ref.pa @@ -25,24 +25,24 @@ std.core.String foo } -.function std.core.String A.baz(A a0) { +.function std.core.String A.%%get-baz(A a0) { lda.str "42" return.obj } -.function void C.bar(C a0, std.core.String a1) { +.function void C.%%set-bar(C a0, std.core.String a1) { lda.obj a1 stobj.obj a0, C.foo return.void } -.record $NamedAccessMeta-std.core.String { +.record %%union_prop-std.core.String { std.core.String bar std.core.String baz } .function void test(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name.obj a0, $NamedAccessMeta-std.core.String.baz + ets.ldobj.name.obj a0, %%union_prop-std.core.String.baz sta.obj v0 lda.str "42" sta.obj v1 @@ -50,11 +50,11 @@ movi v0, 1 jne v0, fail_test lda.str "44" - ets.stobj.name.obj a1, $NamedAccessMeta-std.core.String.bar + ets.stobj.name.obj a1, %%union_prop-std.core.String.bar return.void fail_test: lda.str "88" - ets.stobj.name.obj a1, $NamedAccessMeta-std.core.String.bar + ets.stobj.name.obj a1, %%union_prop-std.core.String.bar return.void } diff --git a/static_core/plugins/ets/tests/lookup_by_name/correct_case_ref_2.pa b/static_core/plugins/ets/tests/lookup_by_name/correct_case_ref_2.pa index c4fbd1a3d8e1759822459f6b2e28a8dac0e8e7e2..9b85f038f37e7c306cba2397213e9fee29c62d95 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/correct_case_ref_2.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/correct_case_ref_2.pa @@ -31,7 +31,7 @@ std.core.LinkerUnresolvedFieldError foo } -.function std.core.LinkerUnresolvedFieldError A.baz(A a0) { +.function std.core.LinkerUnresolvedFieldError A.%%get-baz(A a0) { newobj v0, std.core.LinkerUnresolvedFieldError lda.str "42" stobj.obj v0, std.core.LinkerUnresolvedFieldError.message @@ -39,23 +39,23 @@ return.obj } -.function void C.bar(C a0, std.core.Exception a1) { +.function void C.%%set-bar(C a0, std.core.Exception a1) { ldobj.v.obj v0, a0, C.foo ldobj.obj a1, std.core.Exception.message stobj.obj v0, std.core.LinkerUnresolvedFieldError.message return.void } -.record $NamedAccessMeta-std-core-Exception { +.record %%union_prop-std-core-Exception { std.core.Exception bar } -.record $NamedAccessMeta-std-core-LinkerUnresolvedFieldError { +.record %%union_prop-std-core-LinkerUnresolvedFieldError { std.core.LinkerUnresolvedFieldError baz } .function void test(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name.obj a0, $NamedAccessMeta-std-core-LinkerUnresolvedFieldError.baz + ets.ldobj.name.obj a0, %%union_prop-std-core-LinkerUnresolvedFieldError.baz sta.obj v0 ldobj.v.obj v1, v0, std.core.LinkerUnresolvedFieldError.message lda.str "42" @@ -66,13 +66,13 @@ lda.str "44" stobj.obj v0, std.core.LinkerUnresolvedFieldError.message lda.obj v0 - ets.stobj.name.obj a1, $NamedAccessMeta-std-core-Exception.bar + ets.stobj.name.obj a1, %%union_prop-std-core-Exception.bar return.void fail_test: lda.str "88" stobj.obj v0, std.core.LinkerUnresolvedFieldError.message lda.obj v0 - ets.stobj.name.obj a1, $NamedAccessMeta-std-core-Exception.bar + ets.stobj.name.obj a1, %%union_prop-std-core-Exception.bar return.void } diff --git a/static_core/plugins/ets/tests/lookup_by_name/field_case_32bit.pa b/static_core/plugins/ets/tests/lookup_by_name/field_case_32bit.pa index 64539ba9d57aed66e18b3d3902950b475b43e9cd..b02153f0af729dafac24c468b5e1a978b00da9f5 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/field_case_32bit.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/field_case_32bit.pa @@ -22,12 +22,12 @@ i32 baz } -.function i32 A.bar(A a0) { +.function i32 A.%%get-bar(A a0) { ldai 15 return } -.record $NamedAccessMeta-i32 { +.record %%union_prop-i32 { i32 bar i32 baz } @@ -38,14 +38,14 @@ movi v2, 15 lda v2 ldai 2 - ets.ldobj.name v0, $NamedAccessMeta-i32.bar + ets.ldobj.name v0, %%union_prop-i32.bar movi v3, 5 add2 v3 movi v4, 20 jne v4, error1 stobj v1, B.baz ldai 3 - ets.ldobj.name v1, $NamedAccessMeta-i32.baz + ets.ldobj.name v1, %%union_prop-i32.baz jne v4, error2 ldai 0 return diff --git a/static_core/plugins/ets/tests/lookup_by_name/field_case_64bit.pa b/static_core/plugins/ets/tests/lookup_by_name/field_case_64bit.pa index 06d0fcb95c0c64314ad1e08f7dc64e83995bc380..a256ce752d11b2c844b4b6bf2b6fb140c28283df 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/field_case_64bit.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/field_case_64bit.pa @@ -23,7 +23,7 @@ i64 baz } -.record $NamedAccessMeta-i64 { +.record %%union_prop-i64 { i64 bar i64 baz } @@ -34,7 +34,7 @@ ldai.64 5294967290 stobj.64 v0, A.bar ldai 0 - ets.ldobj.name.64 v0, $NamedAccessMeta-i64.bar + ets.ldobj.name.64 v0, %%union_prop-i64.bar movi.64 v3, 6 add2.64 v3 movi.64 v4, 5294967296 @@ -43,7 +43,7 @@ jnez error1 lda.64 v5 stobj.64 v1, B.baz - ets.ldobj.name.64 v1, $NamedAccessMeta-i64.baz + ets.ldobj.name.64 v1, %%union_prop-i64.baz movi.64 v4, 5294967296 cmp.64 v4 jnez error2 diff --git a/static_core/plugins/ets/tests/lookup_by_name/field_case_8bit.pa b/static_core/plugins/ets/tests/lookup_by_name/field_case_8bit.pa index 5187079c8b33a2f1ede710cd9c6459de9d06fe64..7a68294d3819d3e2b128ded3f8d9400ba513399e 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/field_case_8bit.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/field_case_8bit.pa @@ -23,7 +23,7 @@ i8 baz } -.record $NamedAccessMeta-i8 { +.record %%union_prop-i8 { i8 bar i8 baz } @@ -35,14 +35,14 @@ lda v2 stobj v0, A.bar ldai 4 - ets.ldobj.name v0, $NamedAccessMeta-i8.bar + ets.ldobj.name v0, %%union_prop-i8.bar movi v3, 5 add2 v3 movi v4, 20 jne v4, error1 stobj v1, B.baz ldai 2 - ets.ldobj.name v1, $NamedAccessMeta-i8.baz + ets.ldobj.name v1, %%union_prop-i8.baz jne v4, error2 ldai 0 return diff --git a/static_core/plugins/ets/tests/lookup_by_name/field_case_ref.pa b/static_core/plugins/ets/tests/lookup_by_name/field_case_ref.pa index 3b94eadceead9655db2be212f45e3d0beae1cadd..81a804836ed545f1a1d9b7c4d9e642f932be506d 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/field_case_ref.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/field_case_ref.pa @@ -24,12 +24,12 @@ std.core.String baz } -.record $NamedAccessMeta-std-core-String { +.record %%union_prop-std-core-String { std.core.String bar std.core.String baz } -.function std.core.String A.bar(A a0) { +.function std.core.String A.%%get-bar(A a0) { lda.str "64" return.obj } @@ -41,7 +41,7 @@ lda.str "42" stobj.obj v1, B.baz - ets.ldobj.name.obj v1, $NamedAccessMeta-std-core-String.baz + ets.ldobj.name.obj v1, %%union_prop-std-core-String.baz sta.obj v2 lda.str "42" sta.obj v3 @@ -49,7 +49,7 @@ movi v4, 1 jne v4, error1 - ets.ldobj.name.obj v0, $NamedAccessMeta-std-core-String.bar + ets.ldobj.name.obj v0, %%union_prop-std-core-String.bar sta.obj v2 lda.str "64" sta.obj v3 diff --git a/static_core/plugins/ets/tests/lookup_by_name/no_field_case.pa b/static_core/plugins/ets/tests/lookup_by_name/no_field_case.pa index 73dcc98c39715abc251de2cbf9d0ecbb55218d8d..ccaef6cb2c16400997b0e89f467136fbe388c777 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/no_field_case.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/no_field_case.pa @@ -21,7 +21,7 @@ } .record A {} -.function i32 A.baz(A a0) { +.function i32 A.%%get-baz(A a0) { ldai 42 return } @@ -33,23 +33,23 @@ i32 foo } -.function void C.bar(C a0, i32 a1) { +.function void C.%%set-bar(C a0, i32 a1) { mov.obj v0, a0 lda a1 stobj v0, C.foo return.void } -.record $NamedAccessMeta-i32 { +.record %%union_prop-i32 { i32 bar i32 baz } .function void test(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name a0, $NamedAccessMeta-i32.baz + ets.ldobj.name a0, %%union_prop-i32.baz movi v0, 5 add2 v0 - ets.stobj.name a1, $NamedAccessMeta-i32.bar + ets.stobj.name a1, %%union_prop-i32.bar return.void } diff --git a/static_core/plugins/ets/tests/lookup_by_name/no_field_case_2.pa b/static_core/plugins/ets/tests/lookup_by_name/no_field_case_2.pa index 0de08e14a2ef31a0c6435622d22ed7196764a7a2..f2f8da73a515c48dc02346e8e8b563cb1198bd0c 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/no_field_case_2.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/no_field_case_2.pa @@ -21,7 +21,7 @@ } .record A {} -.function i32 A.baz(A a0) { +.function i32 A.%%get-baz(A a0) { ldai 42 return } @@ -33,23 +33,23 @@ i32 foo } -.function void C.bar(C a0, i32 a1) { +.function void C.%%set-bar(C a0, i32 a1) { mov.obj v0, a0 lda a1 stobj v0, C.foo return.void } -.record $NamedAccessMeta-i32 { +.record %%union_prop-i32 { i32 bar i32 baz } .function i32 test(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name a0, $NamedAccessMeta-i32.baz + ets.ldobj.name a0, %%union_prop-i32.baz movi v0, 5 add2 v0 - ets.stobj.name a1, $NamedAccessMeta-i32.bar + ets.stobj.name a1, %%union_prop-i32.bar return } diff --git a/static_core/plugins/ets/tests/lookup_by_name/no_getter_case.pa b/static_core/plugins/ets/tests/lookup_by_name/no_getter_case.pa index eb0399bae6ba4634b8e34b470b015236ae148895..d98a9d782e620b3fa12ea176e5fda2148817c729 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/no_getter_case.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/no_getter_case.pa @@ -28,23 +28,23 @@ i32 foo } -.function void C.bar(C a0, i32 a1) { +.function void C.%%set-bar(C a0, i32 a1) { mov.obj v0, a0 lda a1 stobj v0, C.foo return.void } -.record $NamedAccessMeta-i32 { +.record %%union_prop-i32 { i32 bar i32 baz } .function i32 test(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name a0, $NamedAccessMeta-i32.baz + ets.ldobj.name a0, %%union_prop-i32.baz movi v0, 5 add2 v0 - ets.stobj.name a1, $NamedAccessMeta-i32.bar + ets.stobj.name a1, %%union_prop-i32.bar return } diff --git a/static_core/plugins/ets/tests/lookup_by_name/no_setter_case.pa b/static_core/plugins/ets/tests/lookup_by_name/no_setter_case.pa index d47671ccc94b5f2c5b59931fae427273d1fc789d..a53e706d8d3e2118beffda2f2a80358c46a72e77 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/no_setter_case.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/no_setter_case.pa @@ -28,21 +28,21 @@ i32 foo } -.function i32 A.baz(A a0) { +.function i32 A.%%get-baz(A a0) { ldai 42 return } -.record $NamedAccessMeta-i32 { +.record %%union_prop-i32 { i32 bar i32 baz } .function i32 test(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name a0, $NamedAccessMeta-i32.baz + ets.ldobj.name a0, %%union_prop-i32.baz movi v0, 5 add2 v0 - ets.stobj.name a1, $NamedAccessMeta-i32.bar + ets.stobj.name a1, %%union_prop-i32.bar return } diff --git a/static_core/plugins/ets/tests/lookup_by_name/wrong_getter_args_case.pa b/static_core/plugins/ets/tests/lookup_by_name/wrong_getter_args_case.pa index 14f84df36f4ebd5cec670fe606628c87e03f2f7e..b4d8c568ad63c87146cfffe0c58b5f639c9dfa32 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/wrong_getter_args_case.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/wrong_getter_args_case.pa @@ -28,29 +28,29 @@ i32 foo } -.function i32 A.baz(i32 a0) { +.function i32 A.%%get-baz(i32 a0) { ldai 42 add2 a0 return } -.function void C.bar(C a0, i32 a1) { +.function void C.%%set-bar(C a0, i32 a1) { mov.obj v0, a0 lda a1 stobj v0, C.foo return.void } -.record $NamedAccessMeta-i32 { +.record %%union_prop-i32 { i32 bar i32 baz } .function i32 test(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name a0, $NamedAccessMeta-i32.baz + ets.ldobj.name a0, %%union_prop-i32.baz movi v0, 5 add2 v0 - ets.stobj.name a1, $NamedAccessMeta-i32.bar + ets.stobj.name a1, %%union_prop-i32.bar return } diff --git a/static_core/plugins/ets/tests/lookup_by_name/wrong_getter_args_case_2.pa b/static_core/plugins/ets/tests/lookup_by_name/wrong_getter_args_case_2.pa index 2fad837bf82dc027b24383c9f772c84276b25c3a..a5a9806ccd09f3a8c940f6857b2c2a83d50c9c5b 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/wrong_getter_args_case_2.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/wrong_getter_args_case_2.pa @@ -28,28 +28,28 @@ i32 foo } -.function i64 A.baz(A a0) { +.function i64 A.%%get-baz(A a0) { ldai.64 42 return.64 } -.function void C.bar(C a0, i32 a1) { +.function void C.%%set-bar(C a0, i32 a1) { mov.obj v0, a0 lda a1 stobj v0, C.foo return.void } -.record $NamedAccessMeta-i32 { +.record %%union_prop-i32 { i32 bar i32 baz } .function i32 test(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name a0, $NamedAccessMeta-i32.baz + ets.ldobj.name a0, %%union_prop-i32.baz movi v0, 5 add2 v0 - ets.stobj.name a1, $NamedAccessMeta-i32.bar + ets.stobj.name a1, %%union_prop-i32.bar return } diff --git a/static_core/plugins/ets/tests/lookup_by_name/wrong_setter_args_case.pa b/static_core/plugins/ets/tests/lookup_by_name/wrong_setter_args_case.pa index 0267dac18f3d99481e4bfddd02554719903d2bff..78a1b7fa96567c50c67a99bc7b353697a6777a39 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/wrong_setter_args_case.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/wrong_setter_args_case.pa @@ -28,28 +28,28 @@ i32 foo } -.function i32 A.baz(A a0) { +.function i32 A.%%get-baz(A a0) { ldai 42 return } -.function void C.bar(C a0) { +.function void C.%%set-bar(C a0) { mov.obj v0, a0 ldai 88 stobj v0, C.foo return.void } -.record $NamedAccessMeta-i32 { +.record %%union_prop-i32 { i32 bar i32 baz } .function i32 test(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name a0, $NamedAccessMeta-i32.baz + ets.ldobj.name a0, %%union_prop-i32.baz movi v0, 5 add2 v0 - ets.stobj.name a1, $NamedAccessMeta-i32.bar + ets.stobj.name a1, %%union_prop-i32.bar return } diff --git a/static_core/plugins/ets/tests/lookup_by_name/wrong_setter_args_case_2.pa b/static_core/plugins/ets/tests/lookup_by_name/wrong_setter_args_case_2.pa index 73527d7c66538b9f822a14bc38e4bac38fa4748a..302696519671bd5424533980180d0273e45f236d 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/wrong_setter_args_case_2.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/wrong_setter_args_case_2.pa @@ -28,12 +28,12 @@ i32 foo } -.function i32 A.baz(A a0) { +.function i32 A.%%get-baz(A a0) { ldai 42 return } -.function i32 C.bar(C a0, i32 a1) { +.function i32 C.%%set-bar(C a0, i32 a1) { mov.obj v0, a0 ldai 88 stobj v0, C.foo @@ -41,16 +41,16 @@ return } -.record $NamedAccessMeta-i32 { +.record %%union_prop-i32 { i32 bar i32 baz } .function i32 test(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name a0, $NamedAccessMeta-i32.baz + ets.ldobj.name a0, %%union_prop-i32.baz movi v0, 5 add2 v0 - ets.stobj.name a1, $NamedAccessMeta-i32.bar + ets.stobj.name a1, %%union_prop-i32.bar return } diff --git a/static_core/plugins/ets/tests/lookup_by_name/wrong_setter_args_case_3.pa b/static_core/plugins/ets/tests/lookup_by_name/wrong_setter_args_case_3.pa index a6e12514926033c34c618ae0a3840857ed311230..fc2d077341b26bed807ee0483c2dc69ede192b4f 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/wrong_setter_args_case_3.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/wrong_setter_args_case_3.pa @@ -28,28 +28,28 @@ i32 foo } -.function i32 A.baz(A a0) { +.function i32 A.%%get-baz(A a0) { ldai 42 return } -.function void C.bar(i32 a0, A a1) { +.function void C.%%set-bar(i32 a0, A a1) { mov.obj v0, a1 lda a0 stobj v0, C.foo return.void } -.record $NamedAccessMeta-i32 { +.record %%union_prop-i32 { i32 bar i32 baz } .function i32 test(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name a0, $NamedAccessMeta-i32.baz + ets.ldobj.name a0, %%union_prop-i32.baz movi v0, 5 add2 v0 - ets.stobj.name a1, $NamedAccessMeta-i32.bar + ets.stobj.name a1, %%union_prop-i32.bar return } diff --git a/static_core/plugins/ets/tests/lookup_by_name/wrong_setter_args_case_4.pa b/static_core/plugins/ets/tests/lookup_by_name/wrong_setter_args_case_4.pa index 11157956b71439b12e78e50c487674be3372abbf..ce20663195b9c286cacafc0d8653def19844e2f6 100644 --- a/static_core/plugins/ets/tests/lookup_by_name/wrong_setter_args_case_4.pa +++ b/static_core/plugins/ets/tests/lookup_by_name/wrong_setter_args_case_4.pa @@ -28,12 +28,12 @@ i32 foo } -.function i32 A.baz(A a0) { +.function i32 A.%%get-baz(A a0) { ldai 42 return } -.function void C.bar(C a0, i64 a1) { +.function void C.%%set-bar(C a0, i64 a1) { mov.obj v0, a0 lda.64 a1 i64toi32 @@ -41,16 +41,16 @@ return.void } -.record $NamedAccessMeta-i32 { +.record %%union_prop-i32 { i32 bar i32 baz } .function i32 test(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name a0, $NamedAccessMeta-i32.baz + ets.ldobj.name a0, %%union_prop-i32.baz movi v0, 5 add2 v0 - ets.stobj.name a1, $NamedAccessMeta-i32.bar + ets.stobj.name a1, %%union_prop-i32.bar return } diff --git a/static_core/plugins/ets/tests/micro-benchmarks/call_unknown_class_method.pa b/static_core/plugins/ets/tests/micro-benchmarks/call_unknown_class_method.pa index b7bb46e713591399c43fd47d00e779ae98fb31a9..9b201eab1705625c969c161b3ee48e5df7831396 100644 --- a/static_core/plugins/ets/tests/micro-benchmarks/call_unknown_class_method.pa +++ b/static_core/plugins/ets/tests/micro-benchmarks/call_unknown_class_method.pa @@ -23,37 +23,37 @@ .function void run(A a0, B a1) -.function i32 A.baz(A a0) { +.function i32 A.%%get-baz(A a0) { ldai 2 return } -.function void A.baz(A a0, i32 a1) { +.function void A.%%set-baz(A a0, i32 a1) { return.void } -.function void B.bar(B a0, i32 a1) { +.function void B.%%set-bar(B a0, i32 a1) { return.void } -.record $NamedAccessMeta-i32 { +.record %%union_prop-i32 { i32 bar i32 baz } .function void test_1(std.core.Object a0) { - ets.ldobj.name a0, $NamedAccessMeta-i32.baz + ets.ldobj.name a0, %%union_prop-i32.baz movi v0, 2 add2 v0 - ets.stobj.name a0, $NamedAccessMeta-i32.baz + ets.stobj.name a0, %%union_prop-i32.baz return.void } .function void test_2(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name a0, $NamedAccessMeta-i32.baz + ets.ldobj.name a0, %%union_prop-i32.baz movi v0, 3 add2 v0 - ets.stobj.name a1, $NamedAccessMeta-i32.bar + ets.stobj.name a1, %%union_prop-i32.bar return.void } diff --git a/static_core/plugins/ets/tests/micro-benchmarks/get_unknown_class_field.pa b/static_core/plugins/ets/tests/micro-benchmarks/get_unknown_class_field.pa index 67d0d2ddae9b44fbc5b93bde1aebf3aed5097590..985393231fefc8d7b401264c7c0984cb42c2d079 100644 --- a/static_core/plugins/ets/tests/micro-benchmarks/get_unknown_class_field.pa +++ b/static_core/plugins/ets/tests/micro-benchmarks/get_unknown_class_field.pa @@ -1,4 +1,4 @@ -# Copyright (c) 2021-2024 Huawei Device Co., Ltd. +# Copyright (c) 2021-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -25,24 +25,24 @@ .function void run(A a0, B a1) -.record $NamedAccessMeta-i32 { +.record %%union_prop-i32 { i32 bar i32 baz } .function void test_1(std.core.Object a0) { - ets.ldobj.name a0, $NamedAccessMeta-i32.baz + ets.ldobj.name a0, %%union_prop-i32.baz movi v0, 2 add2 v0 - ets.stobj.name a0, $NamedAccessMeta-i32.baz + ets.stobj.name a0, %%union_prop-i32.baz return.void } .function void test_2(std.core.Object a0, std.core.Object a1) { - ets.ldobj.name a0, $NamedAccessMeta-i32.baz + ets.ldobj.name a0, %%union_prop-i32.baz movi v0, 3 add2 v0 - ets.stobj.name a1, $NamedAccessMeta-i32.bar + ets.stobj.name a1, %%union_prop-i32.bar return.void } diff --git a/static_core/plugins/ets/tests/scripts/micro-benchmarks/run_micro_benchmarks.py b/static_core/plugins/ets/tests/scripts/micro-benchmarks/run_micro_benchmarks.py index 7bc1bb8e866d287e03d5cdafe76fad24ac878875..2da9fb45ede7c3e3d24ea8b76d0473c0668ab56d 100644 --- a/static_core/plugins/ets/tests/scripts/micro-benchmarks/run_micro_benchmarks.py +++ b/static_core/plugins/ets/tests/scripts/micro-benchmarks/run_micro_benchmarks.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2022-2024 Huawei Device Co., Ltd. +# Copyright (c) 2022-2025 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -173,10 +173,13 @@ class EtsBenchmarksRunner: subprocess.run(["mkdir", "-p", current_output_dir]) fd_read = os.open(self.wrapper_asm_filepath, os.O_RDONLY, 0o755) fd_read_two = os.open(base_asm_file_path, os.O_RDONLY, 0o755) - file_to_read = os.fdopen(fd_read, "r") - file_to_read_two = os.fdopen(fd_read_two, "r") - os.fdopen(os.open(tmp_asm_file_path, os.O_WRONLY | os.O_CREAT, 0o755), "w").write(file_to_read.read() + - file_to_read_two.read()) + + with os.fdopen(fd_read, "r") as file_to_read, \ + os.fdopen(fd_read_two, "r") as file_to_read_two, \ + os.fdopen(os.open(tmp_asm_file_path, os.O_WRONLY | + os.O_CREAT, 0o755), "w") as file_to_write: + file_to_write.write(file_to_read.read() + + file_to_read_two.read()) if self.is_device: device_current_output_dir = os.path.join( diff --git a/taihe/compiler/taihe/codegen/ani/gen_ani.py b/taihe/compiler/taihe/codegen/ani/gen_ani.py index a8b528844ce0e770e7a72a59b37b7c1b66778737..29537773f545bc9581a19c0bdac10f39b4aa00f6 100644 --- a/taihe/compiler/taihe/codegen/ani/gen_ani.py +++ b/taihe/compiler/taihe/codegen/ani/gen_ani.py @@ -824,7 +824,7 @@ class ANICodeGenerator: ) else: struct_ani_impl_target.writelns( - f'env->Object_CallMethod_{type_ani_info.ani_type.suffix}(ani_obj, TH_ANI_FIND_CLASS_METHOD(env, "{struct_ani_info.type_desc}", "{final.name}", nullptr), reinterpret_cast<{type_ani_info.ani_type.base}*>(&{ani_field_value}));', + f'env->Object_CallMethod_{type_ani_info.ani_type.suffix}(ani_obj, TH_ANI_FIND_CLASS_METHOD(env, "{struct_ani_info.type_desc}", "%%get-{final.name}", nullptr), reinterpret_cast<{type_ani_info.ani_type.base}*>(&{ani_field_value}));', ) type_ani_info.from_ani( struct_ani_impl_target,