< prev index next >

src/hotspot/share/code/icBuffer.hpp


99 // detect if a failed IC transition that required IC stub refilling has                                                              
100 // been accidentally missed. It is up to the caller to in that case                                                                  
101 // refill IC stubs.                                                                                                                  
102 class ICRefillVerifier: StackObj {                                                                                                   
103   bool _refill_requested;                                                                                                            
104   bool _refill_remembered;                                                                                                           
105 
106  public:                                                                                                                             
107   ICRefillVerifier();                                                                                                                
108   ~ICRefillVerifier();                                                                                                               
109 
110   void request_refill() { _refill_requested = true; }                                                                                
111   void request_remembered() { _refill_remembered = true; }                                                                           
112 };                                                                                                                                   
113 
114 // The ICRefillVerifierMark is used to set the thread's current                                                                      
115 // ICRefillVerifier to a provided one. This is useful in particular                                                                  
116 // when transitioning IC stubs in parallel and refilling from the                                                                    
117 // master thread invoking the IC stub transitioning code.                                                                            
118 class ICRefillVerifierMark: StackObj {                                                                                               
119 public:                                                                                                                              
120   ICRefillVerifierMark(ICRefillVerifier* verifier);                                                                                  
121   ~ICRefillVerifierMark();                                                                                                           
                                                                                                                                     
                                                                                                                                     
                                                                                                                                     
                                                                                                                                     
                                                                                                                                     
                                                                                                                                     
                                                                                                                                     
                                                                                                                                     
                                                                                                                                     
122 };                                                                                                                                   
123 #endif                                                                                                                               
124 
125 class InlineCacheBuffer: public AllStatic {                                                                                          
126  private:                                                                                                                            
127   // friends                                                                                                                         
128   friend class ICStub;                                                                                                               
129 
130   static int ic_stub_code_size();                                                                                                    
131 
132   static StubQueue* _buffer;                                                                                                         
133 
134   static CompiledICHolder* _pending_released;                                                                                        
135   static int _pending_count;                                                                                                         
136 
137   static StubQueue* buffer()                         { return _buffer;         }                                                     
138 
139   static ICStub* new_ic_stub();                                                                                                      
140 

99 // detect if a failed IC transition that required IC stub refilling has
100 // been accidentally missed. It is up to the caller to in that case
101 // refill IC stubs.
102 class ICRefillVerifier: StackObj {
103   bool _refill_requested;
104   bool _refill_remembered;
105 
106  public:
107   ICRefillVerifier();
108   ~ICRefillVerifier();
109 
110   void request_refill() { _refill_requested = true; }
111   void request_remembered() { _refill_remembered = true; }
112 };
113 
114 // The ICRefillVerifierMark is used to set the thread's current
115 // ICRefillVerifier to a provided one. This is useful in particular
116 // when transitioning IC stubs in parallel and refilling from the
117 // master thread invoking the IC stub transitioning code.
118 class ICRefillVerifierMark: StackObj {
119  public:
120   ICRefillVerifierMark(ICRefillVerifier* verifier);
121   ~ICRefillVerifierMark();
122 };
123 #else
124 class ICRefillVerifier: StackObj {
125  public:
126   ICRefillVerifier() {}
127 };
128 class ICRefillVerifierMark: StackObj {
129  public:
130   ICRefillVerifierMark(ICRefillVerifier* verifier) {}
131 };
132 #endif
133 
134 class InlineCacheBuffer: public AllStatic {
135  private:
136   // friends
137   friend class ICStub;
138 
139   static int ic_stub_code_size();
140 
141   static StubQueue* _buffer;
142 
143   static CompiledICHolder* _pending_released;
144   static int _pending_count;
145 
146   static StubQueue* buffer()                         { return _buffer;         }
147 
148   static ICStub* new_ic_stub();
149 
< prev index next >