• Home
  • Raw
  • Download

Lines Matching +full:allocator +full:-

2  * Copyright (c) 2021-2024 Huawei Device Co., Ltd.
7 * http://www.apache.org/licenses/LICENSE-2.0
53 if (scope->IsGlobalScope()) { in ProcessCheckerNode()
56 scope = checker->VarBinder()->Program()->GlobalClassScope(); in ProcessCheckerNode()
59 …auto expressionCtx = varbinder::LexicalScope<varbinder::Scope>::Enter(checker->VarBinder(), scope); in ProcessCheckerNode()
60 checker->VarBinder()->AsETSBinder()->ResolveReference(node); in ProcessCheckerNode()
62 if (node->IsMethodDefinition()) { in ProcessCheckerNode()
65 auto method = node->AsMethodDefinition(); in ProcessCheckerNode()
66 auto func = method->Value()->AsFunctionExpression()->Function(); in ProcessCheckerNode()
67 func->Id()->SetVariable(method->Id()->Variable()); in ProcessCheckerNode()
70 node->Check(checker); in ProcessCheckerNode()
76 if (scope->IsGlobalScope()) { in ProcessScopesNode()
79 scope = checker->VarBinder()->Program()->GlobalClassScope(); in ProcessScopesNode()
81 …auto expressionCtx = varbinder::LexicalScope<varbinder::Scope>::Enter(checker->VarBinder(), scope); in ProcessScopesNode()
82 compiler::InitScopesPhaseETS::RunExternalNode(node, checker->VarBinder()); in ProcessScopesNode()
88 auto *paramIdent = AllocNode<ir::Identifier>(name, Allocator()); in AddParam()
90 paramIdent->SetTsTypeAnnotation(type); in AddParam()
91 type->SetParent(paramIdent); in AddParam()
101 ArenaVector<ir::Expression *> params(Allocator()->Adapter()); in CreateDynamicCallIntrinsic()
111 if (!DynamicCall::IsByValue(VarBinder()->AsETSBinder(), callee)) { in CreateDynamicCallIntrinsic()
116 param2 = AddParam("qname_len", intTypeNode->Clone(Allocator(), nullptr)); in CreateDynamicCallIntrinsic()
119 param2 = AddParam("this", dynamicTypeNode->Clone(Allocator(), nullptr)); in CreateDynamicCallIntrinsic()
125 util::UString paramName("p" + std::to_string(i), Allocator()); in CreateDynamicCallIntrinsic()
126 auto paramType = arguments[i]->TsType()->IsLambdaObject() in CreateDynamicCallIntrinsic()
127 ? dynamicTypeNode->Clone(Allocator(), nullptr) in CreateDynamicCallIntrinsic()
128 : AllocNode<ir::OpaqueTypeNode>(arguments[i]->TsType()); in CreateDynamicCallIntrinsic()
134 … ir::FunctionSignature(nullptr, std::move(params), dynamicTypeNode->Clone(Allocator(), nullptr)); in CreateDynamicCallIntrinsic()
136 Allocator(), ir::ScriptFunction::ScriptFunctionData {nullptr, std::move(funcSignature), in CreateDynamicCallIntrinsic()
140 auto *name = AllocNode<ir::Identifier>("invoke", Allocator()); in CreateDynamicCallIntrinsic()
141 func->SetIdent(name); in CreateDynamicCallIntrinsic()
148 ir::MethodDefinitionKind::METHOD, func->Id()->Clone(Allocator(), nullptr), funcExpr, in CreateDynamicCallIntrinsic()
149 …ModifierFlags::PUBLIC | ir::ModifierFlags::NATIVE | ir::ModifierFlags::STATIC, Allocator(), false); in CreateDynamicCallIntrinsic()
156 auto *type = arg->Check(checker); in ToString()
157 ss << "-"; in ToString()
158 type->ToString(ss); in ToString()
166 auto *type = arg->TsType(); in ToString()
167 ss << "-"; in ToString()
168 type->ToString(ss); in ToString()
180 std::tie(mapIt, std::ignore) = dynamicIntrinsics.emplace(lang, Allocator()->Adapter()); in ResolveDynamicCallExpression()
183 auto &map = mapIt->second; in ResolveDynamicCallExpression()
187 if (DynamicCall::IsByValue(VarBinder()->AsETSBinder(), callee)) { in ResolveDynamicCallExpression()
188 ss << "-byvalue"; in ResolveDynamicCallExpression()
190 const auto callNames = DynamicCall::ResolveCall(VarBinder()->AsETSBinder(), callee); in ResolveDynamicCallExpression()
191 DynamicCallNames(isConstruct)->try_emplace(callNames.name, 0); in ResolveDynamicCallExpression()
202 auto props = ArenaVector<ir::AstNode *>(Allocator()->Adapter()); in ResolveDynamicCallExpression()
204 klass->Definition()->AddProperties(std::move(props)); in ResolveDynamicCallExpression()
207 auto prevClass = VarBinder()->AsETSBinder()->GetGlobalRecordTable()->ClassDefinition(); in ResolveDynamicCallExpression()
208 … VarBinder()->AsETSBinder()->GetGlobalRecordTable()->SetClassDefinition(klass->Definition()); in ResolveDynamicCallExpression()
211 VarBinder()->AsETSBinder()->GetGlobalRecordTable()->SetClassDefinition(prevClass); in ResolveDynamicCallExpression()
213 method->Function()->Signature()->SetReturnType(GlobalBuiltinDynamicType(lang)); in ResolveDynamicCallExpression()
215 map.emplace(util::UString(key, Allocator()).View(), method->Function()); in ResolveDynamicCallExpression()
216 return method->Function()->Signature(); in ResolveDynamicCallExpression()
219 return it->second->Signature(); in ResolveDynamicCallExpression()
231 ArenaVector<ir::Statement *> statements(Allocator()->Adapter()); in CreateStaticScriptFunction()
232 ArenaVector<ir::Expression *> params(Allocator()->Adapter()); in CreateStaticScriptFunction()
239 auto *body = AllocNode<ir::BlockStatement>(Allocator(), std::move(statements)); in CreateStaticScriptFunction()
241 id = AllocNode<ir::Identifier>(compiler::Signatures::CCTOR, Allocator()); in CreateStaticScriptFunction()
243 // clang-format off in CreateStaticScriptFunction()
245 Allocator(), ir::ScriptFunction::ScriptFunctionData { in CreateStaticScriptFunction()
251 // clang-format on in CreateStaticScriptFunction()
252 func->SetIdent(id); in CreateStaticScriptFunction()
260 ArenaVector<ir::Statement *> statements(Allocator()->Adapter()); in CreateScriptFunction()
261 ArenaVector<ir::Expression *> params(Allocator()->Adapter()); in CreateScriptFunction()
268 auto *body = AllocNode<ir::BlockStatement>(Allocator(), std::move(statements)); in CreateScriptFunction()
270 id = AllocNode<ir::Identifier>(compiler::Signatures::CTOR, Allocator()); in CreateScriptFunction()
272 func = AllocNode<ir::ScriptFunction>(Allocator(), in CreateScriptFunction()
277 func->SetIdent(id); in CreateScriptFunction()
292 auto *staticBlock = AllocNode<ir::ClassStaticBlock>(funcExpr, Allocator()); in CreateClassStaticInitializer()
293 staticBlock->AddModifier(ir::ModifierFlags::STATIC); in CreateClassStaticInitializer()
309 …AllocNode<ir::MethodDefinition>(ir::MethodDefinitionKind::CONSTRUCTOR, id->Clone(Allocator(), null… in CreateClassInstanceInitializer()
310 funcExpr, ir::ModifierFlags::NONE, Allocator(), false); in CreateClassInstanceInitializer()
324 auto *classId = AllocNode<ir::Identifier>(builtin_class_name, Allocator()); in CreateDynamicCallClassInitializer()
326 auto *methodId = AllocNode<ir::Identifier>(builtin_method_name, Allocator()); in CreateDynamicCallClassInitializer()
332 …Call = AllocNode<ir::CallExpression>(callee, ArenaVector<ir::Expression *>(Allocator()->Adapter()), in CreateDynamicCallClassInitializer()
336 statements->push_back(AllocNode<ir::ExpressionStatement>(initCall)); in CreateDynamicCallClassInitializer()
343 auto *classId = AllocNode<ir::Identifier>(name, Allocator()); in BuildClass()
346 …auto *classDef = AllocNode<ir::ClassDefinition>(Allocator(), classId, ir::ClassDefinitionModifiers… in BuildClass()
350 auto *classDecl = AllocNode<ir::ClassDeclaration>(classDef, Allocator()); in BuildClass()
352 VarBinder()->Program()->Ast()->Statements().push_back(classDecl); in BuildClass()
353 classDecl->SetParent(VarBinder()->Program()->Ast()); in BuildClass()
355 varbinder::BoundContext boundCtx(VarBinder()->AsETSBinder()->GetGlobalRecordTable(), classDef); in BuildClass()
357 ArenaVector<ir::AstNode *> classBody(Allocator()->Adapter()); in BuildClass()
361 classDef->AddProperties(std::move(classBody)); in BuildClass()
370 auto *fieldIdent = AllocNode<ir::Identifier>(name, Allocator()); in CreateStaticReadonlyField()
373 …dent, nullptr, AllocNode<ir::ETSPrimitiveType>(ir::PrimitiveType::INT), flags, Allocator(), false); in CreateStaticReadonlyField()
388 classBody->push_back(CreateStaticReadonlyField("qname_start_from")); in GetDynamicClass()
390 classBody->push_back(CreateDynamicCallClassInitializer(lang, isConstruct)); in GetDynamicClass()
398 auto builtin = compiler::Signatures::Dynamic::LoadModuleBuiltin(import->Language()); in ClassInitializerFromImport()
401 auto *classId = AllocNode<ir::Identifier>(builtin_class_name, Allocator()); in ClassInitializerFromImport()
403 auto *methodId = AllocNode<ir::Identifier>(builtin_method_name, Allocator()); in ClassInitializerFromImport()
409 ArenaVector<ir::Expression *> callParams(Allocator()->Adapter()); in ClassInitializerFromImport()
410 if (ark::os::file::File::IsRegularFile(import->ResolvedSource()->Str().Mutf8())) { in ClassInitializerFromImport()
412 …util::UString(ark::os::RemoveExtension(import->ResolvedSource()->Str().Mutf8()), Allocator()).View… in ClassInitializerFromImport()
414 callParams.push_back(import->ResolvedSource()); in ClassInitializerFromImport()
419 …moduleClassId = AllocNode<ir::Identifier>(compiler::Signatures::DYNAMIC_MODULE_CLASS, Allocator()); in ClassInitializerFromImport()
421 auto *fieldId = AllocNode<ir::Identifier>(import->AssemblerName(), Allocator()); in ClassInitializerFromImport()
428 statements->push_back(AllocNode<ir::ExpressionStatement>(initializer)); in ClassInitializerFromImport()
446 ArenaVector<ir::Expression *> params(Allocator()->Adapter()); in CreateClassMethod()
447 auto *id = AllocNode<ir::Identifier>(name, Allocator()); in CreateClassMethod()
449 ArenaVector<ir::Statement *> statements(Allocator()->Adapter()); in CreateClassMethod()
455 auto *body = AllocNode<ir::BlockStatement>(Allocator(), std::move(statements)); in CreateClassMethod()
459Allocator(), ir::ScriptFunction::ScriptFunctionData {body, std::move(funcSignature), funcFlags, mo… in CreateClassMethod()
461 func->SetIdent(id); in CreateClassMethod()
467 …Node<ir::MethodDefinition>(ir::MethodDefinitionKind::METHOD, func->Id()->Clone(Allocator(), nullpt… in CreateClassMethod()
468 funcExpr, modifierFlags, Allocator(), false); in CreateClassMethod()
491 util::UString thisParamName(std::string("this"), Allocator()); in CreateLambdaObjectClassInvokeMethod()
494 params->push_back(thisParam); in CreateLambdaObjectClassInvokeMethod()
496 ArenaVector<ir::Expression *> callParams(Allocator()->Adapter()); in CreateLambdaObjectClassInvokeMethod()
497 for (auto *invokeParam : invokeSignature->Params()) { in CreateLambdaObjectClassInvokeMethod()
500 … util::UString(std::string("p") + std::to_string(callParams.size()), Allocator()).View(); in CreateLambdaObjectClassInvokeMethod()
501 … auto *param = AddParam(paramName, AllocNode<ir::OpaqueTypeNode>(invokeParam->TsType())); in CreateLambdaObjectClassInvokeMethod()
502 params->push_back(param); in CreateLambdaObjectClassInvokeMethod()
503 callParams.push_back(param->Clone(Allocator(), nullptr)); in CreateLambdaObjectClassInvokeMethod()
507 auto *properyId = AllocNode<ir::Identifier>("jsvalue_lambda", Allocator()); in CreateLambdaObjectClassInvokeMethod()
509 … auto *callee = AllocNode<ir::MemberExpression>(thisParam->Clone(Allocator(), nullptr), properyId, in CreateLambdaObjectClassInvokeMethod()
516 … AllocNode<ir::TSAsExpression>(callLambda, retTypeAnnotation->Clone(Allocator(), nullptr), false); in CreateLambdaObjectClassInvokeMethod()
517 castToRetTypeExpr->SetTsType(invokeSignature->ReturnType()); in CreateLambdaObjectClassInvokeMethod()
520 statements->push_back(retStatement); in CreateLambdaObjectClassInvokeMethod()
522 *returnType = invokeSignature->ReturnType(); in CreateLambdaObjectClassInvokeMethod()
528 auto *globalClass = VarBinder()->Program()->GlobalClass(); in EmitDynamicModuleClassInitCall()
529 auto &body = globalClass->Body(); in EmitDynamicModuleClassInitCall()
530 …auto it = std::find_if(body.begin(), body.end(), [](ir::AstNode *node) { return node->IsClassStati… in EmitDynamicModuleClassInitCall()
534 auto *staticBlock = (*it)->AsClassStaticBlock(); in EmitDynamicModuleClassInitCall()
535 auto *cctorBody = staticBlock->Function()->Body()->AsBlockStatement(); in EmitDynamicModuleClassInitCall()
538 …auto *classId = AllocNode<ir::Identifier>(compiler::Signatures::DYNAMIC_MODULE_CLASS, Allocator()); in EmitDynamicModuleClassInitCall()
540 …methodId = AllocNode<ir::Identifier>(compiler::Signatures::DYNAMIC_MODULE_CLASS_INIT, Allocator()); in EmitDynamicModuleClassInitCall()
545 ArenaVector<ir::Expression *> callParams(Allocator()->Adapter()); in EmitDynamicModuleClassInitCall()
551 node->SetParent(cctorBody); in EmitDynamicModuleClassInitCall()
552 cctorBody->Statements().push_back(node); in EmitDynamicModuleClassInitCall()
560 auto dynamicImports = VarBinder()->AsETSBinder()->DynamicImports(); in BuildDynamicImportClass()
572 auto source = import->Source()->Str(); in BuildDynamicImportClass()
582 import->AssemblerName() = util::UString(assemblyName, Allocator()).View(); in BuildDynamicImportClass()
583 fields.insert(import->AssemblerName()); in BuildDynamicImportClass()
586 auto *fieldIdent = AllocNode<ir::Identifier>(import->AssemblerName(), Allocator()); in BuildDynamicImportClass()
589 … fieldIdent, nullptr, AllocNode<ir::OpaqueTypeNode>(GlobalBuiltinDynamicType(import->Language())), in BuildDynamicImportClass()
590 flags, Allocator(), false); in BuildDynamicImportClass()
592 classBody->push_back(field); in BuildDynamicImportClass()
595 classBody->push_back(CreateDynamicModuleClassInitializer(imports)); in BuildDynamicImportClass()
596 classBody->push_back(CreateDynamicModuleClassInitMethod()); in BuildDynamicImportClass()
607 params->push_back(thisParam); in CreateLambdaObjectClassInitializer()
609 util::UString jsvalueParamName(std::string("jsvalue_param"), Allocator()); in CreateLambdaObjectClassInitializer()
612 params->push_back(jsvalueParam); in CreateLambdaObjectClassInitializer()
614 …moduleClassId = AllocNode<ir::Identifier>(varbinder::VarBinder::MANDATORY_PARAM_THIS, Allocator()); in CreateLambdaObjectClassInitializer()
616 auto *fieldId = AllocNode<ir::Identifier>("jsvalue_lambda", Allocator()); in CreateLambdaObjectClassInitializer()
621 …tializer = AllocNode<ir::AssignmentExpression>(property, jsvalueParam->Clone(Allocator(), nullptr), in CreateLambdaObjectClassInitializer()
624 statements->push_back(AllocNode<ir::ExpressionStatement>(initializer)); in CreateLambdaObjectClassInitializer()
631 …auto *invokeMethod = functionalInterface->GetOwnProperty<checker::PropertyType::INSTANCE_METHOD>("… in BuildLambdaObjectClass()
632 auto *invokeSignature = invokeMethod->TsType()->AsETSFunctionType()->CallSignatures()[0]; in BuildLambdaObjectClass()
636 ToString(this, invokeSignature->Params(), ss); in BuildLambdaObjectClass()
639 … functionalInterface->AddConstructSignature(dynamicLambdaSignatureCache_[syntheticLambdaObjName]); in BuildLambdaObjectClass()
647 auto *fieldIdent = AllocNode<ir::Identifier>(assemblyName, Allocator()); in BuildLambdaObjectClass()
651 ir::ModifierFlags::PRIVATE, Allocator(), false); in BuildLambdaObjectClass()
652 classBody->push_back(field); in BuildLambdaObjectClass()
654 classBody->push_back(CreateLambdaObjectClassInitializer(functionalInterface)); in BuildLambdaObjectClass()
656 … classBody->push_back(CreateLambdaObjectClassInvokeMethod(invokeSignature, retTypeAnnotation)); in BuildLambdaObjectClass()
662 …dynamicLambdaSignatureCache_[syntheticLambdaObjName] = functionalInterface->ConstructSignatures()[… in BuildLambdaObjectClass()