hotspot/src/share/vm/compiler/abstractCompiler.hpp

Print this page




  28  private:
  29   bool _is_initialized; // Mark whether compiler object is initialized
  30 
  31  protected:
  32   // Used for tracking global state of compiler runtime initialization
  33   enum { uninitialized, initializing, initialized };
  34 
  35   // This method will call the initialization method "f" once (per compiler class/subclass)
  36   // and do so without holding any locks
  37   void initialize_runtimes(initializer f, volatile int* state);
  38 
  39  public:
  40   AbstractCompiler() : _is_initialized(false)    {}
  41 
  42   // Name of this compiler
  43   virtual const char* name() = 0;
  44 
  45   // Missing feature tests
  46   virtual bool supports_native()                 { return true; }
  47   virtual bool supports_osr   ()                 { return true; }
  48 #if defined(TIERED) || ( !defined(COMPILER1) && !defined(COMPILER2))
  49   virtual bool is_c1   ()                        { return false; }
  50   virtual bool is_c2   ()                        { return false; }

  51 #else
  52 #ifdef COMPILER1
  53   bool is_c1   ()                                { return true; }
  54   bool is_c2   ()                                { return false; }

  55 #endif // COMPILER1
  56 #ifdef COMPILER2
  57   bool is_c1   ()                                { return false; }
  58   bool is_c2   ()                                { return true; }

  59 #endif // COMPILER2





  60 #endif // TIERED
  61 
  62   // Customization
  63   virtual bool needs_stubs            ()         = 0;
  64 
  65   void mark_initialized()                        { _is_initialized = true; }
  66   bool is_initialized()                          { return _is_initialized; }
  67 
  68   virtual void initialize()                      = 0;
  69 
  70   // Compilation entry point for methods
  71   virtual void compile_method(ciEnv* env,
  72                               ciMethod* target,
  73                               int entry_bci) {
  74     ShouldNotReachHere();
  75   }
  76 
  77 
  78   // Print compilation timers and statistics
  79   virtual void print_timers() {


  28  private:
  29   bool _is_initialized; // Mark whether compiler object is initialized
  30 
  31  protected:
  32   // Used for tracking global state of compiler runtime initialization
  33   enum { uninitialized, initializing, initialized };
  34 
  35   // This method will call the initialization method "f" once (per compiler class/subclass)
  36   // and do so without holding any locks
  37   void initialize_runtimes(initializer f, volatile int* state);
  38 
  39  public:
  40   AbstractCompiler() : _is_initialized(false)    {}
  41 
  42   // Name of this compiler
  43   virtual const char* name() = 0;
  44 
  45   // Missing feature tests
  46   virtual bool supports_native()                 { return true; }
  47   virtual bool supports_osr   ()                 { return true; }
  48 #if defined(TIERED) || ( !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK))
  49   virtual bool is_c1   ()                        { return false; }
  50   virtual bool is_c2   ()                        { return false; }
  51   virtual bool is_shark()                        { return false; }
  52 #else
  53 #ifdef COMPILER1
  54   bool is_c1   ()                                { return true; }
  55   bool is_c2   ()                                { return false; }
  56   bool is_shark()                                { return false; }
  57 #endif // COMPILER1
  58 #ifdef COMPILER2
  59   bool is_c1   ()                                { return false; }
  60   bool is_c2   ()                                { return true; }
  61   bool is_shark()                                { return false; }
  62 #endif // COMPILER2
  63 #ifdef SHARK
  64   bool is_c1   ()                                { return false; }
  65   bool is_c2   ()                                { return false; }
  66   bool is_shark()                                { return true; }
  67 #endif // SHARK  
  68 #endif // TIERED
  69 
  70   // Customization
  71   virtual bool needs_stubs            ()         = 0;
  72 
  73   void mark_initialized()                        { _is_initialized = true; }
  74   bool is_initialized()                          { return _is_initialized; }
  75 
  76   virtual void initialize()                      = 0;
  77 
  78   // Compilation entry point for methods
  79   virtual void compile_method(ciEnv* env,
  80                               ciMethod* target,
  81                               int entry_bci) {
  82     ShouldNotReachHere();
  83   }
  84 
  85 
  86   // Print compilation timers and statistics
  87   virtual void print_timers() {