5#ifndef V8_PARSING_PARSER_H_ 
    6#define V8_PARSING_PARSER_H_ 
   32class ConsumedPreparseData;
 
   35class ParserTargetScope;
 
   36class PendingCompilationErrorHandler;
 
   72      return pattern->AsVariableProxy()->raw_name();
 
 
 
 
  136    delete reusable_preparser_;
 
  137    reusable_preparser_ = 
nullptr;
 
 
  145                         int end_position, 
int function_literal_id);
 
  149  void InitializeEmptyScopeChain(
ParseInfo* info);
 
  159  template <
typename IsolateT>
 
  160  void DeserializeScopeChain(
 
  164          Scope::DeserializationMode::kScopesOnly);
 
  168  void UpdateStatistics(
 
  171      int* preparse_skipped);
 
  172  template <
typename IsolateT>
 
  191    return !MaybeParsingArrowhead() &&
 
  192           scope()->AllowsLazyParsingWithoutUnresolvedVariables(
 
 
  197  enum Mode { PARSE_LAZILY, PARSE_EAGERLY };
 
  220    return scope()->NewTemporary(name);
 
 
  223  void PrepareGeneratorVariables();
 
  234  template <
typename IsolateT>
 
  235  void PostProcessParseResult(IsolateT* isolate, 
ParseInfo* info,
 
  239                                   int start_position, 
int end_position,
 
  240                                   int function_literal_id,
 
  244      FunctionKind initializer_kind, 
int initializer_pos, 
int initializer_id,
 
  245      int initializer_end_pos, 
const AstRawString* class_name);
 
  266    if (reusable_preparser_ == 
nullptr) {
 
  268          &preparser_zone_, &scanner_, 
stack_limit_, ast_value_factory(),
 
  269          pending_error_handler(), runtime_call_stats_, v8_file_logger_,
 
  270          flags(), parsing_on_main_thread_);
 
  271      reusable_preparser_->set_allow_eval_cache(allow_eval_cache());
 
  272      preparse_data_buffer_.reserve(128);
 
  274    return reusable_preparser_;
 
 
  280  void ParseImportDeclaration();
 
  283  void ParseExportStar();
 
  298        : import_name(import_name),
 
  299          local_name(local_name),
 
  300          location(location) {}
 
 
 
  306  Statement* BuildInitializationBlock(DeclarationParsingResult* parsing_result);
 
  309  Block* RewriteCatchPattern(CatchInfo* catch_info);
 
  313                                 Block* finally_block,
 
  315                                 const CatchInfo& catch_info, 
int pos);
 
  320  void DeclareFunctionNameVar(
const AstRawString* function_name,
 
  329                                                     ClassInfo* class_info,
 
  337                                             int function_literal_id,
 
  347                          int class_token_pos, 
int end_pos);
 
  349                            ClassInfo* class_info, 
int class_token_pos);
 
  351                                 int class_token_pos);
 
  353                                       ClassInfo* class_info, 
bool is_static);
 
  354  void DeclarePrivateClassMember(
ClassScope* scope,
 
  358                                 bool is_static, ClassInfo* class_info);
 
  359  void DeclarePublicClassMethod(
const AstRawString* class_name,
 
  361                                bool is_constructor, ClassInfo* class_info);
 
  362  void DeclarePublicClassField(
ClassScope* scope,
 
  364                               bool is_computed_name, ClassInfo* class_info);
 
  367                            ClassInfo* class_info);
 
  370                         bool is_computed_name, 
bool is_private,
 
  371                         ClassInfo* class_info);
 
  372  void AddClassStaticBlock(
Block* block, ClassInfo* class_info);
 
  374                                                   ClassInfo* class_info);
 
  376                                                    ClassInfo* class_info);
 
  379                                  ClassInfo* class_info, 
