diff --git a/ecmascript/compiler/native_inline_lowering.cpp b/ecmascript/compiler/native_inline_lowering.cpp index 29e3dadb4e..314a558187 100644 --- a/ecmascript/compiler/native_inline_lowering.cpp +++ b/ecmascript/compiler/native_inline_lowering.cpp @@ -344,15 +344,6 @@ void NativeInlineLowering::RunNativeInlineLowering() case BuiltinsStubCSigns::ID::ReflectApply: TryInlineReflectApply(gate, argc, id, skipThis); break; - case BuiltinsStubCSigns::ID::FunctionPrototypeApply: - TryInlineFunctionPrototypeApply(gate, argc, id, skipThis); - break; - case BuiltinsStubCSigns::ID::FunctionPrototypeBind: - TryInlineFunctionPrototypeBind(gate, argc, id, skipThis); - break; - case BuiltinsStubCSigns::ID::FunctionPrototypeCall: - TryInlineFunctionPrototypeCall(gate, argc, id, skipThis); - break; case BuiltinsStubCSigns::ID::FunctionPrototypeHasInstance: TryInlineFunctionPrototypeHasInstance(gate, argc, id, skipThis); break; diff --git a/ecmascript/object_fast_operator-inl.h b/ecmascript/object_fast_operator-inl.h index 26e2c2dd3b..517ea4ce14 100644 --- a/ecmascript/object_fast_operator-inl.h +++ b/ecmascript/object_fast_operator-inl.h @@ -345,6 +345,7 @@ JSTaggedValue ObjectFastOperator::TrySetPropertyByNameThroughCacheAtLocal(JSThre JSTaggedValue key, JSTaggedValue value) { bool isTagged = true; + JSTaggedValue originValue = value; auto *hclass = receiver.GetTaggedObject()->GetClass(); if (LIKELY(!hclass->IsDictionaryMode())) { ASSERT(!TaggedArray::Cast(JSObject::Cast(receiver)->GetProperties().GetTaggedObject())->IsDictionaryMode()); @@ -376,16 +377,16 @@ JSTaggedValue ObjectFastOperator::TrySetPropertyByNameThroughCacheAtLocal(JSThre return JSTaggedValue::Hole(); } JSHandle objHandle(thread, receiver); - JSHandle keyHandle(thread, key); + JSHandle valueHandle(thread, value); auto actualValue = JSHClass::ConvertOrTransitionWithRep(thread, objHandle, - keyHandle, JSHandle(thread, value), attr); + JSHandle(thread, key), valueHandle, attr); receiver = objHandle.GetTaggedValue(); - key = keyHandle.GetTaggedValue(); + originValue = valueHandle.GetTaggedValue(); value = actualValue.value; isTagged = actualValue.isTagged; } if (receiver.IsJSShared()) { - if (!ClassHelper::MatchFieldType(attr.GetSharedFieldType(), value)) { + if (!ClassHelper::MatchFieldType(attr.GetSharedFieldType(), originValue)) { THROW_TYPE_ERROR_AND_RETURN((thread), GET_MESSAGE_STRING(SetTypeMismatchedSharedProperty), JSTaggedValue::Exception()); } diff --git a/test/aottest/builtin_inlining/date/GetTime/builtinDateGetTime.ts b/test/aottest/builtin_inlining/date/GetTime/builtinDateGetTime.ts index 7d8a1bb954..546ca95930 100644 --- a/test/aottest/builtin_inlining/date/GetTime/builtinDateGetTime.ts +++ b/test/aottest/builtin_inlining/date/GetTime/builtinDateGetTime.ts @@ -84,11 +84,8 @@ print(time.getTime()); //: NaN time = new Date(50000000000) let true_func = time.getTime -//aot: [trace] aot inline builtin: Function.prototype.call, caller function name:func_main_0@builtinDateGetTime print(true_func.call(time)) //: 50000000000 -//aot: [trace] aot inline builtin: Function.prototype.call, caller function name:func_main_0@builtinDateGetTime print(true_func.call(time, 1)) //: 50000000000 -//aot: [trace] aot inline builtin: Function.prototype.call, caller function name:func_main_0@builtinDateGetTime print(true_func.call(time, 1, 2)) //: 50000000000 if (ArkTools.isAOTCompiled(printDateGetTimeOneParam)) { diff --git a/test/aottest/builtin_inlining/function/Function/builtinFunctionFunction.ts b/test/aottest/builtin_inlining/function/Function/builtinFunctionFunction.ts index df1db21475..73fc663e83 100644 --- a/test/aottest/builtin_inlining/function/Function/builtinFunctionFunction.ts +++ b/test/aottest/builtin_inlining/function/Function/builtinFunctionFunction.ts @@ -17,18 +17,13 @@ declare function print(arg:any):string; function foo(a: any, b: any) { return this + a + b; } -//aot: [trace] aot inline builtin: Function.prototype.apply, caller function name:func_main_0@builtinFunctionFunction print(foo.apply(1, [2, 3])); //: 6 -//aot: [trace] aot inline builtin: Function.prototype.apply, caller function name:func_main_0@builtinFunctionFunction print(foo.apply(1)); //: NaN -//aot: [trace] aot inline builtin: Function.prototype.bind, caller function name:func_main_0@builtinFunctionFunction let bfoo = foo.bind(2); print(bfoo(3, 4)); //: 9 let bfoo1 = foo.bind(5, 6); print(bfoo1(7)); //: 18 -//aot: [trace] aot inline builtin: Function.prototype.call, caller function name:func_main_0@builtinFunctionFunction print(foo.call(10, 20)); //: NaN -//aot: [trace] aot inline builtin: Function.prototype.call, caller function name:func_main_0@builtinFunctionFunction print(foo.call(10, 20, 30)); //: 60 class C {} //aot: [trace] aot inline builtin: Function.prototype.hasInstance, caller function name:func_main_0@builtinFunctionFunction