16 class AstValueFactory;
17 class HydrogenCodeStub;
217 return FLAG_optimize_for_size && FLAG_age_code && !
will_serialize() &&
269 (FLAG_trap_on_stub_deopt &&
IsStub());
373 DCHECK(!OptimizingCompilerThread::IsOptimizerThread(
isolate()));
378 DCHECK(!OptimizingCompilerThread::IsOptimizerThread(
isolate()));
561 : deferred_(info->isolate()), info_(info) {}
563 info_->set_deferred_handles(deferred_.Detach());
696 int column_offset,
bool is_shared_cross_origin,
Handle<Context> context,
737 const char*
name()
const {
return name_; }
For streaming incomplete script data to V8.
DISALLOW_COPY_AND_ASSIGN(CompilationPhase)
bool ShouldProduceTraceOutput() const
Isolate * isolate() const
~CompilationHandleScope()
DeferredHandleScope deferred_
CompilationInfo * info() const
CompilationHandleScope(CompilationInfo *info)
base::ElapsedTimer timer_
CompilationPhase(const char *name, CompilationInfo *info)
const char * name() const
unsigned info_zone_start_allocation_size_
static const int kPrologueOffsetNotSet
CompilationInfoWithZone(Handle< Script > script)
CompilationInfoWithZone(Handle< JSFunction > closure)
virtual ~CompilationInfoWithZone()
CompilationInfoWithZone(ScriptCompiler::ExternalSourceStream *stream, ScriptCompiler::StreamedSource::Encoding encoding, Isolate *isolate)
CompilationInfoWithZone(HydrogenCodeStub *stub, Isolate *isolate)
CompilationInfoWithZone(Handle< SharedFunctionInfo > shared_info)
bool IsOptimizing() const
v8::Extension * extension_
bool GetMustNotHaveEagerFrame() const
void MarkAsNonDeferredCalling()
Handle< JSFunction > closure_
void PrepareForSerializing()
Handle< Foreign > object_wrapper_
bool is_context_specializing() const
AstNode::IdGen * ast_node_id_gen()
void SetCode(Handle< Code > code)
List< OffsetRange > * no_frame_ranges_
bool ShouldTrapOnDeopt() const
virtual ~CompilationInfo()
void AbortOptimization(BailoutReason reason)
bool IsOptimizable() const
BailoutId osr_ast_id() const
void MarkCompilingForDebugging()
ScriptCompiler::ExternalSourceStream * source_stream() const
GlobalObject * global_object() const
void SetCachedData(ScriptData **cached_data, ScriptCompiler::CompileOptions compile_options)
BailoutReason bailout_reason() const
bool GetFlag(Flag flag) const
void MarkAsRequiresFrame()
void EnableDeoptimizationSupport()
ScriptCompiler::CompileOptions compile_options_
void RetryOptimization(BailoutReason reason)
ZoneList< Handle< HeapObject > > * dependencies_[DependentCode::kGroupCount]
bool is_typing_enabled() const
HydrogenCodeStub * code_stub() const
bool ast_value_factory_owned_
Handle< Code > code() const
void SetFlag(Flag flag, bool value)
ScriptCompiler::StreamedSource::Encoding source_stream_encoding() const
bool ShouldSelfOptimize()
void PrepareForCompilation(Scope *scope)
List< OffsetRange > * ReleaseNoFrameRanges()
ScriptCompiler::CompileOptions compile_options() const
Scope * global_scope() const
Code::Flags flags() const
bool IsCompilingForDebugging()
AstNode::IdGen ast_node_id_gen_
void set_prologue_offset(int prologue_offset)
void AbortDueToDependencyChange()
ScriptData ** cached_data() const
void MarkNonOptimizable()
void MarkAsTypingEnabled()
void MarkAsInliningEnabled()
bool has_global_object() const
int num_parameters() const
BailoutReason bailout_reason_
ZoneList< Handle< HeapObject > > * dependencies(DependentCode::DependencyGroup group)
bool HasAbortedDueToDependencyChange() const
void SetExtension(v8::Extension *extension)
Handle< Script > script() const
void SetGlobalScope(Scope *global_scope)
bool is_non_deferred_calling() const
Handle< Context > context() const
void MarkAsContextSpecializing()
ScriptCompiler::StreamedSource::Encoding source_stream_encoding_
HydrogenCodeStub * code_stub_
void AddNoFrameRange(int from, int to)
Handle< TypeFeedbackVector > feedback_vector_
bool HasDeoptimizationSupport() const
v8::Extension * extension() const
Handle< SharedFunctionInfo > shared_info_
void SetFunction(FunctionLiteral *literal)
Handle< Code > unoptimized_code() const
void SetOptimizing(BailoutId osr_ast_id, Handle< Code > unoptimized)
void SaveHandle(Handle< T > *object)
Handle< Context > context_
DeferredHandles * deferred_handles_
AstValueFactory * ast_value_factory() const
int prologue_offset() const
void SetStrictMode(StrictMode strict_mode)
void set_this_has_uses(bool has_no_uses)
void SetContext(Handle< Context > context)
bool will_serialize() const
void MarkMustNotHaveEagerFrame()
Handle< Foreign > object_wrapper()
ScriptCompiler::ExternalSourceStream * source_stream_
void CommitDependencies(Handle< Code > code)
bool HasSameOsrEntry(Handle< JSFunction > function, BailoutId osr_ast_id)
bool requires_frame() const
void SetAstValueFactory(AstValueFactory *ast_value_factory, bool owned=true)
ScriptData ** cached_data_
void RollbackDependencies()
Handle< JSFunction > closure() const
StrictMode strict_mode() const
void SetParseRestriction(ParseRestriction restriction)
bool saves_caller_doubles() const
bool is_deferred_calling() const
int num_heap_slots() const
Isolate * isolate() const
Handle< TypeFeedbackVector > feedback_vector() const
Handle< Code > unoptimized_code_
int optimization_id() const
ParseRestriction parse_restriction() const
Handle< SharedFunctionInfo > shared_info() const
void Initialize(Isolate *isolate, Mode mode, Zone *zone)
AstValueFactory * ast_value_factory_
void set_parameter_count(int parameter_count)
void MarkAsSavesCallerDoubles()
void MarkAsDeferredCalling()
DISALLOW_COPY_AND_ASSIGN(CompilationInfo)
FunctionLiteral * function_
void set_deferred_handles(DeferredHandles *deferred_handles)
void MarkAsInliningDisabled()
@ kAbortedDueToDependency
@ kDisableFutureOptimization
void set_script(Handle< Script > script)
bool IsCodePreAgingActive() const
CompilationInfo(Handle< JSFunction > closure, Zone *zone)
bool is_inlining_enabled() const
static MUST_USE_RESULT MaybeHandle< JSFunction > GetFunctionFromEval(Handle< String > source, Handle< Context > context, StrictMode strict_mode, ParseRestriction restriction, int scope_position)
static Handle< SharedFunctionInfo > CompileStreamedScript(CompilationInfo *info, int source_length)
static bool EnsureDeoptimizationSupport(CompilationInfo *info)
static MUST_USE_RESULT MaybeHandle< Code > GetDebugCode(Handle< JSFunction > function)
static MUST_USE_RESULT MaybeHandle< Code > GetOptimizedCode(Handle< JSFunction > function, Handle< Code > current_code, ConcurrencyMode mode, BailoutId osr_ast_id=BailoutId::None())
static MUST_USE_RESULT MaybeHandle< Code > GetLazyCode(Handle< JSFunction > function)
static bool DebuggerWantsEagerCompilation(CompilationInfo *info, bool allow_lazy_without_ctx=false)
static Handle< Code > GetConcurrentlyOptimizedCode(OptimizedCompileJob *job)
static bool EnsureCompiled(Handle< JSFunction > function, ClearExceptionFlag flag)
static MUST_USE_RESULT MaybeHandle< Code > GetUnoptimizedCode(Handle< JSFunction > function)
static void CompileForLiveEdit(Handle< Script > script)
static Handle< SharedFunctionInfo > CompileScript(Handle< String > source, Handle< Object > script_name, int line_offset, int column_offset, bool is_shared_cross_origin, Handle< Context > context, v8::Extension *extension, ScriptData **cached_data, ScriptCompiler::CompileOptions compile_options, NativesFlag is_natives_code)
static Handle< SharedFunctionInfo > BuildFunctionInfo(FunctionLiteral *node, Handle< Script > script, CompilationInfo *outer)
static const int kGroupCount
Isolate * isolate() const
void RecordOptimizationStats()
MUST_USE_RESULT Status OptimizeGraph()
MUST_USE_RESULT Status GenerateCode()
Status AbortOptimization(BailoutReason reason)
Status last_status() const
OptimizedCompileJob(CompilationInfo *info)
HOptimizedGraphBuilder * graph_builder_
CompilationInfo * info() const
bool IsWaitingForInstall()
base::TimeDelta time_taken_to_create_graph_
Status RetryOptimization(BailoutReason reason)
MUST_USE_RESULT Status SetLastStatus(Status status)
base::TimeDelta time_taken_to_optimize_
MUST_USE_RESULT Status CreateGraph()
base::TimeDelta time_taken_to_codegen_
void AcquireDataOwnership()
const byte * data() const
DISALLOW_COPY_AND_ASSIGN(ScriptData)
void ReleaseDataOwnership()
ScriptData(const byte *data, int length)
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be expose gc extension under the specified name show built in functions in stack traces use random jit cookie to mask large constants minimum length for automatic enable preparsing CPU profiler sampling interval in microseconds trace out of bounds accesses to external arrays default size of stack region v8 is allowed to maximum length of function source code printed in a stack trace min size of a semi the new space consists of two semi spaces print one trace line following each garbage collection do not print trace line after scavenger collection print cumulative GC statistics in only print modified registers Trace simulator debug messages Implied by trace sim abort randomize hashes to avoid predictable hash Fixed seed to use to hash property Print the time it takes to deserialize the snapshot A filename with extra code to be included in the A file to write the raw snapshot bytes to(mksnapshot only)") DEFINE_STRING(raw_context_file
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be expose gc extension under the specified name show built in functions in stack traces use random jit cookie to mask large constants minimum length for automatic enable preparsing CPU profiler sampling interval in microseconds trace out of bounds accesses to external arrays default size of stack region v8 is allowed to maximum length of function source code printed in a stack trace min size of a semi the new space consists of two semi spaces print one trace line following each garbage collection do not print trace line after scavenger collection print cumulative GC statistics in name
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long mode(MIPS only)") DEFINE_BOOL(enable_always_align_csp
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be NULL
#define DCHECK_NE(v1, v2)
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)
void DeleteArray(T *array)
Handle< T > handle(T *t, Isolate *isolate)
kFeedbackVectorOffset flag
@ ONLY_SINGLE_FUNCTION_LITERAL
Debugger support for the V8 JavaScript engine.
OffsetRange(int from, int to)
OptimizedCompileJob * job_
base::ElapsedTimer timer_
Timer(OptimizedCompileJob *job, base::TimeDelta *location)
base::TimeDelta * location_