< prev index next > src/hotspot/share/code/compiledIC.hpp
Print this page
// CompiledICData wrappers
void ensure_initialized(CallInfo* call_info, Klass* receiver_klass);
bool is_speculated_klass(Klass* receiver_klass);
// Inline cache states
! void set_to_monomorphic();
! void set_to_megamorphic(CallInfo* call_info);
public:
// conversion (machine PC to CompiledIC*)
friend CompiledIC* CompiledIC_before(nmethod* nm, address return_addr);
friend CompiledIC* CompiledIC_at(nmethod* nm, address call_site);
// CompiledICData wrappers
void ensure_initialized(CallInfo* call_info, Klass* receiver_klass);
bool is_speculated_klass(Klass* receiver_klass);
// Inline cache states
! void set_to_monomorphic(bool caller_is_c1);
! void set_to_megamorphic(CallInfo* call_info, bool caller_is_c1);
public:
// conversion (machine PC to CompiledIC*)
friend CompiledIC* CompiledIC_before(nmethod* nm, address return_addr);
friend CompiledIC* CompiledIC_at(nmethod* nm, address call_site);
address end_of_call() const { return _call->return_address(); }
// MT-safe patching of inline caches. Note: Only safe to call is_xxx when holding the CompiledICLocker
// so you are guaranteed that no patching takes place. The same goes for verify.
void set_to_clean();
! void update(CallInfo* call_info, Klass* receiver_klass);
// GC support
void clean_metadata();
void metadata_do(MetadataClosure* cl);
address end_of_call() const { return _call->return_address(); }
// MT-safe patching of inline caches. Note: Only safe to call is_xxx when holding the CompiledICLocker
// so you are guaranteed that no patching takes place. The same goes for verify.
void set_to_clean();
! void update(CallInfo* call_info, Klass* receiver_klass, bool caller_is_c1);
// GC support
void clean_metadata();
void metadata_do(MetadataClosure* cl);
//
//
// -----<----- Clean ----->-----
// / \
// / \
! // compilled code <------------> interpreted code
//
// Clean: Calls directly to runtime method for fixup
// Compiled code: Calls directly to compiled code
// Interpreted code: Calls to stub that set Method* reference
//
//
//
// -----<----- Clean ----->-----
// / \
// / \
! // compiled code <------------> interpreted code
//
// Clean: Calls directly to runtime method for fixup
// Compiled code: Calls directly to compiled code
// Interpreted code: Calls to stub that set Method* reference
//
address end_of_call() const { return _call->return_address(); }
// Clean static call (will force resolving on next use)
void set_to_clean();
! void set(const methodHandle& callee_method);
// State
bool is_clean() const;
bool is_call_to_interpreted() const;
bool is_call_to_compiled() const;
address end_of_call() const { return _call->return_address(); }
// Clean static call (will force resolving on next use)
void set_to_clean();
! void set(const methodHandle& callee_method, bool caller_is_c1);
// State
bool is_clean() const;
bool is_call_to_interpreted() const;
bool is_call_to_compiled() const;
< prev index next >