hotspot/src/share/vm/c1/c1_Compilation.hpp
changeset 5707 6c66849ed24e
parent 5547 f4b087cbb361
child 6176 4d9030fe341f
equal deleted inserted replaced
5706:0c91076143f9 5707:6c66849ed24e
    52 define_stack(ExceptionInfoList,  ExceptionInfoArray)
    52 define_stack(ExceptionInfoList,  ExceptionInfoArray)
    53 
    53 
    54 class Compilation: public StackObj {
    54 class Compilation: public StackObj {
    55   friend class CompilationResourceObj;
    55   friend class CompilationResourceObj;
    56  private:
    56  private:
    57 
       
    58   static Arena* _arena;
       
    59   static Arena* arena() { return _arena; }
       
    60 
       
    61   static Compilation* _compilation;
       
    62 
       
    63  private:
       
    64   // compilation specifics
    57   // compilation specifics
       
    58   Arena* _arena;
       
    59   int _next_id;
       
    60   int _next_block_id;
    65   AbstractCompiler*  _compiler;
    61   AbstractCompiler*  _compiler;
    66   ciEnv*             _env;
    62   ciEnv*             _env;
    67   ciMethod*          _method;
    63   ciMethod*          _method;
    68   int                _osr_bci;
    64   int                _osr_bci;
    69   IR*                _hir;
    65   IR*                _hir;
   106   Instruction*       _last_instruction_printed;  // the last instruction printed during traversal
   102   Instruction*       _last_instruction_printed;  // the last instruction printed during traversal
   107 #endif // PRODUCT
   103 #endif // PRODUCT
   108 
   104 
   109  public:
   105  public:
   110   // creation
   106   // creation
   111   Compilation(AbstractCompiler* compiler, ciEnv* env, ciMethod* method, int osr_bci);
   107   Compilation(AbstractCompiler* compiler, ciEnv* env, ciMethod* method,
       
   108               int osr_bci, BufferBlob* buffer_blob);
   112   ~Compilation();
   109   ~Compilation();
   113 
   110 
   114   static Compilation* current_compilation()      { return _compilation; }
   111 
       
   112   static Compilation* current() {
       
   113     return (Compilation*) ciEnv::current()->compiler_data();
       
   114   }
   115 
   115 
   116   // accessors
   116   // accessors
   117   ciEnv* env() const                             { return _env; }
   117   ciEnv* env() const                             { return _env; }
   118   AbstractCompiler* compiler() const             { return _compiler; }
   118   AbstractCompiler* compiler() const             { return _compiler; }
   119   bool has_exception_handlers() const            { return _has_exception_handlers; }
   119   bool has_exception_handlers() const            { return _has_exception_handlers; }
   126   int max_spills() const                         { return _max_spills; }
   126   int max_spills() const                         { return _max_spills; }
   127   FrameMap* frame_map() const                    { return _frame_map; }
   127   FrameMap* frame_map() const                    { return _frame_map; }
   128   CodeBuffer* code()                             { return &_code; }
   128   CodeBuffer* code()                             { return &_code; }
   129   C1_MacroAssembler* masm() const                { return _masm; }
   129   C1_MacroAssembler* masm() const                { return _masm; }
   130   CodeOffsets* offsets()                         { return &_offsets; }
   130   CodeOffsets* offsets()                         { return &_offsets; }
       
   131   Arena* arena()                                 { return _arena; }
       
   132 
       
   133   // Instruction ids
       
   134   int get_next_id()                              { return _next_id++; }
       
   135   int number_of_instructions() const             { return _next_id; }
       
   136 
       
   137   // BlockBegin ids
       
   138   int get_next_block_id()                        { return _next_block_id++; }
       
   139   int number_of_blocks() const                   { return _next_block_id; }
   131 
   140 
   132   // setters
   141   // setters
   133   void set_has_exception_handlers(bool f)        { _has_exception_handlers = f; }
   142   void set_has_exception_handlers(bool f)        { _has_exception_handlers = f; }
   134   void set_has_fpu_code(bool f)                  { _has_fpu_code = f; }
   143   void set_has_fpu_code(bool f)                  { _has_fpu_code = f; }
   135   void set_has_unsafe_access(bool f)             { _has_unsafe_access = f; }
   144   void set_has_unsafe_access(bool f)             { _has_unsafe_access = f; }
   155 
   164 
   156   // error handling
   165   // error handling
   157   void bailout(const char* msg);
   166   void bailout(const char* msg);
   158   bool bailed_out() const                        { return _bailout_msg != NULL; }
   167   bool bailed_out() const                        { return _bailout_msg != NULL; }
   159   const char* bailout_msg() const                { return _bailout_msg; }
   168   const char* bailout_msg() const                { return _bailout_msg; }
       
   169 
       
   170   static int desired_max_code_buffer_size() {
       
   171     return (int) NMethodSizeLimit;  // default 256K or 512K
       
   172   }
       
   173   static int desired_max_constant_size() {
       
   174     return (int) NMethodSizeLimit / 10;  // about 25K
       
   175   }
       
   176 
       
   177   static void setup_code_buffer(CodeBuffer* cb, int call_stub_estimate);
   160 
   178 
   161   // timers
   179   // timers
   162   static void print_timers();
   180   static void print_timers();
   163 
   181 
   164 #ifndef PRODUCT
   182 #ifndef PRODUCT
   201 
   219 
   202 //----------------------------------------------------------------------
   220 //----------------------------------------------------------------------
   203 // Base class for objects allocated by the compiler in the compilation arena
   221 // Base class for objects allocated by the compiler in the compilation arena
   204 class CompilationResourceObj ALLOCATION_SUPER_CLASS_SPEC {
   222 class CompilationResourceObj ALLOCATION_SUPER_CLASS_SPEC {
   205  public:
   223  public:
   206   void* operator new(size_t size) { return Compilation::arena()->Amalloc(size); }
   224   void* operator new(size_t size) { return Compilation::current()->arena()->Amalloc(size); }
       
   225   void* operator new(size_t size, Arena* arena) {
       
   226     return arena->Amalloc(size);
       
   227   }
   207   void  operator delete(void* p) {} // nothing to do
   228   void  operator delete(void* p) {} // nothing to do
   208 };
   229 };
   209 
   230 
   210 
   231 
   211 //----------------------------------------------------------------------
   232 //----------------------------------------------------------------------