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; }
|