• Home
  • Raw
  • Download

Lines Matching +full:allocator +full:-

2  * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
7 * http://www.apache.org/licenses/LICENSE-2.0
28 // 'length' property, and cannot be iterated by for-of statements in SetPossibleTupleType()
29 auto *const spreadType = spreadArgument->TsType(); in SetPossibleTupleType()
30 if (spreadType->IsETSTupleType()) { in SetPossibleTupleType()
31 arrIdent->SetTsType(spreadType); in SetPossibleTupleType()
39 auto *const allocator = ctx->allocator; in CreateSpreadArrayDeclareStatements() local
40 auto *const parser = ctx->parser->AsETSParser(); in CreateSpreadArrayDeclareStatements()
41 for (auto element : array->Elements()) { in CreateSpreadArrayDeclareStatements()
42 if (element->Type() != ir::AstNodeType::SPREAD_ELEMENT) { in CreateSpreadArrayDeclareStatements()
45 ir::Identifier *const arrIdent = Gensym(allocator); in CreateSpreadArrayDeclareStatements()
46 auto *const spreadArgument = element->AsSpreadElement()->Argument(); in CreateSpreadArrayDeclareStatements()
47 auto *const initExpr = spreadArgument->Clone(allocator, nullptr); in CreateSpreadArrayDeclareStatements()
50 …statements.emplace_back(parser->CreateFormattedStatement("let @@I1 = (@@E2);", arrIdent, initExpr)… in CreateSpreadArrayDeclareStatements()
58 auto *const allocator = ctx->allocator; in CreateNewArrayLengthStatement() local
59 auto *const parser = ctx->parser->AsETSParser(); in CreateNewArrayLengthStatement()
60 ir::Identifier *newArrayLengthId = Gensym(allocator); in CreateNewArrayLengthStatement()
62 std::vector<ir::AstNode *> nodesWaitingInsert {newArrayLengthId->Clone(allocator, nullptr)}; in CreateNewArrayLengthStatement()
65 const size_t normalElementCount = array->Elements().size() - spreadArrayIds.size(); in CreateNewArrayLengthStatement()
68 if (spaId->TsType() != nullptr && spaId->TsType()->IsETSTupleType()) { in CreateNewArrayLengthStatement()
69 lengthString << "(" << spaId->TsType()->AsETSTupleType()->GetTupleSize() << ") + "; in CreateNewArrayLengthStatement()
72 nodesWaitingInsert.emplace_back(spaId->Clone(allocator, nullptr)); in CreateNewArrayLengthStatement()
77 …ir::Statement *newArrayLengthStatement = parser->CreateFormattedStatement(lengthString.str(), node… in CreateNewArrayLengthStatement()
86 auto *const checker = ctx->checker->AsETSChecker(); in CreateNewArrayDeclareStatement()
87 auto *const allocator = ctx->allocator; in CreateNewArrayDeclareStatement() local
88 auto *const parser = ctx->parser->AsETSParser(); in CreateNewArrayDeclareStatement()
89 ir::Identifier *newArrayId = Gensym(allocator); in CreateNewArrayDeclareStatement()
90 checker::Type *arrayElementType = checker->GetElementTypeOfArray(array->TsType()); in CreateNewArrayDeclareStatement()
97 …// But now cast Expression doesn't support built-in array (cast fatherType[] to sonType[]), … in CreateNewArrayDeclareStatement()
101 …arrayElementType = checker->CreateETSUnionType({arrayElementType, checker->GlobalETSUndefinedType(… in CreateNewArrayDeclareStatement()
105 if (array->TsType()->IsETSResizableArrayType()) { in CreateNewArrayDeclareStatement()
112 ir::Statement *newArrayDeclareSt = parser->CreateFormattedStatement( in CreateNewArrayDeclareStatement()
113 …newArrayDeclareStr.str(), newArrayId->Clone(allocator, nullptr), arrayElementType, arrayElementTyp… in CreateNewArrayDeclareStatement()
114 newArrayLengthId->Clone(allocator, nullptr)); in CreateNewArrayDeclareStatement()
120 static std::string GenerateNewTupleInitList(ArenaAllocator *allocator, ir::ArrayExpression *array, in GenerateNewTupleInitList() argument
125 for (auto *element : array->Elements()) { in GenerateNewTupleInitList()
126 if (element->IsSpreadElement()) { in GenerateNewTupleInitList()
128 ES2PANDA_ASSERT(element->AsSpreadElement()->Argument()->TsType()->IsETSTupleType()); in GenerateNewTupleInitList()
129 …auto *const argumentTupleType = element->AsSpreadElement()->Argument()->TsType()->AsETSTupleType(); in GenerateNewTupleInitList()
135 for (std::size_t idx = 0; idx < argumentTupleType->GetTupleSize(); idx++) { in GenerateNewTupleInitList()
138 … elementNodes.emplace_back(element->Clone(allocator, nullptr)->AsSpreadElement()->Argument()); in GenerateNewTupleInitList()
142 elementNodes.emplace_back(element->Clone(allocator, nullptr)); in GenerateNewTupleInitList()
152 auto *const parser = ctx->parser->AsETSParser(); in GenerateTupleInitExpr()
153 auto *const allocator = ctx->allocator; in GenerateTupleInitExpr() local
159 newTupleExpr << GenerateNewTupleInitList(allocator, array, arrayExprElementNodes); in GenerateTupleInitExpr()
162 return parser->CreateFormattedExpression(newTupleExpr.str(), arrayExprElementNodes); in GenerateTupleInitExpr()
168 auto *const allocator = ctx->allocator; in CreateNewTupleDeclareStatement() local
169 auto *const parser = ctx->parser->AsETSParser(); in CreateNewTupleDeclareStatement()
170 ir::Identifier *newTupleId = Gensym(allocator); in CreateNewTupleDeclareStatement()
172 checker::ETSTupleType *tupleType = array->TsType()->AsETSTupleType(); in CreateNewTupleDeclareStatement()
179 ir::Statement *newTupleInitStmt = parser->CreateFormattedStatement( in CreateNewTupleDeclareStatement()
180 … newArrayDeclareStr.str(), newTupleId->Clone(allocator, nullptr), tupleType, tupleCreationExpr); in CreateNewTupleDeclareStatement()
191 auto *const allocator = ctx->allocator; in CreateElementsAssignStatementBySpreadArr() local
192 auto *const parser = ctx->parser->AsETSParser(); in CreateElementsAssignStatementBySpreadArr()
203 ir::Statement *elementsAssignStatement = parser->CreateFormattedStatement( in CreateElementsAssignStatementBySpreadArr()
204 …elementsAssignStr.str(), spreadArrIterator->Clone(allocator, nullptr), spId->Clone(allocator, null… in CreateElementsAssignStatementBySpreadArr()
205 newArrayId->Clone(allocator, nullptr), newArrayIndexId->Clone(allocator, nullptr), in CreateElementsAssignStatementBySpreadArr()
206 …spreadArrIterator->Clone(allocator, nullptr), arrayElementType, newArrayIndexId->Clone(allocator, … in CreateElementsAssignStatementBySpreadArr()
214 auto *const allocator = ctx->allocator; in CreateElementsAssignStatementBySingle() local
215 auto *const parser = ctx->parser->AsETSParser(); in CreateElementsAssignStatementBySingle()
222 ir::Statement *elementsAssignStatement = parser->CreateFormattedStatement( in CreateElementsAssignStatementBySingle()
223 …elementsAssignStr.str(), newArrayId->Clone(allocator, nullptr), newArrayIndexId->Clone(allocator, … in CreateElementsAssignStatementBySingle()
224 element->Clone(allocator, nullptr), newArrayIndexId->Clone(allocator, nullptr)); in CreateElementsAssignStatementBySingle()
232 auto *const allocator = ctx->allocator; in CreateElementsAssignForTupleElements() local
233 auto *const parser = ctx->parser->AsETSParser(); in CreateElementsAssignForTupleElements()
237 ES2PANDA_ASSERT(spId->TsType()->IsETSTupleType()); in CreateElementsAssignForTupleElements()
238 const auto *const spreadType = spId->TsType()->AsETSTupleType(); in CreateElementsAssignForTupleElements()
241 for (size_t idx = 0; idx < spreadType->GetTupleTypesList().size(); ++idx) { in CreateElementsAssignForTupleElements()
243 auto *elementType = spreadType->GetTupleTypesList()[idx]; in CreateElementsAssignForTupleElements()
246 tupleAssignmentStatements.emplace_back(parser->CreateFormattedStatement( in CreateElementsAssignForTupleElements()
247 tupleAssignmentsStr.str(), newArrayId->Clone(allocator, nullptr), in CreateElementsAssignForTupleElements()
248 … newArrayIndexId->Clone(allocator, nullptr), spId->Clone(allocator, nullptr), elementType, in CreateElementsAssignForTupleElements()
249 newArrayIndexId->Clone(allocator, nullptr))); in CreateElementsAssignForTupleElements()
258 auto *const allocator = ctx->allocator; in CreateReturnStatement() local
259 auto *const parser = ctx->parser->AsETSParser(); in CreateReturnStatement()
265 if (array->TsType()->IsETSResizableArrayType()) { in CreateReturnStatement()
268allocator->New<ir::OpaqueTypeNode>(array->TsType()->AsETSResizableArrayType()->ElementType(), allo… in CreateReturnStatement()
271 ir::Statement *returnStatement = parser->CreateFormattedStatement(ss.str(), nodes); in CreateReturnStatement()
280 auto *const allocator = ctx->allocator; in CreateNewArrayElementsAssignStatement() local
284 for (auto *element : array->Elements()) { in CreateNewArrayElementsAssignStatement()
285 if (element->IsSpreadElement()) { in CreateNewArrayElementsAssignStatement()
286 if (element->AsSpreadElement()->Argument()->TsType()->IsETSTupleType()) { in CreateNewArrayElementsAssignStatement()
292 ir::Identifier *spreadArrIterator = Gensym(allocator); in CreateNewArrayElementsAssignStatement()
293 …checker::Type *arrayElementType = ctx->checker->AsETSChecker()->GetElementTypeOfArray(array->TsTyp… in CreateNewArrayElementsAssignStatement()
302 … statements.emplace_back(CreateReturnStatement(ctx, newArrayId->Clone(allocator, nullptr), array)); in CreateNewArrayElementsAssignStatement()
324 auto *const parser = ctx->parser->AsETSParser(); in CreateLoweredExpressionForArray()
325 auto *const allocator = ctx->allocator; in CreateLoweredExpressionForArray() local
326 ArenaVector<ir::Statement *> statements(allocator->Adapter()); in CreateLoweredExpressionForArray()
335 ir::Identifier *newArrayIndexId = Gensym(allocator); in CreateLoweredExpressionForArray()
337 … parser->CreateFormattedStatement("let @@I1 = 0", newArrayIndexId->Clone(allocator, nullptr))); in CreateLoweredExpressionForArray()
338 std::vector<ir::AstNode *> newArrayAndIndex {newArrayId->Clone(allocator, nullptr), in CreateLoweredExpressionForArray()
339 newArrayIndexId->Clone(allocator, nullptr)}; in CreateLoweredExpressionForArray()
342 return ctx->AllocNode<ir::BlockExpression>(std::move(statements)); in CreateLoweredExpressionForArray()
351 auto *const checker = ctx->checker->AsETSChecker(); in CreateLoweredExpressionForTuple()
352 auto *const parser = ctx->parser->AsETSParser(); in CreateLoweredExpressionForTuple()
353 auto *const allocator = ctx->allocator; in CreateLoweredExpressionForTuple() local
355 ArenaVector<ir::Statement *> statements(allocator->Adapter()); in CreateLoweredExpressionForTuple()
358 …statements.emplace_back(parser->CreateFormattedStatement("@@I1;", newTupleId->Clone(allocator, nul… in CreateLoweredExpressionForTuple()
359 return checker->AllocNode<ir::BlockExpression>(std::move(statements)); in CreateLoweredExpressionForTuple()
364 checker::ETSChecker *const checker = ctx->checker->AsETSChecker(); in PerformForModule()
365 varbinder::ETSBinder *const varbinder = checker->VarBinder()->AsETSBinder(); in PerformForModule()
367 program->Ast()->TransformChildrenRecursively( in PerformForModule()
368 [&checker, &varbinder, &ctx](ir::AstNode *const node) -> AstNodePtr { in PerformForModule()
369 if (node->IsArrayExpression() && in PerformForModule()
370 …std::any_of(node->AsArrayExpression()->Elements().begin(), node->AsArrayExpression()->Elements().e… in PerformForModule()
371 … [](const auto *param) { return param->Type() == ir::AstNodeType::SPREAD_ELEMENT; })) { in PerformForModule()
373 … varbinder::LexicalScope<varbinder::Scope>::Enter(checker->VarBinder(), NearestScope(node)); in PerformForModule()
375 const auto *const arrayExprType = node->AsArrayExpression()->TsType(); in PerformForModule()
377 arrayExprType->IsETSArrayType() || arrayExprType->IsETSResizableArrayType() in PerformForModule()
378 ? CreateLoweredExpressionForArray(ctx, node->AsArrayExpression()) in PerformForModule()
379 : CreateLoweredExpressionForTuple(ctx, node->AsArrayExpression()); in PerformForModule()
380 blockExpression->SetParent(node->Parent()); in PerformForModule()
382 … // NOTE: this blockExpression is a kind of formatted-dummy code, which is invisible to users, in PerformForModule()
384 blockExpression->SetRange(node->Range()); in PerformForModule()
385 for (auto st : blockExpression->Statements()) { in PerformForModule()
386 SetSourceRangesRecursively(st, node->Range()); in PerformForModule()
388 Recheck(ctx->phaseManager, varbinder, checker, blockExpression); in PerformForModule()