From 4769e25fd54bd0126a82415f65bd11057a0de90e Mon Sep 17 00:00:00 2001 From: Mikhail Kaskov Date: Tue, 22 Aug 2023 18:47:55 +0300 Subject: [PATCH] Extended SaveStateInst for append BRIDGE Signed-off-by: Mikhail Kaskov --- .../optimizations/inline_call_intrinsics.cpp | 12 +++--------- .../templates/ecmascript_inst_builder_gen.cpp.erb | 3 +-- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/compiler/optimizer/optimizations/inline_call_intrinsics.cpp b/compiler/optimizer/optimizations/inline_call_intrinsics.cpp index bb2db5646..cb41d4399 100644 --- a/compiler/optimizer/optimizations/inline_call_intrinsics.cpp +++ b/compiler/optimizer/optimizations/inline_call_intrinsics.cpp @@ -124,9 +124,7 @@ Inst *InlineCallIntrinsics::NewObjFillCallConstructorBlock(InstAppender *appende ss_copy->AppendInput(ss->GetInput(input_idx)); ss_copy->SetVirtualRegister(input_idx, ss->GetVirtualRegister(input_idx)); } - ss_copy->AppendInput(alloc_obj); - VirtualRegister vreg {VirtualRegister::BRIDGE, VRegType::VREG}; - ss_copy->SetVirtualRegister(ss->GetInputsCount(), vreg); + ss_copy->AppendBridge(alloc_obj); auto call_ctor = NewObjCreateConstructorCall(orig_alloc, alloc_obj, ss_copy, pc); appender->Append({ss_copy, call_ctor}); @@ -143,9 +141,7 @@ Inst *InlineCallIntrinsics::NewObjResolveCtorResult(InstAppender *appender, Inst ss_copy_2->AppendInput(ss->GetInput(input_idx)); ss_copy_2->SetVirtualRegister(input_idx, ss->GetVirtualRegister(input_idx)); } - ss_copy_2->AppendInput(call_ctor); - VirtualRegister vreg {VirtualRegister::BRIDGE, VRegType::VREG}; - ss_copy_2->SetVirtualRegister(ss->GetInputsCount(), vreg); + ss_copy_2->AppendBridge(call_ctor); auto resolve_result = GetGraph()->CreateInstIntrinsic( DataType::ANY, pc, RuntimeInterface::IntrinsicId::INTRINSIC_RESOLVE_ALLOC_RESULT); @@ -318,9 +314,7 @@ void InlineCallIntrinsics::BuildGuard(Inst *inst, uintptr_t target) auto save_state = inst->GetSaveState(); ASSERT(save_state); save_state->InsertBefore(load_function); - save_state->AppendInput(load_function); - VirtualRegister vreg {VirtualRegister::BRIDGE, VRegType::VREG}; - save_state->SetVirtualRegister(save_state->GetInputsCount() - 1, vreg); + save_state->AppendBridge(load_function); inst->InsertBefore(cmp_inst); inst->InsertBefore(deopt_inst); } diff --git a/compiler/templates/ecmascript_inst_builder_gen.cpp.erb b/compiler/templates/ecmascript_inst_builder_gen.cpp.erb index 2d5988c0d..4f714b069 100644 --- a/compiler/templates/ecmascript_inst_builder_gen.cpp.erb +++ b/compiler/templates/ecmascript_inst_builder_gen.cpp.erb @@ -160,8 +160,7 @@ void InstBuilder::BuildEcmaAsIntrinsics(const BytecodeInstruction* bc_inst) // N if (!GetGraph()->IsBytecodeOptimizer()) { load_from_pool = graph_->CreateInstLoadFromConstantPool(DataType::ANY, inst->GetPc()); load_from_pool->SetInput(0, GetEnvDefinition(CONST_POOL_IDX)); - auto num_user = inst_save_state->AppendInput(load_from_pool); - inst_save_state->SetVirtualRegister(num_user, VirtualRegister(VirtualRegister::BRIDGE, VRegType::VREG)); + inst_save_state->AppendBridge(load_from_pool); AddInstruction(load_from_pool); inst->AppendInput(load_from_pool); inst->AddInputType(DataType::ANY); -- Gitee