#include <interpretedIC.hpp>
Inheritance diagram for InterpretedIC:
Public Types | |
size = 8 | |
first_word_offset = 0 | |
second_word_offset = 4 | |
enum | { size = 8, first_word_offset = 0, second_word_offset = 4 } |
Public Member Functions | |
u_char * | send_code_addr () const |
Bytecodes::Code | send_code () const |
oop | first_word () const |
oop | second_word () const |
objArrayOop | pic_array () |
bool | is_empty () const |
symbolOop | selector () const |
jumpTableEntry * | jump_table_entry () const |
int | nof_arguments () const |
Bytecodes::SendType | send_type () const |
Bytecodes::ArgumentSpec | argument_spec () const |
void | clear () |
void | cleanup () |
void | clear_without_deallocation_pic () |
void | replace (nmethod *nm) |
void | replace (LookupResult result, klassOop receiver_klass) |
void | print () |
Static Public Member Functions | |
static u_char * | findStartOfSend (u_char *selector_addr) |
static int | findStartOfSend (methodOop m, int bci) |
static void | inline_cache_miss () |
Public Attributes | |
enum InterpretedIC:: { ... } | InterpretedICConstants |
Private Member Functions | |
char * | addr_at (int offset) const |
oop * | first_word_addr () const |
oop * | second_word_addr () const |
void | set (Bytecodes::Code send_code, oop first_word, oop second_word) |
Static Private Member Functions | |
static void | update_inline_cache (InterpretedIC *ic, frame *f, Bytecodes::Code send_code, klassOop klass, LookupResult result) |
static void | does_not_understand (oop receiver, InterpretedIC *ic, frame *f) |
static void | trace_inline_cache_miss (InterpretedIC *ic, klassOop klass, LookupResult result) |
Friends | |
InterpretedIC * | as_InterpretedIC (char *address_of_next_instr) |
Definition at line 49 of file interpretedIC.hpp.
anonymous enum |
Definition at line 51 of file interpretedIC.hpp.
char* InterpretedIC::addr_at | ( | int | offset | ) | const [inline, private] |
Definition at line 66 of file interpretedIC.hpp.
Referenced by first_word_addr(), and second_word_addr().
Bytecodes::ArgumentSpec InterpretedIC::argument_spec | ( | ) | const |
Definition at line 168 of file interpretedIC.cpp.
References Bytecodes::argument_spec(), and send_code().
Referenced by inline_cache_miss().
Here is the call graph for this function:
void InterpretedIC::cleanup | ( | ) |
Definition at line 227 of file interpretedIC.cpp.
References Bytecodes::accessor_send, assert, Bytecodes::compiled_send, first_word(), Bytecodes::interpreted_send, is_empty(), oopDesc::is_klass(), oopDesc::is_method(), Bytecodes::is_super_send(), objArrayOopDesc::length(), lookupCache::lookup(), LookupResult::matches(), Bytecodes::megamorphic_send, objArrayOopDesc::obj_at(), objArrayOopDesc::obj_at_put(), pic_array(), Bytecodes::polymorphic_send, Bytecodes::predicted_send, Bytecodes::primitive_send, replace(), second_word(), selector(), send_code(), send_type(), and LookupResult::value().
Here is the call graph for this function:
void InterpretedIC::clear | ( | ) |
Definition at line 173 of file interpretedIC.cpp.
References assert, Interpreter_PICs::deallocate(), is_empty(), Bytecodes::original_send_code_for(), Bytecodes::polymorphic_send, second_word(), selector(), send_code(), send_type(), set(), and smiOop_zero.
Referenced by replace().
Here is the call graph for this function:
void InterpretedIC::clear_without_deallocation_pic | ( | ) |
Definition at line 326 of file interpretedIC.cpp.
References is_empty(), Bytecodes::original_send_code_for(), selector(), send_code(), set(), and smiOop_zero.
Here is the call graph for this function:
void InterpretedIC::does_not_understand | ( | oop | receiver, | |
InterpretedIC * | ic, | |||
frame * | f | |||
) | [static, private] |
Definition at line 521 of file interpretedIC.cpp.
References DeltaProcess::active(), Klass::allocateObject(), assert, Delta::call(), frame::expr(), fatal, Universe::find_global(), interpreter_normal_lookup(), is_empty(), oopDesc::is_mem(), oopDesc::klass(), klassOopDesc::klass_part(), lookup_error, oopFactory::new_objArray(), oopFactory::new_symbol(), byteArrayOopDesc::number_of_arguments(), objArrayOopDesc::obj_at_put(), outputStream::print(), oopDesc::print_value(), selector(), ShouldNotReachHere, std, DeltaProcess::suspend(), and DeltaProcess::trace_stack().
Referenced by inline_cache_miss().
Here is the call graph for this function:
int InterpretedIC::findStartOfSend | ( | methodOop | m, | |
int | bci | |||
) | [static] |
Definition at line 116 of file interpretedIC.cpp.
References methodOopDesc::codes(), and findStartOfSend().
Here is the call graph for this function:
Definition at line 99 of file interpretedIC.cpp.
References Bytecodes::halt, and Bytecodes::is_send_code().
Referenced by findStartOfSend(), and send_code_addr().
Here is the call graph for this function:
oop InterpretedIC::first_word | ( | ) | const [inline] |
Definition at line 75 of file interpretedIC.hpp.
References first_word_addr().
Referenced by InterpretedIC_Iterator::advance(), cleanup(), InterpretedIC_Iterator::init_iteration(), jump_table_entry(), replace(), selector(), set(), and update_inline_cache().
Here is the call graph for this function:
oop* InterpretedIC::first_word_addr | ( | ) | const [inline, private] |
Definition at line 67 of file interpretedIC.hpp.
References addr_at(), and first_word_offset.
Referenced by first_word(), and set().
Here is the call graph for this function:
void InterpretedIC::inline_cache_miss | ( | ) | [static] |
Definition at line 584 of file interpretedIC.cpp.
References DeltaProcess::active(), Bytecodes::args_only, argument_spec(), frame::current_interpretedIC(), does_not_understand(), frame::expr(), have_nlr_through_C, interpreter_normal_lookup(), interpreter_super_lookup(), LookupResult::is_empty(), Bytecodes::is_super_send(), oopDesc::klass(), DeltaProcess::last_frame(), nof_arguments(), outputStream::print_cr(), frame::receiver(), selector(), send_code(), std, trace_inline_cache_miss(), and update_inline_cache().
Referenced by inline_cache_miss().
Here is the call graph for this function:
bool InterpretedIC::is_empty | ( | ) | const [inline] |
Definition at line 82 of file interpretedIC.hpp.
References second_word().
Referenced by cleanup(), clear(), clear_without_deallocation_pic(), does_not_understand(), InterpretedIC_Iterator::init_iteration(), patch_last_delta_frame(), print(), replace(), and update_inline_cache().
Here is the call graph for this function:
jumpTableEntry * InterpretedIC::jump_table_entry | ( | ) | const |
Definition at line 137 of file interpretedIC.cpp.
References assert, Bytecodes::compiled_send, first_word(), Bytecodes::megamorphic_send, and send_type().
Referenced by selector().
Here is the call graph for this function:
int InterpretedIC::nof_arguments | ( | ) | const |
Definition at line 145 of file interpretedIC.cpp.
References Bytecodes::args_only, Bytecodes::argument_spec(), assert, byteArrayOopDesc::number_of_arguments(), Bytecodes::recv_0_args, Bytecodes::recv_1_args, Bytecodes::recv_2_args, Bytecodes::recv_n_args, selector(), send_code_addr(), and ShouldNotReachHere.
Referenced by inline_cache_miss().
Here is the call graph for this function:
objArrayOop InterpretedIC::pic_array | ( | ) |
Definition at line 398 of file interpretedIC.cpp.
References assert, oopDesc::is_objArray(), objArrayOopDesc::length(), Bytecodes::polymorphic_send, second_word(), and send_type().
Referenced by cleanup(), replace(), and update_inline_cache().
Here is the call graph for this function:
void InterpretedIC::print | ( | ) |
Definition at line 375 of file interpretedIC.cpp.
References InterpretedIC_Iterator::advance(), InterpretedIC_Iterator::at_end(), InterpretedIC_Iterator::compiled_method(), outputStream::cr(), InterpretedIC_Iterator::interpreted_method(), is_empty(), InterpretedIC_Iterator::is_interpreted(), InterpretedIC_Iterator::klass(), outputStream::print(), oopDesc::print_value(), selector(), send_type(), Bytecodes::send_type_as_string(), and std.
Here is the call graph for this function:
void InterpretedIC::replace | ( | LookupResult | result, | |
klassOop | receiver_klass | |||
) |
Definition at line 184 of file interpretedIC.cpp.
References assert, clear(), Bytecodes::compiled_send_code_for(), LookupResult::entry(), first_word(), guarantee, LookupResult::is_empty(), LookupResult::is_entry(), LookupResult::is_method(), LOG_EVENT3, Bytecodes::megamorphic_send, LookupResult::method(), Bytecodes::name(), second_word(), send_code(), send_type(), and set().
Here is the call graph for this function:
void InterpretedIC::replace | ( | nmethod * | nm | ) |
Definition at line 332 of file interpretedIC.cpp.
References Bytecodes::accessor_send, assert, Bytecodes::compiled_send, Bytecodes::compiled_send_code_for(), fatal, Bytecodes::interpreted_send, is_empty(), oopDesc::is_klass(), oopDesc::klass(), objArrayOopDesc::length(), LOG_EVENT3, Bytecodes::megamorphic_send, objArrayOopDesc::obj_at(), objArrayOopDesc::obj_at_put(), pic_array(), Bytecodes::polymorphic_send, Bytecodes::predicted_send, Bytecodes::primitive_send, second_word(), selector(), send_code(), send_type(), and set().
Referenced by cleanup().
Here is the call graph for this function:
oop InterpretedIC::second_word | ( | ) | const [inline] |
Definition at line 76 of file interpretedIC.hpp.
References second_word_addr().
Referenced by InterpretedIC_Iterator::advance(), cleanup(), clear(), InterpretedIC_Iterator::init_iteration(), is_empty(), pic_array(), replace(), set(), and update_inline_cache().
Here is the call graph for this function:
oop* InterpretedIC::second_word_addr | ( | ) | const [inline, private] |
Definition at line 68 of file interpretedIC.hpp.
References addr_at(), and second_word_offset.
Referenced by second_word(), and set().
Here is the call graph for this function:
symbolOop InterpretedIC::selector | ( | ) | const |
Definition at line 122 of file interpretedIC.cpp.
References assert, first_word(), oopDesc::is_method(), oopDesc::is_symbol(), jump_table_entry(), and methodOopDesc::selector().
Referenced by cleanup(), clear(), clear_without_deallocation_pic(), does_not_understand(), methodOopDesc::fileout_body(), inline_cache_miss(), SendersClosure::inlined_send(), nof_arguments(), MethodPrettyPrinter::normal_send(), MethodPrinterClosure::normal_send(), SendersClosure::normal_send(), ExpressionStackMapper::normal_send(), ExpressionStackMapper::pop(), print(), replace(), InterpretedIC_Iterator::selector(), MethodPrettyPrinter::self_send(), MethodPrinterClosure::self_send(), SendersClosure::self_send(), ExpressionStackMapper::self_send(), MethodPrettyPrinter::super_send(), MethodPrinterClosure::super_send(), trace_inline_cache_miss(), and update_inline_cache().
Here is the call graph for this function:
Bytecodes::Code InterpretedIC::send_code | ( | ) | const [inline] |
Definition at line 74 of file interpretedIC.hpp.
References send_code_addr().
Referenced by argument_spec(), cleanup(), clear(), clear_without_deallocation_pic(), frame::current_ic_iterator(), inline_cache_miss(), InterpretedIC_Iterator::is_super_send(), replace(), and send_type().
Here is the call graph for this function:
u_char* InterpretedIC::send_code_addr | ( | ) | const [inline] |
Definition at line 73 of file interpretedIC.hpp.
References findStartOfSend().
Referenced by frame::current_interpretedIC(), nof_arguments(), send_code(), set(), and update_inline_cache().
Here is the call graph for this function:
Bytecodes::SendType InterpretedIC::send_type | ( | ) | const |
Definition at line 163 of file interpretedIC.cpp.
References send_code(), and Bytecodes::send_type().
Referenced by cleanup(), clear(), InterpretedIC_Iterator::init_iteration(), jump_table_entry(), MethodPrinterClosure::normal_send(), pic_array(), print(), replace(), MethodPrinterClosure::self_send(), MethodPrinterClosure::super_send(), and update_inline_cache().
Here is the call graph for this function:
void InterpretedIC::set | ( | Bytecodes::Code | send_code, | |
oop | first_word, | |||
oop | second_word | |||
) | [private] |
Definition at line 88 of file interpretedIC.cpp.
References first_word(), first_word_addr(), oopDesc::is_new(), second_word(), second_word_addr(), send_code_addr(), and Universe::store().
Referenced by clear(), clear_without_deallocation_pic(), replace(), and update_inline_cache().
Here is the call graph for this function:
void InterpretedIC::trace_inline_cache_miss | ( | InterpretedIC * | ic, | |
klassOop | klass, | |||
LookupResult | result | |||
) | [static, private] |
Definition at line 568 of file interpretedIC.cpp.
References outputStream::cr(), outputStream::print(), LookupResult::print_short_on(), oopDesc::print_value(), selector(), and std.
Referenced by inline_cache_miss().
Here is the call graph for this function:
void InterpretedIC::update_inline_cache | ( | InterpretedIC * | ic, | |
frame * | f, | |||
Bytecodes::Code | send_code, | |||
klassOop | klass, | |||
LookupResult | result | |||
) | [static, private] |
Definition at line 406 of file interpretedIC.cpp.
References Bytecodes::access_send_code_for(), Bytecodes::accessor_send, Interpreter_PICs::allocate(), assert, Bytecodes::compiled_send, Bytecodes::compiled_send_code_for(), Interpreter_PICs::deallocate(), LookupResult::entry(), Interpreter_PICs::extend(), first_word(), Bytecodes::halt, Bytecodes::has_access_send_code(), Bytecodes::has_predicted_send_code(), Bytecodes::interpreted_send, methodOopDesc::is_accessMethod(), is_empty(), LookupResult::is_entry(), methodOopDesc::is_primitiveMethod(), methodOopDesc::is_special_primitiveMethod(), Bytecodes::is_super_send(), Bytecodes::megamorphic_send, Bytecodes::megamorphic_send_code_for(), LookupResult::method(), Bytecodes::original_send_code_for(), pic_array(), Bytecodes::polymorphic_send, Bytecodes::polymorphic_send_code_for(), Bytecodes::predicted_send, Bytecodes::primitive_send_code_for(), second_word(), selector(), send_code_addr(), send_type(), set(), Interpreter_PICs::set_first(), frame::set_hp(), Interpreter_PICs::set_last(), Interpreter_PICs::set_second(), ShouldNotReachHere, methodOopDesc::special_primitive_code(), Unimplemented, and LookupResult::value().
Referenced by inline_cache_miss().
Here is the call graph for this function:
InterpretedIC* as_InterpretedIC | ( | char * | address_of_next_instr | ) | [friend] |
Definition at line 761 of file interpretedIC.cpp.
enum { ... } InterpretedIC::InterpretedICConstants |