< prev index next >

src/hotspot/share/code/icBuffer.hpp


93 
94 class InlineCacheBuffer: public AllStatic {                                                                                          
95  private:                                                                                                                            
96   // friends                                                                                                                         
97   friend class ICStub;                                                                                                               
98 
99   static int ic_stub_code_size();                                                                                                    
100 
101   static StubQueue* _buffer;                                                                                                         
102   static ICStub*    _next_stub;                                                                                                      
103 
104   static CompiledICHolder* _pending_released;                                                                                        
105   static int _pending_count;                                                                                                         
106 
107   static StubQueue* buffer()                         { return _buffer;         }                                                     
108   static void       set_next_stub(ICStub* next_stub) { _next_stub = next_stub; }                                                     
109   static ICStub*    get_next_stub()                  { return _next_stub;      }                                                     
110 
111   static void       init_next_stub();                                                                                                
112 
113   static ICStub* new_ic_stub();                                                                                                      
114 
                                                                                                                                     
115 
116   // Machine-dependent implementation of ICBuffer                                                                                    
117   static void    assemble_ic_buffer_code(address code_begin, void* cached_value, address entry_point);                               
118   static address ic_buffer_entry_point  (address code_begin);                                                                        
119   static void*   ic_buffer_cached_value (address code_begin);                                                                        
120 
121  public:                                                                                                                             
122 
123     // Initialization; must be called before first usage                                                                             
124   static void initialize();                                                                                                          
125 
126   // Access                                                                                                                          
127   static bool contains(address instruction_address);                                                                                 
128 
129     // removes the ICStubs after backpatching                                                                                        
130   static void update_inline_caches();                                                                                                
                                                                                                                                     
131 
132   // for debugging                                                                                                                   
133   static bool is_empty();                                                                                                            
134 
135   static void release_pending_icholders();                                                                                           
136   static void queue_for_release(CompiledICHolder* icholder);                                                                         
137   static int pending_icholder_count() { return _pending_count; }                                                                     
138 
139   // New interface                                                                                                                   
140   static void    create_transition_stub(CompiledIC *ic, void* cached_value, address entry);                                          
141   static address ic_destination_for(CompiledIC *ic);                                                                                 
142   static void*   cached_value_for(CompiledIC *ic);                                                                                   
143 };                                                                                                                                   
144 
145 #endif // SHARE_VM_CODE_ICBUFFER_HPP                                                                                                 

93 
94 class InlineCacheBuffer: public AllStatic {
95  private:
96   // friends
97   friend class ICStub;
98 
99   static int ic_stub_code_size();
100 
101   static StubQueue* _buffer;
102   static ICStub*    _next_stub;
103 
104   static CompiledICHolder* _pending_released;
105   static int _pending_count;
106 
107   static StubQueue* buffer()                         { return _buffer;         }
108   static void       set_next_stub(ICStub* next_stub) { _next_stub = next_stub; }
109   static ICStub*    get_next_stub()                  { return _next_stub;      }
110 
111   static void       init_next_stub();
112 

113 
114   static ICStub* new_ic_stub();
115 
116   // Machine-dependent implementation of ICBuffer
117   static void    assemble_ic_buffer_code(address code_begin, void* cached_value, address entry_point);
118   static address ic_buffer_entry_point  (address code_begin);
119   static void*   ic_buffer_cached_value (address code_begin);
120 
121  public:
122 
123     // Initialization; must be called before first usage
124   static void initialize();
125 
126   // Access
127   static bool contains(address instruction_address);
128 
129     // removes the ICStubs after backpatching
130   static void update_inline_caches();
131   static void refill_ic_stubs();
132 
133   // for debugging
134   static bool is_empty();
135 
136   static void release_pending_icholders();
137   static void queue_for_release(CompiledICHolder* icholder);
138   static int pending_icholder_count() { return _pending_count; }
139 
140   // New interface
141   static bool    create_transition_stub(CompiledIC *ic, void* cached_value, address entry);
142   static address ic_destination_for(CompiledIC *ic);
143   static void*   cached_value_for(CompiledIC *ic);
144 };
145 
146 #endif // SHARE_VM_CODE_ICBUFFER_HPP
< prev index next >