int pos);
 
  385    return scope()->GetDeclarationScope()->has_checked_syntax();
 
 
  388  void InitializeVariables(
 
  390      const DeclarationParsingResult::Declaration* 
declaration);
 
  392  Block* RewriteForVarInLegacy(
const ForInfo& for_info);
 
  393  void DesugarBindingInForEachStatement(ForInfo* for_info, 
Block** body_block,
 
  395  Block* CreateForEachStatementTDZ(
Block* init_block, 
const ForInfo& for_info);
 
  397  Statement* DesugarLexicalBindingsInForStatement(
 
  410    return object_literal;
 
 
  415  void InsertShadowingVarBindingInitializers(
Block* block);
 
  427                              bool* was_added, 
int initializer_position);
 
  431                            Scope* declaration_scope, 
bool* was_added,
 
  432                            int begin, 
int end = kNoSourcePosition);
 
  435               Scope* declaration_scope, 
bool* was_added, 
int var_begin_pos,
 
  436               int var_end_pos = kNoSourcePosition);
 
  444                                          bool is_static, 
int pos);
 
  448                                          bool is_static, 
int pos);
 
  451                                        ClassInfo* class_info,
 
  453                                        bool is_static, 
int pos);
 
  457      bool is_private, 
int pos);
 
  471                    int* function_length,
 
  474  Block* BuildParameterInitializationBlock(
 
  481      int* function_length, 
bool* has_duplicate_parameters,
 
  482      int* expected_property_count, 
int* suspend_count,
 
  490        : cooked_(8, zone), raw_(8, zone), expressions_(8, zone), 
pos_(
pos) {}
 
 
  500      cooked_.Add(cooked, zone);
 
 
  505      expressions_.Add(expression, zone);
 
 
 
  534#if V8_ENABLE_WEBASSEMBLY 
  555    return identifier == ast_value_factory()->eval_string();
 
 
  559    return identifier == ast_value_factory()->async_string();
 
 
  563    return identifier == ast_value_factory()->arguments_string();
 
 
  573    Property* 
property = expression->AsProperty();
 
  574    return property != 
nullptr && 
property->
obj()->IsThisExpression();
 
 
  580    Property* 
property = expression->AsProperty();
 
  581    if (expression->IsOptionalChain()) {
 
  582      Expression* expr_inner = expression->AsOptionalChain()->expression();
 
  583      property = expr_inner->AsProperty();
 
 
  597    DCHECK(IsIdentifier(expression));
 
  598    return expression->AsVariableProxy()->raw_name();
 
 
  602    return expression->AsVariableProxy();
 
 
  606    return identifier == ast_value_factory()->constructor_string();
 
 
  611    return !
property->IsPrototype();
 
 
  620    return expr->IsVariableProxy() &&
 
  621           expr->AsVariableProxy()->raw_name() ==
 
  622               ast_value_factory()->native_string();
 
 
  627    return string->AsArrayIndex(index);
 
 
  636    if (e_stat == 
nullptr) 
return false;
 
  639    return arg == 
nullptr || 
literal->AsRawString() == arg;
 
 
  644    *default_string = ast_value_factory()->default_string();
 
  645    *dot_default_string = ast_value_factory()->dot_default_string();
 
 
  651    fni_.PushLiteralName(
id);
 
 
  655    fni_.PushVariableName(
id);
 
 
  659    if (expression->IsPropertyName()) {
 
  660      fni_.PushLiteralName(expression->AsLiteral()->AsRawPropertyName());
 
  662      fni_.PushLiteralName(ast_value_factory()->computed_string());
 
 
  667    fni_.PushEnclosingName(name);
 
 
  671    fni_.AddFunction(func_to_infer);
 
 
  681    if (left->IsProperty() && right->IsFunctionLiteral()) {
 
  682      right->AsFunctionLiteral()->set_pretenure();
 
 
  717    return NewThrowError(Runtime::kNewReferenceError, message,
 
  718                         ast_value_factory()->empty_string(), 
pos);
 
 
  740  void ReportUnexpectedTokenAt(
 
  758  template <
typename T>
 
  760    return subject == 
nullptr;
 
 
  769    return ast_value_factory()->empty_string();
 
 
  786    return scanner()->NextSymbol(ast_value_factory());
 
 
  790    double double_value = scanner()->DoubleValue();
 
  792    std::string_view 
string =
 
  794    return ast_value_factory()->GetOneByteString(
 
  795        base::OneByteVector(
string.
data(), 
string.
length()));
 
 
  802    return factory()->ThisExpression();
 
 
  807    return factory()->NewThisExpression(
pos);
 
 
  819      int start_position) {
 
  820    VariableProxy* proxy = factory()->ast_node_factory()->NewVariableProxy(
 
 
  829    if (infer == InferName::kYes) {
 
  830      fni_.PushVariableName(name);
 
  832    return expression_scope()->NewVariable(name, start_position);
 
 
  836                                   int start_position) {
 
  837    expression_scope()->Declare(name, start_position);
 
 
  862    return factory()->NewExpressionStatement(
 
  863        factory()->NewThrow(exception, 
pos), 
pos);
 
 
  869                                    int initializer_end_position,
 
  874            pattern, initializer, scanner()->location().beg_pos,
 
  875            initializer_end_position, is_rest);
 
  877    parameters->
params.Add(parameter);
 
 
  884    for (
auto parameter : parameters->
params) {
 
  885      bool is_optional = parameter->initializer() != 
nullptr;
 
  891          is_simple ? parameter->name() : ast_value_factory()->empty_string(),
 
  892          is_simple ? VariableMode::kVar : VariableMode::kTemporary,
 
  893          is_optional, parameter->is_rest(), ast_value_factory(),
 
  894          parameter->position);
 
 
  899  void ReindexComputedMemberName(
Expression* computed_name);
 
  900  void DeclareArrowFunctionFormalParameters(
 
  913  void SetFunctionNameFromIdentifierRef(
Expression* value,
 
  917    ++use_counts_[feature];
 
 
  928    if (source_range_map_ == 
nullptr) 
return;
 
  933            source_range_map_->Find(binary_op));
 
  934    if (ranges == 
nullptr) 
return;
 
  936    SourceRange range = ranges->GetRange(SourceRangeKind::kRight);
 
  937    source_range_map_->Insert(
 
  938        nary_op, zone()->New<NaryOperationSourceRanges>(zone(), range));
 
 
  943    if (source_range_map_ == 
nullptr) 
return;
 
  946    if (ranges == 
nullptr) 
return;
 
  949    DCHECK_EQ(node->subsequent_length(), ranges->RangeCount());
 
 
  953                                        int32_t continuation_position) {
 
  954    if (source_range_map_ == 
nullptr) 
return;
 
  955    source_range_map_->Insert(
 
  956        node, zone()->New<BlockSourceRanges>(continuation_position));
 
 
  961    if (source_range_map_ == 
nullptr) 
return;
 
  962    source_range_map_->Insert(node,
 
  963                              zone()->New<CaseClauseSourceRanges>(body_range));
 
 
  968    if (source_range_map_ == 
nullptr) 
return;
 
  971            source_range_map_->Find(node));
 
  972    if (ranges == 
nullptr) {
 
  973      source_range_map_->Insert(
 
  974          node, zone()->New<ConditionalChainSourceRanges>(zone()));
 
  977        source_range_map_->Find(node));
 
  978    if (ranges == 
nullptr) 
return;
 
  980    DCHECK_EQ(node->conditional_chain_length(), ranges->RangeCount());
 
 
  985    if (source_range_map_ == 
nullptr) 
return;
 
  988            source_range_map_->Find(node));
 
  989    if (ranges == 
nullptr) 
return;
 
 
  996    if (source_range_map_ == 
nullptr) 
return;
 
  997    source_range_map_->Insert(
 
  998        node->AsConditional(),
 
  999        zone()->New<ConditionalSourceRanges>(then_range, else_range));
 
 
 1003    if (source_range_map_ == 
nullptr) 
return;
 
 1004    source_range_map_->Insert(node, zone()->New<FunctionLiteralSourceRanges>());
 
 
 1009    if (source_range_map_ == 
nullptr) 
return;
 
 1010    source_range_map_->Insert(
 
 1011        node->AsBinaryOperation(),
 
 1012        zone()->New<BinaryOperationSourceRanges>(right_range));
 
 
 1016                                                int32_t continuation_position) {
 
 1017    if (source_range_map_ == 
nullptr) 
return;
 
 1018    source_range_map_->Insert(
 
 1020        zone()->New<JumpStatementSourceRanges>(continuation_position));
 
 
 1026    if (source_range_map_ == 
nullptr) 
return;
 
 1027    source_range_map_->Insert(
 
 1028        node->AsIfStatement(),
 
 1029        zone()->New<IfStatementSourceRanges>(then_range, else_range));
 
 
 1034    if (source_range_map_ == 
nullptr) 
return;
 
 1035    source_range_map_->Insert(
 
 1036        node, zone()->New<IterationStatementSourceRanges>(body_range));
 
 
 1042    if (source_range_map_ == 
nullptr) 
return;
 
 1043    source_range_map_->Insert(node,
 
 1044                              zone()->New<ExpressionSourceRanges>(right_range));
 
 
 1048                                          int32_t continuation_position) {
 
 1049    if (source_range_map_ == 
nullptr) 
return;
 
 1050    source_range_map_->Insert(
 
 1052        zone()->New<SuspendSourceRanges>(continuation_position));
 
 
 1056      Statement* node, int32_t continuation_position) {
 
 1057    if (source_range_map_ == 
nullptr) 
return;
 
 1058    source_range_map_->Insert(
 
 1059        node->AsSwitchStatement(),
 
 1060        zone()->New<SwitchStatementSourceRanges>(continuation_position));
 
 
 1064                                        int32_t continuation_position) {
 
 1065    if (source_range_map_ == 
nullptr) 
return;
 
 1068    source_range_map_->Insert(
 
 1069        throw_expr, zone()->New<ThrowSourceRanges>(continuation_position));
 
 
 1074    if (source_range_map_ == 
nullptr) 
return;
 
 1075    source_range_map_->Insert(
 
 1076        node, zone()->New<TryCatchStatementSourceRanges>(body_range));
 
 
 1081    if (source_range_map_ == 
nullptr) 
return;
 
 1082    source_range_map_->Insert(
 
 1083        node, zone()->New<TryFinallyStatementSourceRanges>(body_range));
 
 
 1088    if (current_compile_hint == FunctionLiteral::kShouldLazyCompile) {
 
 1092        return FunctionLiteral::kShouldEagerCompile;
 
 1095    return current_compile_hint;
 
 
 1105    return &preparse_data_buffer_;
 
 
 1109  friend class PreParserZoneScope;  
 
 1123  friend class ParserTargetScope;
 
 1128  int number_of_named_namespace_exports_ = 0;
 
 
union v8::internal::@341::BuiltinMetadata::KindSpecificData data
 
@ kUseCounterFeatureCount
 
IterationStatement * AsIterationStatement()
 
void AddElseRange(const SourceRange &else_range)
 
void AddThenRanges(const SourceRange &range)
 
void MakeParametersNonSimple()
 
Variable * DeclareParameter(const AstRawString *name, VariableMode mode, bool is_optional, bool is_rest, AstValueFactory *ast_value_factory, int position)
 
Expression * expression() const
 
void AddRange(const SourceRange &range)
 
void CalculateEmitStore(Zone *zone)
 
ParsingModeScope(Parser *parser, Mode mode)
 
TemplateLiteral(Zone *zone, int pos)
 
void AddExpression(Expression *expression, Zone *zone)
 
ZonePtrList< Expression > expressions_
 
const ZonePtrList< Expression > * expressions() const
 
ZonePtrList< const AstRawString > raw_
 
const ZonePtrList< const AstRawString > * raw() const
 
const ZonePtrList< const AstRawString > * cooked() const
 
void AddTemplateSpan(const AstRawString *cooked, const AstRawString *raw, int end, Zone *zone)
 
ZonePtrList< const AstRawString > cooked_
 
Expression * RewriteSpreads(ArrayLiteral *lit)
 
bool AllowsLazyParsingWithoutUnresolvedVariables() const
 
V8_INLINE void AddFunctionForNameInference(FunctionLiteral *func_to_infer)
 
V8_INLINE Expression * NewThrowReferenceError(MessageTemplate message, int pos)
 
class ThisExpression * ThisExpression()
 
V8_INLINE bool IsConstructor(const AstRawString *identifier) const
 
V8_INLINE bool IsStringLiteral(Statement *statement, const AstRawString *arg=nullptr) const
 
Expression * RewriteSuperCall(Expression *call_expression)
 
static V8_INLINE void CheckAssigningFunctionLiteralToProperty(Expression *left, Expression *right)
 
std::vector< uint8_t > preparse_data_buffer_
 
V8_INLINE bool IsArguments(const AstRawString *identifier) const
 
V8_INLINE ZonePtrList< ClassLiteral::StaticElement > * NewClassStaticElementList(int size) const
 
static V8_INLINE bool IsArrayIndex(const AstRawString *string, uint32_t *index)
 
V8_INLINE void PushPropertyName(Expression *expression)
 
static V8_INLINE const AstRawString * AsIdentifier(Expression *expression)
 
class ThisExpression * NewThisExpression(int pos)
 
V8_INLINE void ReportUnidentifiableError()
 
V8_INLINE void RecordTryFinallyStatementSourceRange(TryFinallyStatement *node, const SourceRange &body_range)
 
bool IdentifierEquals(const AstRawString *identifier, const AstRawString *other)
 
static V8_INLINE ZonePtrList< Expression > * NullExpressionList()
 
V8_INLINE void DeclareIdentifier(const AstRawString *name, int start_position)
 
static V8_INLINE bool IsIdentifier(Expression *expression)
 
static V8_INLINE bool IsNull(T subject)
 
V8_INLINE VariableProxy * ExpressionFromPrivateName(PrivateNameScopeIterator *private_name_scope, const AstRawString *name, int start_position)
 
V8_INLINE void InferFunctionName()
 
ObjectLiteral * InitializeObjectLiteral(ObjectLiteral *object_literal)
 
V8_INLINE bool IsEmptyIdentifier(const AstRawString *subject) const
 
V8_INLINE void CountUsage(v8::Isolate::UseCounterFeature feature)
 
static V8_INLINE std::nullptr_t NullLiteralProperty()
 
V8_INLINE void GetDefaultStrings(const AstRawString **default_string, const AstRawString **dot_default_string)
 
V8_INLINE const AstRawString * GetSymbol() const
 
V8_INLINE void RecordBlockSourceRange(Block *node, int32_t continuation_position)
 
static V8_INLINE bool IsPrivateReference(Expression *expression)
 
void DeclareClassField(ClassScope *scope, ClassLiteralProperty *property, const AstRawString *property_name, bool is_static, bool is_computed_name, bool is_private, ClassInfo *class_info)
 
V8_INLINE Statement * NewThrowStatement(Expression *exception, int pos)
 
ScriptCompiler::CompileOptions compile_options_
 
V8_INLINE void RecordConditionalSourceRange(Expression *node, const SourceRange &then_range, const SourceRange &else_range)
 
V8_INLINE void RecordJumpStatementSourceRange(Statement *node, int32_t continuation_position)
 
static V8_INLINE std::nullptr_t NullStatement()
 
static V8_INLINE bool IsBoilerplateProperty(ObjectLiteral::Property *property)
 
Assignment * BuildCreateJSGeneratorObject(int pos, FunctionKind kind)
 
LocalIsolate * local_isolate_
 
V8_INLINE void PushVariableName(const AstRawString *id)
 
V8_INLINE v8::Extension * extension() const
 
Variable * NewTemporary(const AstRawString *name)
 
MaybeHandle< FixedArray > maybe_wrapped_arguments_
 
V8_INLINE bool ParsingDynamicFunctionDeclaration() const
 
V8_INLINE bool IsAsync(const AstRawString *identifier) const
 
ConsumedPreparseData * consumed_preparse_data_
 
V8_INLINE void RecordExpressionSourceRange(Expression *node, const SourceRange &right_range)
 
const AstRawString * GetRawNameFromIdentifier(const AstRawString *arg)
 
static bool IsPreParser()
 
V8_INLINE void RecordIfStatementSourceRange(Statement *node, const SourceRange &then_range, const SourceRange &else_range)
 
void ThrowPendingError(Isolate *isolate, Handle< Script > script)
 
V8_INLINE void AppendConditionalChainElseSourceRange(ConditionalChain *node, const SourceRange &range)
 
V8_INLINE void PushLiteralName(const AstRawString *id)
 
V8_INLINE void AppendNaryOperationSourceRange(NaryOperation *node, const SourceRange &range)
 
V8_INLINE void RecordIterationStatementSourceRange(IterationStatement *node, const SourceRange &body_range)
 
V8_INLINE bool IsNative(Expression *expr) const
 
void DeclareClassBrandVariable(ClassScope *scope, ClassInfo *class_info, int class_token_pos)
 
V8_INLINE void DeclareFormalParameters(ParserFormalParameters *parameters)
 
Expression * FailureExpression()
 
V8_INLINE bool ParsingExtension() const
 
V8_INLINE VariableProxy * ExpressionFromIdentifier(const AstRawString *name, int start_position, InferName infer=InferName::kYes)
 
V8_INLINE const AstRawString * GetIdentifier() const
 
V8_INLINE void RecordCaseClauseSourceRange(CaseClause *node, const SourceRange &body_range)
 
V8_INLINE void AppendConditionalChainSourceRange(ConditionalChain *node, const SourceRange &range)
 
V8_INLINE void AddFormalParameter(ParserFormalParameters *parameters, Expression *pattern, Expression *initializer, int initializer_end_position, bool is_rest)
 
V8_INLINE void RecordBinaryOperationSourceRange(Expression *node, const SourceRange &right_range)
 
void DeclareClassProperty(ClassScope *scope, const AstRawString *class_name, ClassLiteralProperty *property, bool is_constructor, ClassInfo *class_info)
 
static V8_INLINE bool IsIterationStatement(Statement *subject)
 
IterationStatement * AsIterationStatement(BreakableStatement *s)
 
static V8_INLINE bool IsThisProperty(Expression *expression)
 
static V8_INLINE std::nullptr_t NullExpression()
 
std::vector< uint8_t > * preparse_data_buffer()
 
static V8_INLINE ZonePtrList< Statement > * NullStatementList()
 
V8_INLINE Variable * DeclareCatchVariableName(Scope *scope, const AstRawString *name)
 
V8_INLINE const AstRawString * EmptyIdentifierString() const
 
static V8_INLINE std::nullptr_t NullIdentifier()
 
const AstRawString * PreParserIdentifierToAstRawString(const PreParserIdentifier &arg)
 
V8_INLINE const AstRawString * GetNumberAsSymbol() const
 
V8_INLINE VariableProxy * AsIdentifierExpression(Expression *expression)
 
V8_INLINE void RecordFunctionLiteralSourceRange(FunctionLiteral *node)
 
V8_INLINE void RecordSuspendSourceRange(Expression *node, int32_t continuation_position)
 
V8_INLINE bool IsEvalOrArguments(const AstRawString *identifier) const
 
bool parse_lazily() const
 
V8_INLINE const AstRawString * GetNextSymbol() const
 
V8_INLINE ZonePtrList< ClassLiteral::Property > * NewClassPropertyList(int size) const
 
V8_INLINE void RecordTryCatchStatementSourceRange(TryCatchStatement *node, const SourceRange &body_range)
 
V8_INLINE FunctionLiteral::EagerCompileHint GetEmbedderCompileHint(FunctionLiteral::EagerCompileHint current_compile_hint, int position)
 
static V8_INLINE std::nullptr_t NullBlock()
 
V8_INLINE void PushEnclosingName(const AstRawString *name)
 
int total_preparse_skipped_
 
V8_INLINE void RecordSwitchStatementSourceRange(Statement *node, int32_t continuation_position)
 
PreParser * reusable_preparser()
 
V8_INLINE bool IsEval(const AstRawString *identifier) const
 
PreParser * reusable_preparser_
 
V8_INLINE void RecordThrowSourceRange(Statement *node, int32_t continuation_position)
 
V8_INLINE void ConvertBinaryToNaryOperationSourceRange(BinaryOperation *binary_op, NaryOperation *nary_op)
 
void AddUnresolvedPrivateName(VariableProxy *proxy)
 
bool IsPrivateReference() const
 
Variable * DeclareCatchVariableName(const AstRawString *name)
 
bool is_new_target() const
 
RecordWriteMode const mode_
 
base::Vector< const DirectHandle< Object > > args
 
too high values may cause the compiler to set high thresholds for inlining to as much as possible avoid inlined allocation of objects that cannot escape trace load stores from virtual maglev objects use TurboFan fast string builder analyze liveness of environment slots and zap dead values trace TurboFan load elimination emit data about basic block usage in builtins to this enable builtin reordering when run mksnapshot flag for emit warnings when applying builtin profile data verify register allocation in TurboFan randomly schedule instructions to stress dependency tracking enable store store elimination in TurboFan rewrite far to near simulate GC compiler thread race related to allow float parameters to be passed in simulator mode JS Wasm Run additional turbo_optimize_inlined_js_wasm_wrappers enable experimental feedback collection in generic lowering enable Turboshaft s WasmLoadElimination enable Turboshaft s low level load elimination for JS enable Turboshaft s escape analysis for string concatenation use enable Turbolev features that we want to ship in the not too far future trace individual Turboshaft reduction steps trace intermediate Turboshaft reduction steps invocation count threshold for early optimization Enables optimizations which favor memory size over execution speed Enables sampling allocation profiler with X as a sample interval min size of a semi the new space consists of two semi spaces max size of the Collect garbage after Collect garbage after keeps maps alive for< n > old space garbage collections print one detailed trace line in allocation gc speed threshold for starting incremental marking via a task in percent of available threshold for starting incremental marking immediately in percent of available Use a single schedule for determining a marking schedule between JS and C objects schedules the minor GC task with kUserVisible priority max worker number of concurrent for NumberOfWorkerThreads start background threads that allocate memory concurrent_array_buffer_sweeping use parallel threads to clear weak refs in the atomic pause trace progress of the incremental marking trace object counts and memory usage report a tick only when allocated zone memory changes by this amount TracingFlags::gc_stats TracingFlags::gc_stats track native contexts that are expected to be garbage collected verify heap pointers before and after GC memory reducer runs GC with ReduceMemoryFootprint flag Maximum number of memory reducer GCs scheduled Old gen GC speed is computed directly from gc tracer counters Perform compaction on full GCs based on V8 s default heuristics Perform compaction on every full GC Perform code space compaction when finalizing a full GC with stack Stress GC compaction to flush out bugs with moving objects flush of baseline code when it has not been executed recently Use time base code flushing instead of age Use a progress bar to scan large objects in increments when incremental marking is active force incremental marking for small heaps and run it more often force marking at random points between and force scavenge at random points between and reclaim otherwise unreachable unmodified wrapper objects when possible less compaction in non memory reducing mode use high priority threads for concurrent Marking Test mode only flag It allows an unit test to select evacuation candidates use incremental marking for CppHeap cppheap_concurrent_marking c value for membalancer A special constant to balance between memory and space tradeoff The smaller the more memory it uses enable use of SSE4 instructions if available enable use of AVX VNNI instructions if available enable use of POPCNT instruction if available force all emitted branches to be in long mode(MIPS/PPC only)") DEFINE_BOOL(partial_constant_pool
 
other heap size flags(e.g. initial_heap_size) take precedence") DEFINE_SIZE_T( max_shared_heap_size
 
ZoneVector< RpoNumber > & result
 
FunctionLiteral * literal
 
bool ParseFunction(ParseInfo *info, DirectHandle< SharedFunctionInfo > shared_info, Isolate *isolate, ReportStatisticsMode mode)
 
bool ParseProgram(ParseInfo *info, DirectHandle< Script > script, MaybeDirectHandle< ScopeInfo > maybe_outer_scope_info, Isolate *isolate, ReportStatisticsMode mode)
 
constexpr int kNoSourcePosition
 
std::string_view DoubleToStringView(double v, base::Vector< char > buffer)
 
bool(*)(int, void *) CompileHintCallback
 
OptimizedCompilationInfo * info_
 
RegExpParserImpl< CharT > *const parser_
 
const uintptr_t stack_limit_
 
#define NON_EXPORTED_BASE(code)
 
#define DCHECK_NOT_NULL(val)
 
#define DCHECK(condition)
 
#define DCHECK_EQ(v1, v2)
 
#define V8_EXPORT_PRIVATE
 
const AstRawString * local_name
 
const AstRawString * export_name
 
Scanner::Location location
 
NamedImport(const AstRawString *import_name, const AstRawString *local_name, Scanner::Location location)
 
const AstRawString * local_name
 
const AstRawString * import_name
 
const Scanner::Location location
 
static Location invalid()
 
#define V8_WARN_UNUSED_RESULT
 
std::unique_ptr< ValueMirror > key