| Index: runtime/vm/compiler.h | 
| diff --git a/runtime/vm/compiler.h b/runtime/vm/compiler.h | 
| index e193dbf856a212b72b13f5d1018980b4da5deba4..01822ace3c3d98544a6ce52bf641e9d39c8741d3 100644 | 
| --- a/runtime/vm/compiler.h | 
| +++ b/runtime/vm/compiler.h | 
| @@ -17,7 +17,9 @@ class BackgroundCompilationQueue; | 
| class Class; | 
| class Code; | 
| class CompilationWorkQueue; | 
| +class FlowGraph; | 
| class Function; | 
| +class IndirectGotoInstr; | 
| class Library; | 
| class ParsedFunction; | 
| class QueueElement; | 
| @@ -26,6 +28,54 @@ class Script; | 
| class SequenceNode; | 
|  | 
|  | 
| +class CompilationPipeline : public ZoneAllocated { | 
| + public: | 
| +  static CompilationPipeline* New(Zone* zone, const Function& function); | 
| + | 
| +  virtual void ParseFunction(ParsedFunction* parsed_function) = 0; | 
| +  virtual FlowGraph* BuildFlowGraph( | 
| +      Zone* zone, | 
| +      ParsedFunction* parsed_function, | 
| +      const ZoneGrowableArray<const ICData*>& ic_data_array, | 
| +      intptr_t osr_id) = 0; | 
| +  virtual void FinalizeCompilation() = 0; | 
| +  virtual ~CompilationPipeline() { } | 
| +}; | 
| + | 
| + | 
| +class DartCompilationPipeline : public CompilationPipeline { | 
| + public: | 
| +  virtual void ParseFunction(ParsedFunction* parsed_function); | 
| + | 
| +  virtual FlowGraph* BuildFlowGraph( | 
| +      Zone* zone, | 
| +      ParsedFunction* parsed_function, | 
| +      const ZoneGrowableArray<const ICData*>& ic_data_array, | 
| +      intptr_t osr_id); | 
| + | 
| +  virtual void FinalizeCompilation(); | 
| +}; | 
| + | 
| + | 
| +class IrregexpCompilationPipeline : public CompilationPipeline { | 
| + public: | 
| +  IrregexpCompilationPipeline() : backtrack_goto_(NULL) { } | 
| + | 
| +  virtual void ParseFunction(ParsedFunction* parsed_function); | 
| + | 
| +  virtual FlowGraph* BuildFlowGraph( | 
| +      Zone* zone, | 
| +      ParsedFunction* parsed_function, | 
| +      const ZoneGrowableArray<const ICData*>& ic_data_array, | 
| +      intptr_t osr_id); | 
| + | 
| +  virtual void FinalizeCompilation(); | 
| + | 
| + private: | 
| +  IndirectGotoInstr* backtrack_goto_; | 
| +}; | 
| + | 
| + | 
| class Compiler : public AllStatic { | 
| public: | 
| static const intptr_t kNoOSRDeoptId = Thread::kNoDeoptId; | 
| @@ -82,7 +132,6 @@ class Compiler : public AllStatic { | 
| // The return value is either a RawInstance on success or a RawError | 
| // on compilation failure. | 
| static RawObject* EvaluateStaticInitializer(const Field& field); | 
| -  static void CompileStaticInitializer(const Field& field); | 
|  | 
| // Generates local var descriptors and sets it in 'code'. Do not call if the | 
| // local var descriptor already exists. | 
| @@ -93,8 +142,6 @@ class Compiler : public AllStatic { | 
| // Returns Error::null() if there is no compilation error. | 
| static RawError* CompileAllFunctions(const Class& cls); | 
|  | 
| -  static bool always_optimize(); | 
| - | 
| // Notify the compiler that background (optimized) compilation has failed | 
| // because the mutator thread changed the state (e.g., deoptimization, | 
| // deferred loading). The background compilation may retry to compile | 
|  |