< prev index next >

src/share/vm/code/compiledIC.hpp

Print this page




 249   bool is_icholder_call() const;
 250 
 251   address end_of_call() { return  _call->return_address(); }
 252 
 253   // MT-safe patching of inline caches. Note: Only safe to call is_xxx when holding the CompiledIC_ock
 254   // so you are guaranteed that no patching takes place. The same goes for verify.
 255   //
 256   // Note: We do not provide any direct access to the stub code, to prevent parts of the code
 257   // to manipulate the inline cache in MT-unsafe ways.
 258   //
 259   // They all takes a TRAP argument, since they can cause a GC if the inline-cache buffer is full.
 260   //
 261   void set_to_clean(bool in_use = true);
 262   void set_to_monomorphic(CompiledICInfo& info);
 263   void clear_ic_stub();
 264 
 265   // Returns true if successful and false otherwise. The call can fail if memory
 266   // allocation in the code cache fails.
 267   bool set_to_megamorphic(CallInfo* call_info, Bytecodes::Code bytecode, TRAPS);
 268 
 269   static void compute_monomorphic_entry(const methodHandle& method, KlassHandle receiver_klass,
 270                                         bool is_optimized, bool static_bound, bool caller_is_nmethod,
 271                                         CompiledICInfo& info, TRAPS);
 272 
 273   // Location
 274   address instruction_address() const { return _call->instruction_address(); }
 275 
 276   // Misc
 277   void print()             PRODUCT_RETURN;
 278   void print_compiled_ic() PRODUCT_RETURN;
 279   void verify()            PRODUCT_RETURN;
 280 };
 281 
 282 inline CompiledIC* CompiledIC_before(CompiledMethod* nm, address return_addr) {
 283   CompiledIC* c_ic = new CompiledIC(nm, nativeCall_before(return_addr));
 284   c_ic->verify();
 285   return c_ic;
 286 }
 287 
 288 inline CompiledIC* CompiledIC_at(CompiledMethod* nm, address call_site) {
 289   CompiledIC* c_ic = new CompiledIC(nm, nativeCall_at(call_site));




 249   bool is_icholder_call() const;
 250 
 251   address end_of_call() { return  _call->return_address(); }
 252 
 253   // MT-safe patching of inline caches. Note: Only safe to call is_xxx when holding the CompiledIC_ock
 254   // so you are guaranteed that no patching takes place. The same goes for verify.
 255   //
 256   // Note: We do not provide any direct access to the stub code, to prevent parts of the code
 257   // to manipulate the inline cache in MT-unsafe ways.
 258   //
 259   // They all takes a TRAP argument, since they can cause a GC if the inline-cache buffer is full.
 260   //
 261   void set_to_clean(bool in_use = true);
 262   void set_to_monomorphic(CompiledICInfo& info);
 263   void clear_ic_stub();
 264 
 265   // Returns true if successful and false otherwise. The call can fail if memory
 266   // allocation in the code cache fails.
 267   bool set_to_megamorphic(CallInfo* call_info, Bytecodes::Code bytecode, TRAPS);
 268 
 269   static void compute_monomorphic_entry(const methodHandle& method, Klass* receiver_klass,
 270                                         bool is_optimized, bool static_bound, bool caller_is_nmethod,
 271                                         CompiledICInfo& info, TRAPS);
 272 
 273   // Location
 274   address instruction_address() const { return _call->instruction_address(); }
 275 
 276   // Misc
 277   void print()             PRODUCT_RETURN;
 278   void print_compiled_ic() PRODUCT_RETURN;
 279   void verify()            PRODUCT_RETURN;
 280 };
 281 
 282 inline CompiledIC* CompiledIC_before(CompiledMethod* nm, address return_addr) {
 283   CompiledIC* c_ic = new CompiledIC(nm, nativeCall_before(return_addr));
 284   c_ic->verify();
 285   return c_ic;
 286 }
 287 
 288 inline CompiledIC* CompiledIC_at(CompiledMethod* nm, address call_site) {
 289   CompiledIC* c_ic = new CompiledIC(nm, nativeCall_at(call_site));


< prev index next >