diff options
Diffstat (limited to 'deps/v8/src/compiler.h')
-rw-r--r-- | deps/v8/src/compiler.h | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/deps/v8/src/compiler.h b/deps/v8/src/compiler.h index 8ceb61db9..2d9e52a8e 100644 --- a/deps/v8/src/compiler.h +++ b/deps/v8/src/compiler.h @@ -35,8 +35,6 @@ namespace v8 { namespace internal { -static const int kPrologueOffsetNotSet = -1; - class ScriptDataImpl; class HydrogenCodeStub; @@ -86,6 +84,7 @@ class CompilationInfo { ScriptDataImpl* pre_parse_data() const { return pre_parse_data_; } Handle<Context> context() const { return context_; } BailoutId osr_ast_id() const { return osr_ast_id_; } + uint32_t osr_pc_offset() const { return osr_pc_offset_; } int opt_count() const { return opt_count_; } int num_parameters() const; int num_heap_slots() const; @@ -268,12 +267,12 @@ class CompilationInfo { void set_bailout_reason(BailoutReason reason) { bailout_reason_ = reason; } int prologue_offset() const { - ASSERT_NE(kPrologueOffsetNotSet, prologue_offset_); + ASSERT_NE(Code::kPrologueOffsetNotSet, prologue_offset_); return prologue_offset_; } void set_prologue_offset(int prologue_offset) { - ASSERT_EQ(kPrologueOffsetNotSet, prologue_offset_); + ASSERT_EQ(Code::kPrologueOffsetNotSet, prologue_offset_); prologue_offset_ = prologue_offset; } @@ -505,14 +504,15 @@ class LChunk; // fail, bail-out to the full code generator or succeed. Apart from // their return value, the status of the phase last run can be checked // using last_status(). -class OptimizingCompiler: public ZoneObject { +class RecompileJob: public ZoneObject { public: - explicit OptimizingCompiler(CompilationInfo* info) + explicit RecompileJob(CompilationInfo* info) : info_(info), graph_builder_(NULL), graph_(NULL), chunk_(NULL), - last_status_(FAILED) { } + last_status_(FAILED), + awaiting_install_(false) { } enum Status { FAILED, BAILED_OUT, SUCCEEDED @@ -532,6 +532,13 @@ class OptimizingCompiler: public ZoneObject { return SetLastStatus(BAILED_OUT); } + void WaitForInstall() { + ASSERT(info_->is_osr()); + awaiting_install_ = true; + } + + bool IsWaitingForInstall() { return awaiting_install_; } + private: CompilationInfo* info_; HOptimizedGraphBuilder* graph_builder_; @@ -541,6 +548,7 @@ class OptimizingCompiler: public ZoneObject { TimeDelta time_taken_to_optimize_; TimeDelta time_taken_to_codegen_; Status last_status_; + bool awaiting_install_; MUST_USE_RESULT Status SetLastStatus(Status status) { last_status_ = status; @@ -549,9 +557,8 @@ class OptimizingCompiler: public ZoneObject { void RecordOptimizationStats(); struct Timer { - Timer(OptimizingCompiler* compiler, TimeDelta* location) - : compiler_(compiler), - location_(location) { + Timer(RecompileJob* job, TimeDelta* location) + : job_(job), location_(location) { ASSERT(location_ != NULL); timer_.Start(); } @@ -560,7 +567,7 @@ class OptimizingCompiler: public ZoneObject { *location_ += timer_.Elapsed(); } - OptimizingCompiler* compiler_; + RecompileJob* job_; ElapsedTimer timer_; TimeDelta* location_; }; @@ -625,7 +632,7 @@ class Compiler : public AllStatic { bool is_toplevel, Handle<Script> script); - static Handle<Code> InstallOptimizedCode(OptimizingCompiler* info); + static Handle<Code> InstallOptimizedCode(RecompileJob* job); #ifdef ENABLE_DEBUGGER_SUPPORT static bool MakeCodeForLiveEdit(CompilationInfo* info); |