From d397cdce7b20a45ef6b0a9b00563c7c7b6a19c10 Mon Sep 17 00:00:00 2001 From: Andrey Efremov Date: Tue, 31 Oct 2023 18:54:40 +0300 Subject: [PATCH] Refactor setting intrinsic inputs and input types Signed-off-by: Andrey Efremov --- .../optimizations/inline_call_intrinsics.cpp | 36 ++++++------------- 1 file changed, 10 insertions(+), 26 deletions(-) diff --git a/compiler/optimizer/optimizations/inline_call_intrinsics.cpp b/compiler/optimizer/optimizations/inline_call_intrinsics.cpp index bfdc1f08f..b8b2e6a3a 100644 --- a/compiler/optimizer/optimizations/inline_call_intrinsics.cpp +++ b/compiler/optimizer/optimizations/inline_call_intrinsics.cpp @@ -57,12 +57,7 @@ Inst *InlineCallIntrinsics::CreateAllocDynObjIntrinsic(Inst *ctor, SaveStateInst { auto alloc_obj = GetGraph()->CreateInstIntrinsic(DataType::ANY, pc, RuntimeInterface::IntrinsicId::INTRINSIC_ALLOC_DYN_OBJECT); - alloc_obj->ReserveInputs(2); - alloc_obj->AllocateInputTypes(GetGraph()->GetAllocator(), 2); - alloc_obj->AppendInput(ctor); - alloc_obj->AddInputType(DataType::ANY); - alloc_obj->AppendInput(ss); - alloc_obj->AddInputType(DataType::NO_TYPE); + alloc_obj->SetInputs(GetGraph()->GetAllocator(), {{ctor, DataType::ANY}, {ss, DataType::NO_TYPE}}); return alloc_obj; } @@ -72,18 +67,13 @@ Inst *InlineCallIntrinsics::NewObjCreateConstructorCall(Inst *orig_call, Inst *a auto call_ctor = GetGraph()->CreateInstCallDynamic(DataType::ANY, pc); call_ctor->ReserveInputs(orig_call->GetInputsCount() + 1); call_ctor->AllocateInputTypes(GetGraph()->GetAllocator(), orig_call->GetInputsCount() + 1); - call_ctor->AppendInput(orig_call->GetInput(1)); - call_ctor->AddInputType(DataType::ANY); - call_ctor->AppendInput(orig_call->GetInput(2)); - call_ctor->AddInputType(DataType::ANY); - call_ctor->AppendInput(alloc_obj); - call_ctor->AddInputType(DataType::ANY); + call_ctor->AppendInputs({{orig_call->GetInput(1).GetInst(), DataType::ANY}, + {orig_call->GetInput(2).GetInst(), DataType::ANY}, + {alloc_obj, DataType::ANY}}); for (size_t i = 3; i < orig_call->GetInputsCount() - 1; ++i) { - call_ctor->AppendInput(orig_call->GetInput(i)); - call_ctor->AddInputType(orig_call->GetInputType(i)); + call_ctor->AppendInputAndType(orig_call->GetInput(i).GetInst(), orig_call->GetInputType(i)); } - call_ctor->AppendInput(ss); - call_ctor->AddInputType(DataType::NO_TYPE); + call_ctor->AppendInputAndType(ss, DataType::NO_TYPE); return call_ctor; } @@ -140,16 +130,10 @@ Inst *InlineCallIntrinsics::NewObjResolveCtorResult(InstAppender *appender, Inst auto resolve_result = GetGraph()->CreateInstIntrinsic( DataType::ANY, pc, RuntimeInterface::IntrinsicId::INTRINSIC_RESOLVE_ALLOC_RESULT); - resolve_result->ReserveInputs(4); - resolve_result->AllocateInputTypes(GetGraph()->GetAllocator(), 4); - resolve_result->AppendInput(orig_alloc->GetInput(1)); - resolve_result->AddInputType(DataType::ANY); - resolve_result->AppendInput(alloc_obj); - resolve_result->AddInputType(DataType::ANY); - resolve_result->AppendInput(call_ctor); - resolve_result->AddInputType(DataType::ANY); - resolve_result->AppendInput(ss_copy_2); - resolve_result->AddInputType(DataType::NO_TYPE); + resolve_result->SetInputs(GetGraph()->GetAllocator(), {{orig_alloc->GetInput(1).GetInst(), DataType::ANY}, + {alloc_obj, DataType::ANY}, + {call_ctor, DataType::ANY}, + {ss_copy_2, DataType::NO_TYPE}}); resolve_result->SetInlined(true); appender->Append({ss_copy_2, resolve_result}); -- Gitee