31 set_coverage_enabled(!isolate->is_best_effort_code_coverage());
32 set_block_coverage_enabled(isolate->is_block_code_coverage());
33 set_might_always_turbofan(
v8_flags.always_turbofan ||
35 set_allow_natives_syntax(
v8_flags.allow_natives_syntax);
36 set_allow_lazy_compile(
true);
37 set_collect_source_positions(!
v8_flags.enable_lazy_source_positions ||
38 isolate->NeedsDetailedOptimizedCodeLineInfo());
39 set_post_parallel_compile_tasks_for_eager_toplevel(
40 v8_flags.parallel_compile_tasks_for_eager_toplevel);
41 set_post_parallel_compile_tasks_for_lazy(
42 v8_flags.parallel_compile_tasks_for_lazy);
52 flags.SetFlagsForFunctionFromScript(script);
53 flags.SetFlagsFromFunction(shared);
54 flags.set_allow_lazy_parsing(
true);
55 flags.set_is_lazy_compile(
true);
57#if V8_ENABLE_WEBASSEMBLY
58 flags.set_is_asm_wasm_broken(shared->is_asm_wasm_broken());
60 flags.set_is_repl_mode(script->is_repl_mode());
73 flags.SetFlagsForFunctionFromScript(script);
74 flags.SetFlagsForToplevelCompile(
75 script->IsUserJavaScript(), flags.outer_language_mode(),
80 if (script->is_wrapped()) {
92 flags.SetFlagsForToplevelCompile(is_user_javascript, language_mode, repl_mode,
102 DCHECK(toplevel_flags.is_toplevel());
119 set_outer_language_mode(function->language_mode());
122 set_requires_instance_members_initializer(
123 function->requires_instance_members_initializer());
124 set_class_scope_has_private_brand(function->class_scope_has_private_brand());
125 set_has_static_private_methods_or_accessors(
126 function->has_static_private_methods_or_accessors());
127 set_private_name_lookup_skips_outer_class(
128 function->private_name_lookup_skips_outer_class());
129 set_is_toplevel(function->is_toplevel());
135 set_is_toplevel(
true);
136 set_allow_lazy_parsing(lazy);
137 set_allow_lazy_compile(lazy);
138 set_outer_language_mode(
144 set_block_coverage_enabled(block_coverage_enabled() && is_user_javascript);
152 set_is_module(script->origin_options().IsModule());
155 set_block_coverage_enabled(block_coverage_enabled() &&
156 script->IsUserJavaScript());
163 v8_file_logger_(isolate->v8_file_logger()),
164 dispatcher_(isolate->lazy_compile_dispatcher()),
165 ast_string_constants_(isolate->ast_string_constants()),
167 "unoptimized-compile-ast-raw-string-zone"),
168 single_parse_zone_(
allocator_,
"unoptimized-compile-parse-zone"),
171 ast_string_constants(), hash_seed())) {}
177 v8_file_logger_(isolate->main_thread_logger()),
178 dispatcher_(isolate->lazy_compile_dispatcher()),
179 ast_string_constants_(isolate->ast_string_constants()),
181 "unoptimized-compile-ast-raw-string-zone"),
182 single_parse_zone_(
allocator_,
"unoptimized-compile-parse-zone"),
185 ast_string_constants(), hash_seed())) {}
192 uintptr_t stack_limit,
196 reusable_state_(reusable_state),
198 script_scope_(nullptr),
202 character_stream_(nullptr),
203 function_name_(nullptr),
204 runtime_call_stats_(runtime_call_stats),
205 source_range_map_(nullptr),
207 allow_eval_cache_(false),
208#if V8_ENABLE_WEBASSEMBLY
209 contains_asm_module_(false),
212 is_background_compilation_(false),
213 is_streaming_compilation_(false),
214 has_module_in_scope_chain_(flags.is_module()) {
215 if (flags.block_coverage_enabled()) {
216 AllocateSourceRangeMap();
223 :
ParseInfo(flags, state, reusable_state,
224 isolate->stack_guard()->real_climit(),
225 isolate->counters()->runtime_call_stats()) {}
230 uintptr_t stack_limit)
231 :
ParseInfo(flags, state, reusable_state, stack_limit,
232 isolate->runtime_call_stats()) {}
238template <
typename IsolateT>
255 isolate->factory()->NewScriptWithId(source,
flags().script_id(), event);
268 raw_script->set_origin_options(origin_options);
269 raw_script->set_is_repl_mode(
flags().is_repl_mode());
273 raw_script->set_wrapped_arguments(
275 }
else if (
flags().is_eval()) {
303 std::unique_ptr<Utf16CharacterStream> character_stream) {
313 if (script->is_wrapped()) {
324 DCHECK_EQ(
flags().is_module(), script->origin_options().IsModule());
RegisterAllocator * allocator_
DeclarationScope * scope() const
V8_INLINE DirectHandle< T > ToHandleChecked() const
V8_INLINE bool is_null() const
std::unique_ptr< Utf16CharacterStream > character_stream_
bool is_streaming_compilation() const
void AllocateSourceRangeMap()
void CheckFlagsForToplevelCompileFromScript(Tagged< Script > script)
void ResetCharacterStream()
ParseInfo(Isolate *isolate, const UnoptimizedCompileFlags flags, UnoptimizedCompileState *state, ReusableUnoptimizedCompileState *reusable_state)
Utf16CharacterStream * character_stream() const
bool is_background_compilation() const
bool is_wrapped_as_function() const
const UnoptimizedCompileFlags & flags() const
DeclarationScope * scope() const
FunctionLiteral * literal() const
SourceRangeMap * source_range_map() const
void set_character_stream(std::unique_ptr< Utf16CharacterStream > character_stream)
ReusableUnoptimizedCompileState * reusable_state_
void CheckFlagsForFunctionFromScript(Tagged< Script > script)
Handle< Script > CreateScript(IsolateT *isolate, DirectHandle< String > source, MaybeDirectHandle< FixedArray > maybe_wrapped_arguments, ScriptOriginOptions origin_options, NativesFlag natives=NOT_NATIVES_CODE)
void set_source_range_map(SourceRangeMap *source_range_map)
~ReusableUnoptimizedCompileState()
ReusableUnoptimizedCompileState(Isolate *isolate)
void NotifySingleParseCompleted()
static constexpr int kTemporaryScriptId
void SetFlagsFromFunction(T function)
static UnoptimizedCompileFlags ForToplevelCompile(Isolate *isolate, bool is_user_javascript, LanguageMode language_mode, REPLMode repl_mode, ScriptType type, bool lazy)
UnoptimizedCompileFlags & set_function_kind(FunctionKind value)
static UnoptimizedCompileFlags ForFunctionCompile(Isolate *isolate, Tagged< SharedFunctionInfo > shared)
UnoptimizedCompileFlags(Isolate *isolate, int script_id)
static UnoptimizedCompileFlags ForToplevelFunction(const UnoptimizedCompileFlags toplevel_flags, const FunctionLiteral *literal)
void SetFlagsForFunctionFromScript(Tagged< Script > script)
static UnoptimizedCompileFlags ForTest(Isolate *isolate)
UnoptimizedCompileFlags & set_function_syntax_kind(FunctionSyntaxKind value)
void SetFlagsForToplevelCompile(bool is_user_javascript, LanguageMode language_mode, REPLMode repl_mode, ScriptType type, bool lazy)
static UnoptimizedCompileFlags ForScriptCompile(Isolate *isolate, Tagged< Script > script)
LanguageMode language_mode_
enum v8::internal::@1270::DeoptimizableCodeIterator::@67 state_
#define EXPORT_TEMPLATE_DEFINE(export)
FunctionLiteral * literal
#define LOG(isolate, Call)
LanguageMode stricter_language_mode(LanguageMode mode1, LanguageMode mode2)
constexpr int kNoSourcePosition
REPLMode construct_repl_mode(bool is_repl_mode)
constexpr int kInvalidInfoId
V8_EXPORT_PRIVATE FlagValues v8_flags
uint64_t HashSeed(Isolate *isolate)
@ kStreamingCompileForeground
@ kStreamingCompileBackground
kInterpreterTrampolineOffset script
Tagged< To > Cast(Tagged< From > value, const v8::SourceLocation &loc=INIT_SOURCE_LOCATION_IN_DEBUG)
const uintptr_t stack_limit_
#define DCHECK_IMPLIES(v1, v2)
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)
#define V8_EXPORT_PRIVATE