| Index: src/compiler.h
|
| diff --git a/src/compiler.h b/src/compiler.h
|
| index 2fcd01aa9029dc5c21a1073ec39ada12728b0c80..73b98321cdc8f80d55a741d2cf709f74877b112b 100644
|
| --- a/src/compiler.h
|
| +++ b/src/compiler.h
|
| @@ -568,20 +568,21 @@ class CompilationInfo {
|
| DISALLOW_COPY_AND_ASSIGN(CompilationInfo);
|
| };
|
|
|
| -
|
| -class HGraph;
|
| -class LChunk;
|
| -
|
| -// A helper class that calls the three compilation phases in
|
| -// Crankshaft and keeps track of its state. The three phases
|
| -// CreateGraph, OptimizeGraph and GenerateAndInstallCode can either
|
| -// 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().
|
| +// A base class for compilation jobs intended to run concurrent to the main
|
| +// thread. The job is split into three phases which are called in sequence on
|
| +// different threads and with different limitations:
|
| +// 1) CreateGraph: Runs on main thread. No major limitations.
|
| +// 2) OptimizeGraph: Runs concurrently. No heap allocation or handle derefs.
|
| +// 3) GenerateCode: Runs on main thread. No dependency changes.
|
| +//
|
| +// Each of the three phases can either fail, bail-out to full code generator or
|
| +// succeed. Apart from their return value, the status of the phase last run can
|
| +// be checked using {last_status()} as well.
|
| class OptimizedCompileJob: public ZoneObject {
|
| public:
|
| explicit OptimizedCompileJob(CompilationInfo* info)
|
| - : info_(info), graph_(NULL), chunk_(NULL), last_status_(FAILED) {}
|
| + : info_(info), last_status_(SUCCEEDED) {}
|
| + virtual ~OptimizedCompileJob() {}
|
|
|
| enum Status {
|
| FAILED, BAILED_OUT, SUCCEEDED
|
| @@ -605,10 +606,18 @@ class OptimizedCompileJob: public ZoneObject {
|
| return SetLastStatus(BAILED_OUT);
|
| }
|
|
|
| + void RecordOptimizationStats();
|
| +
|
| + protected:
|
| + void RegisterWeakObjectsInOptimizedCode(Handle<Code> code);
|
| +
|
| + // Overridden by the actual implementation.
|
| + virtual Status CreateGraphImpl() = 0;
|
| + virtual Status OptimizeGraphImpl() = 0;
|
| + virtual Status GenerateCodeImpl() = 0;
|
| +
|
| private:
|
| CompilationInfo* info_;
|
| - HGraph* graph_;
|
| - LChunk* chunk_;
|
| base::TimeDelta time_taken_to_create_graph_;
|
| base::TimeDelta time_taken_to_optimize_;
|
| base::TimeDelta time_taken_to_codegen_;
|
| @@ -618,23 +627,6 @@ class OptimizedCompileJob: public ZoneObject {
|
| last_status_ = status;
|
| return last_status_;
|
| }
|
| - void RecordOptimizationStats();
|
| -
|
| - struct Timer {
|
| - Timer(OptimizedCompileJob* job, base::TimeDelta* location)
|
| - : job_(job), location_(location) {
|
| - DCHECK(location_ != NULL);
|
| - timer_.Start();
|
| - }
|
| -
|
| - ~Timer() {
|
| - *location_ += timer_.Elapsed();
|
| - }
|
| -
|
| - OptimizedCompileJob* job_;
|
| - base::ElapsedTimer timer_;
|
| - base::TimeDelta* location_;
|
| - };
|
| };
|
|
|
| } // namespace internal
|
|
|