InterpretedIC Class Reference

#include <interpretedIC.hpp>

Inheritance diagram for InterpretedIC:

Inheritance graph
[legend]
Collaboration diagram for InterpretedIC:

Collaboration graph
[legend]
List of all members.

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_charsend_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_charfindStartOfSend (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
oopfirst_word_addr () const
oopsecond_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

InterpretedICas_InterpretedIC (char *address_of_next_instr)

Detailed Description

Definition at line 49 of file interpretedIC.hpp.


Member Enumeration Documentation

anonymous enum

Enumerator:
size 
first_word_offset 
second_word_offset 

Definition at line 51 of file interpretedIC.hpp.


Member Function Documentation

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:

u_char * InterpretedIC::findStartOfSend ( u_char selector_addr  )  [static]

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:


Friends And Related Function Documentation

InterpretedIC* as_InterpretedIC ( char *  address_of_next_instr  )  [friend]

Definition at line 761 of file interpretedIC.cpp.


Member Data Documentation

enum { ... } InterpretedIC::InterpretedICConstants


The documentation for this class was generated from the following files:
Generated on Mon Oct 9 14:01:54 2006 for Strongtalk VM by  doxygen 1.4.7