diff --git a/compiler/optimizer/ir_builder/ecmascript_inst_builder.cpp b/compiler/optimizer/ir_builder/ecmascript_inst_builder.cpp index d08c2a7019ea49b71b61b3c894751651e782a423..a598059e10f8f85d60f061cafafc47d475d07e18 100644 --- a/compiler/optimizer/ir_builder/ecmascript_inst_builder.cpp +++ b/compiler/optimizer/ir_builder/ecmascript_inst_builder.cpp @@ -131,9 +131,6 @@ namespace panda::compiler { template void InstBuilder::BuildStGlobalVar(const BytecodeInstruction *bc_inst, size_t type_id) { - if (GetGraph()->IsBytecodeOptimizer()) { - BuildEcmaAsIntrinsics(bc_inst); - } auto pc = GetPc(bc_inst->GetAddress()); auto save_state = CreateSaveState(Opcode::SaveState, pc); auto get_address = graph_->CreateInstGetGlobalVarAddress(DataType::REFERENCE, pc); @@ -165,9 +162,6 @@ void InstBuilder::BuildStGlobalVar(const BytecodeInstruction *bc_inst, size_t ty template void InstBuilder::BuildLdGlobalVar(const BytecodeInstruction *bc_inst, size_t type_id) { - if (GetGraph()->IsBytecodeOptimizer()) { - BuildEcmaAsIntrinsics(bc_inst); - } auto pc = GetPc(bc_inst->GetAddress()); auto save_state = CreateSaveState(Opcode::SaveState, pc); auto get_address = graph_->CreateInstGetGlobalVarAddress(DataType::REFERENCE, pc); diff --git a/compiler/optimizer/ir_builder/ecmascript_inst_templates.yaml b/compiler/optimizer/ir_builder/ecmascript_inst_templates.yaml index b742a1c16e98f9b0a8909c0c06080245f0870cec..1188ad306392a84c3775c07325ef8b5179b036f9 100644 --- a/compiler/optimizer/ir_builder/ecmascript_inst_templates.yaml +++ b/compiler/optimizer/ir_builder/ecmascript_inst_templates.yaml @@ -69,9 +69,17 @@ BuildEcmaFnCall(instruction, true, true); } % when "STGLOBALVAR" - BuildStGlobalVar< <%= inst.acc_read? %> >(instruction, instruction->template GetId<<%= inst.get_format %>>().AsFileId().GetOffset()); + if (graph_->IsBytecodeOptimizer()) { + BuildEcma(instruction); + } else { + BuildStGlobalVar< <%= inst.acc_read? %> >(instruction, instruction->template GetId<<%= inst.get_format %>>().AsFileId().GetOffset()); + } % when "LDGLOBALVAR" - BuildLdGlobalVar< <%= inst.acc_write? %> >(instruction, instruction->template GetId<<%= inst.get_format %>>().AsFileId().GetOffset()); + if (graph_->IsBytecodeOptimizer()) { + BuildEcma(instruction); + } else { + BuildLdGlobalVar< <%= inst.acc_write? %> >(instruction, instruction->template GetId<<%= inst.get_format %>>().AsFileId().GetOffset()); + } % when "NEWOBJDYNRANGE" if (graph_->IsBytecodeOptimizer()) { BuildEcma(instruction); diff --git a/runtime/intrinsics-inl.h b/runtime/intrinsics-inl.h index 2d9dc1454f4b12be443d6bd08c3259db47cfcf12..240ef3494ac10fc034e77634a1579b7582ed91ba 100644 --- a/runtime/intrinsics-inl.h +++ b/runtime/intrinsics-inl.h @@ -1085,8 +1085,8 @@ INLINE_ECMA_INTRINSICS uint64_t StObjByIndex(JSThread *thread, uint32_t idx, uin return SlowRuntimeStub::StObjByIndex(thread, obj, idx, val).GetRawData(); } -static inline bool GetLeftRightInt(JSThread *thread, uint64_t lhs, uint64_t rhs, bool isULeft, bool isURight, - int32_t &left, int32_t &right) +ARK_INLINE inline static bool GetLeftRightInt(JSThread *thread, uint64_t lhs, uint64_t rhs, bool isULeft, + bool isURight, int32_t &left, int32_t &right) { auto jleft = JSTaggedValue(lhs); auto jright = JSTaggedValue(rhs);