From 9c4eef6a738764ce30d813ef5c69622d974aa563 Mon Sep 17 00:00:00 2001 From: vagin ivan Date: Fri, 9 Sep 2022 13:47:03 +0300 Subject: [PATCH] Some fixes for interpreter performance Signed-off-by: vagin ivan --- .../optimizer/ir_builder/ecmascript_inst_builder.cpp | 6 ------ .../ir_builder/ecmascript_inst_templates.yaml | 12 ++++++++++-- runtime/intrinsics-inl.h | 4 ++-- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/compiler/optimizer/ir_builder/ecmascript_inst_builder.cpp b/compiler/optimizer/ir_builder/ecmascript_inst_builder.cpp index d08c2a701..a598059e1 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 b742a1c16..1188ad306 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 2d9dc1454..240ef3494 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); -- Gitee