5#ifndef V8_CODEGEN_COMPILER_H_ 
    6#define V8_CODEGEN_COMPILER_H_ 
   39class AlignedCachedData;
 
   40class BackgroundCompileTask;
 
   42class OptimizedCompilationInfo;
 
   44class RuntimeCallStats;
 
   46class TurbofanCompilationJob;
 
   47class UnoptimizedCompilationInfo;
 
   48class UnoptimizedCompilationJob;
 
   49class UnoptimizedJSFrame;
 
   50class WorkerThreadRuntimeCallStats;
 
   52struct ScriptStreamingData;
 
   55class MaglevCompilationJob;
 
 
   86                      ClearExceptionFlag flag,
 
   89                          CreateSourcePositions::kNo);
 
   91                      ClearExceptionFlag flag,
 
   97  static bool CompileSharedWithBaseline(
Isolate* isolate,
 
   99                                        ClearExceptionFlag flag,
 
  101  static bool CompileBaseline(
Isolate* isolate,
 
  103                              ClearExceptionFlag flag,
 
  106  static void CompileOptimized(
Isolate* isolate,
 
  125  static bool CollectSourcePositions(
Isolate* isolate,
 
  131                                            ClearExceptionFlag flag);
 
  134  static void DisposeTurbofanCompilationJob(
Isolate* isolate,
 
  142  static void FinalizeMaglevCompilationJob(maglev::MaglevCompilationJob* job,
 
  146  static void DisposeMaglevCompilationJob(maglev::MaglevCompilationJob* job,
 
  152  static void PostInstantiation(
Isolate* isolate,
 
  173                          ParsingWhileDebugging::kNo);
 
  192  ValidateDynamicCompilationSource(
Isolate* isolate,
 
  195                                   bool is_code_like = 
false);
 
  200                                 int parameters_end_pos);
 
  213  GetSharedFunctionInfoForScriptWithExtension(
 
  224  GetSharedFunctionInfoForScriptWithCachedData(
 
  237  GetSharedFunctionInfoForScriptWithDeserializeTask(
 
  247  GetSharedFunctionInfoForScriptWithCompileHints(
 
  251      void* compile_hint_callback_data,
 
  263  GetSharedFunctionInfoForStreamedScript(
 
  270  template <
typename IsolateT>
 
  274  static void LogFunctionCompilation(
Isolate* isolate,
 
  282  static void InstallInterpreterTrampolineCopy(
 
 
  314      case RETRY_ON_MAIN_THREAD:
 
 
 
  467      State initial_state);
 
 
  543    std::vector<FinalizeUnoptimizedCompilationData>;
 
  549                              std::unique_ptr<UnoptimizedCompilationJob> 
job) {
 
 
  554                              std::unique_ptr<UnoptimizedCompilationJob> 
job);
 
  564  std::unique_ptr<UnoptimizedCompilationJob> 
job_;
 
 
  583    std::vector<DeferredFinalizationJobData>;
 
  595                        void* compile_hint_callback_data = 
nullptr);
 
  605      std::unique_ptr<Utf16CharacterStream> character_stream,
 
  610  void RunOnMainThread(
Isolate* isolate);
 
  621  void AbortFunction();
 
  626  void ReportStatistics(
Isolate* isolate);
 
  630  bool is_streaming_compilation() 
const;
 
  651  int total_preparse_skipped_ = 0;
 
  660  void* compile_hint_callback_data_ = 
nullptr;
 
 
  667      std::unique_ptr<ScriptCompiler::ExternalSourceStream> source_stream,
 
  680  std::unique_ptr<BackgroundCompileTask> 
task;
 
 
  686                            std::unique_ptr<ScriptCompiler::CachedData> data);
 
  701  bool ShouldMergeWithExistingScript() 
const;
 
  707  void MergeWithExistingScript();
 
  716    return background_time_in_microseconds_;
 
 
  725  int64_t background_time_in_microseconds_ = 0;
 
 
TimeDelta Elapsed() const
double InMillisecondsF() const
WorkerThreadRuntimeCallStats * worker_thread_runtime_call_stats_
IsCompiledScope is_compiled_scope_
std::unique_ptr< Utf16CharacterStream > character_stream_
void ClearFunctionJobPointer()
MaybeIndirectHandle< SharedFunctionInfo > outer_function_sfi_
ScriptCompiler::CompilationDetails * compilation_details_
UnoptimizedCompileFlags flags_
BackgroundCompileTask & operator=(const BackgroundCompileTask &)=delete
Isolate * isolate_for_local_isolate_
DeferredFinalizationJobDataList jobs_to_retry_finalization_on_main_thread_
UnoptimizedCompileState compile_state_
FinalizeUnoptimizedCompilationDataList finalize_unoptimized_compilation_data_
BackgroundCompileTask(const BackgroundCompileTask &)=delete
UnoptimizedCompileFlags flags() const
std::unique_ptr< PersistentHandles > persistent_handles_
IndirectHandle< Script > script_
base::SmallVector< v8::Isolate::UseCounterFeature, 8 > use_counts_
MaybeIndirectHandle< SharedFunctionInfo > input_shared_info_
CodeSerializer::OffThreadDeserializeData off_thread_data_
int64_t background_time_in_microseconds() const
BackgroundMergeTask background_merge_task_
AlignedCachedData cached_data_
Isolate * isolate_for_local_isolate_
CompilationHandleScope(Isolate *isolate, OptimizedCompilationInfo *info)
PersistentHandlesScope persistent_
OptimizedCompilationInfo * info_
V8_WARN_UNUSED_RESULT Status UpdateState(Status status, State next_state)
virtual ~CompilationJob()=default
CompilationJob(State initial_state)
DeferredFinalizationJobData(Isolate *isolate, DirectHandle< SharedFunctionInfo > function_handle, std::unique_ptr< UnoptimizedCompilationJob > job)
std::unique_ptr< UnoptimizedCompilationJob > job_
Handle< SharedFunctionInfo > function_handle_
UnoptimizedCompilationJob * job() const
Handle< SharedFunctionInfo > function_handle() const
base::TimeDelta time_taken_to_finalize() const
MaybeHandle< CoverageInfo > coverage_info_
MaybeDirectHandle< CoverageInfo > coverage_info() const
Handle< SharedFunctionInfo > function_handle_
Handle< SharedFunctionInfo > function_handle() const
FinalizeUnoptimizedCompilationData(Isolate *isolate, Handle< SharedFunctionInfo > function_handle, MaybeHandle< CoverageInfo > coverage_info, base::TimeDelta time_taken_to_execute, base::TimeDelta time_taken_to_finalize)
base::TimeDelta time_taken_to_finalize_
base::TimeDelta time_taken_to_execute() const
base::TimeDelta time_taken_to_execute_
const char * compiler_name() const
base::ElapsedTimer timer_
double prepare_in_ms() const
void RegisterWeakObjectsInOptimizedCode(Isolate *isolate, DirectHandle< NativeContext > context, DirectHandle< Code > code, GlobalHandleVector< Map > maps)
OptimizedCompilationJob(const char *compiler_name, State initial_state)
V8_WARN_UNUSED_RESULT base::TimeDelta ElapsedTime() const
base::TimeDelta time_taken_to_prepare_
GlobalHandleVector< Map > CollectRetainedMaps(Isolate *isolate, DirectHandle< Code > code)
V8_EXPORT_PRIVATE V8_WARN_UNUSED_RESULT Status FinalizeJob(Isolate *isolate)
double execute_in_ms() const
const char *const compiler_name_
virtual Status PrepareJobImpl(Isolate *isolate)=0
virtual Status FinalizeJobImpl(Isolate *isolate)=0
double finalize_in_ms() const
virtual Status ExecuteJobImpl(RuntimeCallStats *stats, LocalIsolate *local_heap)=0
V8_EXPORT_PRIVATE V8_WARN_UNUSED_RESULT Status PrepareJob(Isolate *isolate)
base::TimeDelta time_taken_to_execute_
V8_EXPORT_PRIVATE V8_WARN_UNUSED_RESULT Status ExecuteJob(RuntimeCallStats *stats, LocalIsolate *local_isolate=nullptr)
base::TimeDelta time_taken_to_finalize_
virtual int FinalizeOrder() const
OptimizedCompilationInfo *const compilation_info_
uint64_t trace_id() const
Status RetryOptimization(BailoutReason reason)
Status AbortOptimization(BailoutReason reason)
V8_EXPORT_PRIVATE TurbofanCompilationJob(Isolate *isolate, OptimizedCompilationInfo *compilation_info, State initial_state)
void RecordFunctionCompilation(LogEventListener::CodeTag code_type, Isolate *isolate) const
OptimizedCompilationInfo * compilation_info() const
void RecordCompilationStats(ConcurrencyMode mode, Isolate *isolate) const
Isolate * isolate() const
void RecordFunctionCompilation(LogEventListener::CodeTag code_type, Handle< SharedFunctionInfo > shared, Isolate *isolate) const
UnoptimizedCompilationInfo * compilation_info_
virtual Status FinalizeJobImpl(DirectHandle< SharedFunctionInfo > shared_info, LocalIsolate *isolate)=0
base::TimeDelta time_taken_to_execute() const
virtual Status ExecuteJobImpl()=0
ParseInfo * parse_info() const
base::TimeDelta time_taken_to_execute_
uintptr_t stack_limit() const
UnoptimizedCompilationJob(uintptr_t stack_limit, ParseInfo *parse_info, UnoptimizedCompilationInfo *compilation_info)
V8_WARN_UNUSED_RESULT Status FinalizeJob(DirectHandle< SharedFunctionInfo > shared_info, Isolate *isolate)
void RecordCompilationStats(Isolate *isolate) const
base::TimeDelta time_taken_to_finalize_
base::TimeDelta time_taken_to_finalize() const
UnoptimizedCompilationInfo * compilation_info() const
V8_WARN_UNUSED_RESULT Status ExecuteJob()
virtual Status FinalizeJobImpl(DirectHandle< SharedFunctionInfo > shared_info, Isolate *isolate)=0
AlignedCachedData * cached_data_
enum v8::internal::@1270::DeoptimizableCodeIterator::@67 state_
PersistentHandlesScope persistent_
static bool IsMaglevOsrEnabled()
static bool IsMaglevEnabled()
std::vector< DeferredFinalizationJobData > DeferredFinalizationJobDataList
V8_EXPORT_PRIVATE FlagValues v8_flags
std::vector< FinalizeUnoptimizedCompilationData > FinalizeUnoptimizedCompilationDataList
bool(*)(int, void *) CompileHintCallback
OptimizedCompilationInfo * info_
#define DCHECK_NOT_NULL(val)
#define V8_EXPORT_PRIVATE
ScriptStreamingData & operator=(const ScriptStreamingData &)=delete
std::unique_ptr< ScriptCompiler::ExternalSourceStream > source_stream
std::unique_ptr< BackgroundCompileTask > task
ScriptCompiler::StreamedSource::Encoding encoding
ScriptStreamingData(const ScriptStreamingData &)=delete
#define V8_WARN_UNUSED_RESULT