diff --git a/compiler/optimizer/optimizations/inline_call_intrinsics.cpp b/compiler/optimizer/optimizations/inline_call_intrinsics.cpp index bb2db56464b5a439940ce9177fdce75c1532201a..cb41d4399f67f05e3d5d863dc9b3a5e459c077a1 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 2d5988c0deb9b7548d04d4b7d734f9783a38c20a..4f714b069144462f01f9a97e6a1b95fa64a140cc 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);