Lines Matching +full:allocator +full:-
7 * http://www.apache.org/licenses/LICENSE-2.0
31 auto *allocator = context->allocator; in CreateRestArgsBlockExpression() local
32 auto *parser = context->parser->AsETSParser(); in CreateRestArgsBlockExpression()
33 auto *checker = context->checker->AsETSChecker(); in CreateRestArgsBlockExpression()
35 ArenaVector<ir::Statement *> blockStatements(allocator->Adapter()); in CreateRestArgsBlockExpression()
36 const auto arraySymbol = Gensym(allocator); in CreateRestArgsBlockExpression()
37 const auto argumentSymbol = Gensym(allocator); in CreateRestArgsBlockExpression()
38 const auto iteratorIndex = Gensym(allocator); in CreateRestArgsBlockExpression()
39 const auto iteratorSymbol = Gensym(allocator); in CreateRestArgsBlockExpression()
40 const auto elementType = checker->GetElementTypeOfArray(spreadElement->Argument()->TsType()); in CreateRestArgsBlockExpression()
41 auto *typeNode = allocator->New<ir::OpaqueTypeNode>(elementType, allocator); in CreateRestArgsBlockExpression()
43 … parser->CreateFormattedStatement("let @@I1 = @@E2;", argumentSymbol, spreadElement->Argument())); in CreateRestArgsBlockExpression()
44 blockStatements.push_back(parser->CreateFormattedStatement("let @@I1 = 0;", iteratorIndex)); in CreateRestArgsBlockExpression()
45 …blockStatements.push_back(parser->CreateFormattedStatement("let @@I1 = new Array<@@T2>(@@I3.length… in CreateRestArgsBlockExpression()
46 … typeNode, argumentSymbol->Clone(allocator, nullptr))); in CreateRestArgsBlockExpression()
51 args.emplace_back(argumentSymbol->Clone(allocator, nullptr)); in CreateRestArgsBlockExpression()
53 args.emplace_back(arraySymbol->Clone(allocator, nullptr)); in CreateRestArgsBlockExpression()
55 args.emplace_back(iteratorIndex->Clone(allocator, nullptr)); in CreateRestArgsBlockExpression()
56 args.emplace_back(iteratorSymbol->Clone(allocator, nullptr)); in CreateRestArgsBlockExpression()
58 args.emplace_back(iteratorIndex->Clone(allocator, nullptr)); in CreateRestArgsBlockExpression()
59 args.emplace_back(iteratorIndex->Clone(allocator, nullptr)); in CreateRestArgsBlockExpression()
61 ir::Statement *loopStatement = parser->CreateFormattedStatement(ss.str(), args); in CreateRestArgsBlockExpression()
64 …blockStatements.push_back(parser->CreateFormattedStatement("@@I1", arraySymbol->Clone(allocator, n… in CreateRestArgsBlockExpression()
65 …auto *blockExpr = util::NodeAllocator::ForceSetParent<ir::BlockExpression>(allocator, std::move(bl… in CreateRestArgsBlockExpression()
74 blockExpression->SetParent(spreadElement->Parent()); in ConvertSpreadToBlockExpression()
75 blockExpression->SetRange(spreadElement->Range()); in ConvertSpreadToBlockExpression()
77 for (auto *statement : blockExpression->Statements()) { in ConvertSpreadToBlockExpression()
78 SetSourceRangesRecursively(statement, spreadElement->Range()); in ConvertSpreadToBlockExpression()
85 …return signature != nullptr && signature->HasRestParameter() && !signature->RestVar()->TsType()->I… in ShouldProcessRestParameters()
86 …arguments.size() >= signature->Params().size() && !signature->RestVar()->TsType()->IsETSTupleType(… in ShouldProcessRestParameters()
92 auto *allocator = context->allocator; in CreateRestArgsArray() local
93 auto *parser = context->parser->AsETSParser(); in CreateRestArgsArray()
94 auto *checker = context->checker->AsETSChecker(); in CreateRestArgsArray()
97 const size_t extraArgs = arguments.size() - signature->Params().size(); in CreateRestArgsArray()
98 if (extraArgs == 1 && arguments.back()->IsSpreadElement()) { in CreateRestArgsArray()
99 return ConvertSpreadToBlockExpression(context, arguments.back()->AsSpreadElement()); in CreateRestArgsArray()
102 checker::Type *arrayType = signature->RestVar()->TsType(); in CreateRestArgsArray()
103 …auto *type = checker->AllocNode<ir::OpaqueTypeNode>(checker->GetElementTypeOfArray(arrayType), all… in CreateRestArgsArray()
105 return parser->CreateFormattedExpression("new Array<@@T1>(0)", type); in CreateRestArgsArray()
108 …ArenaVector<ir::Expression *> copiedArguments(arguments.begin() + signature->Params().size(), argu… in CreateRestArgsArray()
109 allocator->Adapter()); in CreateRestArgsArray()
112 auto *genSymIdent = Gensym(allocator); in CreateRestArgsArray()
115 … auto *arrayExpr = checker->AllocNode<ir::ArrayExpression>(std::move(copiedArguments), allocator); in CreateRestArgsArray()
118 …parser->CreateFormattedExpression(ss.str(), genSymIdent, type, arrayExpr, type->Clone(allocator, n… in CreateRestArgsArray()
119 genSymIdent->Clone(allocator, nullptr)); in CreateRestArgsArray()
126 auto *allocator = context->allocator; in RebuildCallExpression() local
127 auto *varbinder = context->checker->VarBinder()->AsETSBinder(); in RebuildCallExpression()
128 ArenaVector<ir::Expression *> newArgs(allocator->Adapter()); in RebuildCallExpression()
130 for (size_t i = 0; i < signature->Params().size(); ++i) { in RebuildCallExpression()
131 newArgs.push_back(originalCall->Arguments()[i]); in RebuildCallExpression()
132 newArgs[i]->SetBoxingUnboxingFlags(ir::BoxingUnboxingFlags::NONE); in RebuildCallExpression()
137 …ewCall = util::NodeAllocator::ForceSetParent<ir::CallExpression>(allocator, originalCall->Callee(), in RebuildCallExpression()
140 restArgsArray->SetParent(newCall); in RebuildCallExpression()
141 newCall->SetParent(originalCall->Parent()); in RebuildCallExpression()
142 newCall->AddModifier(originalCall->Modifiers()); in RebuildCallExpression()
143 newCall->AddBoxingUnboxingFlags(originalCall->GetBoxingUnboxingFlags()); in RebuildCallExpression()
144 newCall->SetTypeParams(originalCall->TypeParams()); in RebuildCallExpression()
145 newCall->AddAstNodeFlags(ir::AstNodeFlags::RESIZABLE_REST); in RebuildCallExpression()
147 auto *scope = NearestScope(newCall->Parent()); in RebuildCallExpression()
149 …CheckLoweredNode(context->checker->VarBinder()->AsETSBinder(), context->checker->AsETSChecker(), n… in RebuildCallExpression()
150 newCall->RemoveAstNodeFlags(ir::AstNodeFlags::RESIZABLE_REST); in RebuildCallExpression()
158 auto *allocator = context->allocator; in RebuildNewClassInstanceExpression() local
159 ArenaVector<ir::Expression *> newArgs(allocator->Adapter()); in RebuildNewClassInstanceExpression()
161 for (size_t i = 0; i < signature->Params().size(); ++i) { in RebuildNewClassInstanceExpression()
162 newArgs.push_back(originalCall->GetArguments()[i]); in RebuildNewClassInstanceExpression()
168 …allocator, originalCall->GetTypeRef()->Clone(allocator, nullptr)->AsETSTypeReference(), std::move(… in RebuildNewClassInstanceExpression()
170 restArgsArray->SetParent(newCall); in RebuildNewClassInstanceExpression()
171 newCall->SetParent(originalCall->Parent()); in RebuildNewClassInstanceExpression()
172 newCall->AddModifier(originalCall->Modifiers()); in RebuildNewClassInstanceExpression()
173 newCall->AddBoxingUnboxingFlags(originalCall->GetBoxingUnboxingFlags()); in RebuildNewClassInstanceExpression()
174 auto *scope = NearestScope(newCall->Parent()); in RebuildNewClassInstanceExpression()
175 …auto bscope = varbinder::LexicalScope<varbinder::Scope>::Enter(context->checker->VarBinder()->AsET… in RebuildNewClassInstanceExpression()
176 …CheckLoweredNode(context->checker->VarBinder()->AsETSBinder(), context->checker->AsETSChecker(), n… in RebuildNewClassInstanceExpression()
183 checker::Signature *signature = expr->GetSignature(); in TransformCallConstructWithRestArgs()
184 if (!ShouldProcessRestParameters(signature, expr->GetArguments())) { in TransformCallConstructWithRestArgs()
188 auto *restArgsArray = CreateRestArgsArray(context, expr->GetArguments(), signature); in TransformCallConstructWithRestArgs()
189 restArgsArray->AddAstNodeFlags(ir::AstNodeFlags::RESIZABLE_REST); in TransformCallConstructWithRestArgs()
197 checker::Type *calleeType = callExpr->Callee()->TsType(); in TransformCallExpressionWithRestArgs()
198 if (calleeType == nullptr || calleeType->IsETSDynamicType() || calleeType->IsETSArrowType()) { in TransformCallExpressionWithRestArgs()
202 checker::Signature *signature = callExpr->Signature(); in TransformCallExpressionWithRestArgs()
203 if (!ShouldProcessRestParameters(signature, callExpr->Arguments())) { in TransformCallExpressionWithRestArgs()
207 auto *restArgsArray = CreateRestArgsArray(context, callExpr->Arguments(), signature); in TransformCallExpressionWithRestArgs()
208 restArgsArray->AddAstNodeFlags(ir::AstNodeFlags::RESIZABLE_REST); in TransformCallExpressionWithRestArgs()
215 program->Ast()->TransformChildrenRecursively( in PerformForModule()
216 [this, ctx](ir::AstNode *node) -> AstNodePtr { in PerformForModule()
217 if (node->IsCallExpression()) { in PerformForModule()
218 return TransformCallExpressionWithRestArgs(node->AsCallExpression(), ctx); in PerformForModule()
220 if (node->IsETSNewClassInstanceExpression()) { in PerformForModule()
221 … return TransformCallConstructWithRestArgs(node->AsETSNewClassInstanceExpression(), ctx); in PerformForModule()