< prev index next >

src/hotspot/share/code/compiledIC.hpp

Print this page




 311   return c_ic;
 312 }
 313 
 314 inline CompiledIC* CompiledIC_at(RelocIterator* reloc_iter) {
 315   assert(reloc_iter->type() == relocInfo::virtual_call_type ||
 316       reloc_iter->type() == relocInfo::opt_virtual_call_type, "wrong reloc. info");
 317   CompiledIC* c_ic = new CompiledIC(reloc_iter);
 318   c_ic->verify();
 319   return c_ic;
 320 }
 321 
 322 //-----------------------------------------------------------------------------
 323 // The CompiledStaticCall represents a call to a static method in the compiled
 324 //
 325 // Transition diagram of a static call site is somewhat simpler than for an inlined cache:
 326 //
 327 //
 328 //           -----<----- Clean ----->-----
 329 //          /                             \
 330 //         /                               \
 331 //    compilled code <------------> interpreted code
 332 //
 333 //  Clean:            Calls directly to runtime method for fixup
 334 //  Compiled code:    Calls directly to compiled code
 335 //  Interpreted code: Calls to stub that set Method* reference
 336 //
 337 //
 338 
 339 class StaticCallInfo {
 340  private:
 341   address      _entry;          // Entrypoint
 342   methodHandle _callee;         // Callee (used when calling interpreter)
 343   bool         _to_interpreter; // call to interpreted method (otherwise compiled)
 344   bool         _to_aot;         // call to aot method (otherwise compiled)
 345 
 346   friend class CompiledStaticCall;
 347   friend class CompiledDirectStaticCall;
 348   friend class CompiledPltStaticCall;
 349  public:
 350   address      entry() const    { return _entry;  }
 351   methodHandle callee() const   { return _callee; }




 311   return c_ic;
 312 }
 313 
 314 inline CompiledIC* CompiledIC_at(RelocIterator* reloc_iter) {
 315   assert(reloc_iter->type() == relocInfo::virtual_call_type ||
 316       reloc_iter->type() == relocInfo::opt_virtual_call_type, "wrong reloc. info");
 317   CompiledIC* c_ic = new CompiledIC(reloc_iter);
 318   c_ic->verify();
 319   return c_ic;
 320 }
 321 
 322 //-----------------------------------------------------------------------------
 323 // The CompiledStaticCall represents a call to a static method in the compiled
 324 //
 325 // Transition diagram of a static call site is somewhat simpler than for an inlined cache:
 326 //
 327 //
 328 //           -----<----- Clean ----->-----
 329 //          /                             \
 330 //         /                               \
 331 //    compiled code <------------> interpreted code
 332 //
 333 //  Clean:            Calls directly to runtime method for fixup
 334 //  Compiled code:    Calls directly to compiled code
 335 //  Interpreted code: Calls to stub that set Method* reference
 336 //
 337 //
 338 
 339 class StaticCallInfo {
 340  private:
 341   address      _entry;          // Entrypoint
 342   methodHandle _callee;         // Callee (used when calling interpreter)
 343   bool         _to_interpreter; // call to interpreted method (otherwise compiled)
 344   bool         _to_aot;         // call to aot method (otherwise compiled)
 345 
 346   friend class CompiledStaticCall;
 347   friend class CompiledDirectStaticCall;
 348   friend class CompiledPltStaticCall;
 349  public:
 350   address      entry() const    { return _entry;  }
 351   methodHandle callee() const   { return _callee; }


< prev index next >