diff --git a/compiler/intrinsics_type_resolving_ecmascript.cpp b/compiler/intrinsics_type_resolving_ecmascript.cpp index 6443e5acffb57221d8c18d3dbef94d0132bdbccf..9397639c336bc476bdcd09cbfba0b20a0c6ec25f 100644 --- a/compiler/intrinsics_type_resolving_ecmascript.cpp +++ b/compiler/intrinsics_type_resolving_ecmascript.cpp @@ -113,6 +113,7 @@ bool TypesResolving::InlineTypeOf(IntrinsicInst *intrinsic) auto any_name = GetGraph()->CreateInstGetAnyTypeName(DataType::ANY, intrinsic->GetPc()); any_name->SetAnyType(type); intrinsic->InsertBefore(any_name); + intrinsic->ReplaceUsers(any_name); return true; } diff --git a/tests/checked/typeof.js b/tests/checked/typeof.js index e6de10509d90ba5ebe4555d1111f1bed728800da..8bc5d1d572bcbd31321d35d7438e61fca3a0ecd1 100644 --- a/tests/checked/typeof.js +++ b/tests/checked/typeof.js @@ -16,39 +16,48 @@ //! CHECKER Test check TypeOfDyn //! RUN options: "--no-async-jit=true --compiler-hotness-threshold=10 --compiler-regex _GLOBAL::test_type.*", entry: "_GLOBAL::func_main_0" //! METHOD "test_type_undefined" -//! PASS_AFTER "TypesResolving" +//! PASS_BEFORE "Scheduler" //! INST "AnyTypeCheck ECMASCRIPT_UNDEFINED_TYPE" //! INST_NEXT "GetAnyTypeName ECMASCRIPT_UNDEFINED_TYPE" +//! INST_NOT "Intrinsic.TypeofDyn" //! METHOD "test_type_string" -//! PASS_AFTER "TypesResolving" +//! PASS_BEFORE "Scheduler" //! INST "AnyTypeCheck ECMASCRIPT_STRING_TYPE" //! INST_NEXT "GetAnyTypeName ECMASCRIPT_STRING_TYPE" +//! INST_NOT "Intrinsic.TypeofDyn" //! METHOD "test_type_boolean" -//! PASS_AFTER "TypesResolving" +//! PASS_BEFORE "Scheduler" //! INST "AnyTypeCheck ECMASCRIPT_BOOLEAN_TYPE" //! INST_NEXT "GetAnyTypeName ECMASCRIPT_BOOLEAN_TYPE" +//! INST_NOT "Intrinsic.TypeofDyn" //! METHOD "test_type_int" -//! PASS_AFTER "TypesResolving" +//! PASS_BEFORE "Scheduler" //! INST "AnyTypeCheck ECMASCRIPT_DOUBLE_TYPE i" //! INST_NEXT "GetAnyTypeName ECMASCRIPT_DOUBLE_TYPE" +//! INST_NOT "Intrinsic.TypeofDyn" //! METHOD "test_type_double" -//! PASS_AFTER "TypesResolving" +//! PASS_BEFORE "Scheduler" //! INST "AnyTypeCheck ECMASCRIPT_DOUBLE_TYPE i" //! INST_NEXT "GetAnyTypeName ECMASCRIPT_DOUBLE_TYPE" +//! INST_NOT "Intrinsic.TypeofDyn" //! METHOD "test_type_bigint" -//! PASS_AFTER "TypesResolving" +//! PASS_BEFORE "Scheduler" //! INST "AnyTypeCheck ECMASCRIPT_BIGINT_TYPE" //! INST_NEXT "GetAnyTypeName ECMASCRIPT_BIGINT_TYPE" +//! INST_NOT "Intrinsic.TypeofDyn" //! METHOD "test_type_symbol" -//! PASS_AFTER "TypesResolving" +//! PASS_BEFORE "Scheduler" //! INST "AnyTypeCheck ECMASCRIPT_SYMBOL_TYPE" //! INST_NEXT "GetAnyTypeName ECMASCRIPT_SYMBOL_TYPE" +//! INST_NOT "Intrinsic.TypeofDyn" //! METHOD "test_type_function" -//! PASS_AFTER "TypesResolving" +//! PASS_BEFORE "Scheduler" //! INST "AnyTypeCheck ECMASCRIPT_CALLABLE_TYPE" //! INST_NEXT "GetAnyTypeName ECMASCRIPT_CALLABLE_TYPE" +//! INST_NOT "Intrinsic.TypeofDyn" //! METHOD "test_type_object" -//! PASS_AFTER "TypesResolving" +//! PASS_BEFORE "Scheduler" +//! INST "Intrinsic.TypeofDyn" //! INST_NOT "AnyTypeCheck ECMASCRIPT_HEAP_OBJECT_TYPE" //! INST_NOT "GetAnyTypeName"