InterpreterGenerator Class Reference

Inheritance diagram for InterpreterGenerator:

Inheritance graph
[legend]
Collaboration diagram for InterpreterGenerator:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 InterpreterGenerator (CodeBuffer *code, bool debug)

Private Member Functions

void check_ebx ()
void check_oop (Register reg)
void should_not_reach_here ()
Address arg_addr (int i)
Address arg_addr (Register arg_no)
Address temp_addr (int i)
Address temp_addr (Register temp_no)
Address float_addr (Register float_no)
Address field_addr (Register obj, int i)
Address field_addr (Register obj, Register smi_offset)
void skip_words (int n)
void advance_aligned (int n)
void load_ebx ()
void next_ebx ()
void jump_ebx ()
void load_edi ()
void jump_edi ()
char * entry_point ()
Address self_addr ()
Address esi_addr ()
Address context_addr ()
void save_esi ()
void restore_esi ()
void restore_ebx ()
Address nil_addr ()
Address true_addr ()
Address false_addr ()
Address smiKlass_addr ()
Address doubleKlass_addr ()
Address contextKlass_addr ()
void call_C (Label &L)
void call_C (char *entry)
void call_C (Register entry)
void load_recv (Bytecodes::ArgumentSpec arg_spec)
void return_tos (Bytecodes::ArgumentSpec arg_spec)
char * push_temp (int i)
char * push_temp_n ()
char * push_arg (int i)
char * push_arg_n ()
char * push_smi (bool negative)
char * push_literal ()
char * push_tos ()
char * push_self ()
char * push_const (Address obj_addr)
char * push_global ()
char * push_instVar ()
char * return_instVar ()
char * only_pop ()
char * store_temp (int i, bool pop=false)
char * store_temp_n (bool pop=false)
char * store_global (bool pop=false)
char * store_instVar (bool pop=false)
char * allocate_temps (int n)
char * allocate_temps_n ()
char * set_self_via_context ()
char * push_context_temp (int contextNo, int tempNo)
char * float_allocate ()
char * float_floatify ()
char * float_oopify ()
char * float_move ()
char * float_set ()
char * float_op (int nof_args, bool returns_float=false)
char * push_closure (char *allocation_routine, bool use_context)
char * install_context (char *allocation_routine, bool for_method)
char * lookup_primitive ()
char * call_primitive ()
char * call_primitive_can_fail ()
char * call_DLL (bool async)
void call_method ()
void call_native (Register entry)
void generate_error_handler_code ()
void generate_nonlocal_return_code ()
void generate_method_entry_code ()
void generate_inline_cache_miss_handler ()
void generate_predicted_smi_send_failure_handler ()
void generate_redo_send_code ()
char * normal_send (Bytecodes::Code code, bool allow_methodOop, bool allow_nmethod)
char * interpreted_send (Bytecodes::Code code)
char * compiled_send (Bytecodes::Code code)
char * polymorphic_send (Bytecodes::Code code)
char * megamorphic_send (Bytecodes::Code code)
void check_smi_tags ()
char * smi_add ()
char * smi_sub ()
char * smi_mul ()
char * smi_compare_op (Bytecodes::Code code)
char * smi_logical_op (Bytecodes::Code code)
char * smi_shift ()
char * objArray_size ()
char * objArray_at ()
char * objArray_at_put ()
char * special_primitive_send_hint ()
char * halt ()
char * nonlocal_return_tos ()
char * nonlocal_return_self ()
char * generate_instruction (Bytecodes::Code code)
void info (char *name)
void generate_all ()

Private Attributes

MacroAssembler_masm
bool _debug
Label _method_entry
Label _block_entry
Label _inline_cache_miss
Label _smi_send_failure
Label _issue_NLR
Label _nlr_testpoint
Label _boolean_expected
Label _float_expected
Label _NLR_to_dead_frame
Label _halted

Detailed Description

Definition at line 250 of file interpreter.cpp.


Constructor & Destructor Documentation

InterpreterGenerator::InterpreterGenerator ( CodeBuffer *  code,
bool  debug 
)

Definition at line 2495 of file interpreter.cpp.


Member Function Documentation

void InterpreterGenerator::advance_aligned ( int  n  )  [private]

Definition at line 489 of file interpreter.cpp.

References _masm, Assembler::addl(), Assembler::andl(), esi, and oopSize.

Referenced by push_instVar(), return_instVar(), and store_instVar().

Here is the call graph for this function:

char * InterpreterGenerator::allocate_temps ( int  n  )  [private]

Definition at line 829 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::allocate_temps_n (  )  [private]

Definition at line 841 of file interpreter.cpp.

Referenced by generate_instruction().

Address InterpreterGenerator::arg_addr ( Register  arg_no  )  [private]

Definition at line 449 of file interpreter.cpp.

References arg_n_offset, ebp, oopSize, and Address::times_4.

Address InterpreterGenerator::arg_addr ( int  i  )  [private]

Definition at line 443 of file interpreter.cpp.

References arg_n_offset, assert, ebp, and oopSize.

Referenced by push_arg(), and push_arg_n().

void InterpreterGenerator::call_C ( Register  entry  )  [private]

Definition at line 588 of file interpreter.cpp.

References _masm, _nlr_testpoint, MacroAssembler::call_C(), restore_ebx(), restore_esi(), and save_esi().

Here is the call graph for this function:

void InterpreterGenerator::call_C ( char *  entry  )  [private]

Definition at line 580 of file interpreter.cpp.

References _masm, _nlr_testpoint, MacroAssembler::call_C(), restore_ebx(), restore_esi(), and save_esi().

Here is the call graph for this function:

void InterpreterGenerator::call_C ( Label L  )  [private]

Definition at line 572 of file interpreter.cpp.

References _masm, _nlr_testpoint, MacroAssembler::call_C(), L, restore_ebx(), restore_esi(), and save_esi().

Referenced by jump_ebx(), and jump_edi().

Here is the call graph for this function:

char * InterpreterGenerator::call_DLL ( bool  async  )  [private]

Definition at line 1334 of file interpreter.cpp.

Referenced by generate_instruction().

void InterpreterGenerator::call_method (  )  [private]

Definition at line 1395 of file interpreter.cpp.

void InterpreterGenerator::call_native ( Register  entry  )  [private]

Definition at line 1406 of file interpreter.cpp.

char * InterpreterGenerator::call_primitive (  )  [private]

Definition at line 1257 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::call_primitive_can_fail (  )  [private]

Definition at line 1276 of file interpreter.cpp.

Referenced by generate_instruction().

void InterpreterGenerator::check_ebx (  )  [private]

Definition at line 411 of file interpreter.cpp.

References _debug, _masm, Assembler::bind(), MacroAssembler::call_C(), ebx, Assembler::jcc(), L, Assembler::testl(), Interpreter::wrong_ebx(), and Assembler::zero.

Referenced by entry_point(), load_ebx(), and next_ebx().

Here is the call graph for this function:

void InterpreterGenerator::check_oop ( Register  reg  )  [private]

Definition at line 423 of file interpreter.cpp.

References _debug, _masm, Assembler::bind(), MacroAssembler::call_C(), Assembler::jcc(), L, Mark_Tag_Bit, Assembler::testb(), Interpreter::wrong_obj(), and Assembler::zero.

Referenced by entry_point(), jump_ebx(), and jump_edi().

Here is the call graph for this function:

void InterpreterGenerator::check_smi_tags (  )  [private]

Definition at line 1549 of file interpreter.cpp.

char * InterpreterGenerator::compiled_send ( Bytecodes::Code  code  )  [private]

Definition at line 2020 of file interpreter.cpp.

Referenced by generate_instruction().

Address InterpreterGenerator::context_addr (  )  [inline, private]

Definition at line 297 of file interpreter.cpp.

References ebp, and temp_0_offset.

Address InterpreterGenerator::contextKlass_addr (  )  [inline, private]

Definition at line 309 of file interpreter.cpp.

References symbolKlassObj.

Address InterpreterGenerator::doubleKlass_addr (  )  [inline, private]

Definition at line 308 of file interpreter.cpp.

References doubleKlassObj.

char * InterpreterGenerator::entry_point (  )  [private]

Definition at line 557 of file interpreter.cpp.

References _debug, _masm, check_ebx(), check_oop(), eax, and Assembler::pc().

Referenced by only_pop(), push_arg(), push_arg_n(), push_const(), push_instVar(), push_literal(), push_self(), push_smi(), push_temp(), push_temp_n(), push_tos(), return_instVar(), store_instVar(), store_temp(), and store_temp_n().

Here is the call graph for this function:

Address InterpreterGenerator::esi_addr (  )  [inline, private]

Definition at line 296 of file interpreter.cpp.

References ebp, and esi_offset.

Referenced by restore_esi(), and save_esi().

Address InterpreterGenerator::false_addr (  )  [inline, private]

Definition at line 306 of file interpreter.cpp.

References falseObj.

Referenced by generate_instruction().

Address InterpreterGenerator::field_addr ( Register  obj,
Register  smi_offset 
) [private]

Definition at line 476 of file interpreter.cpp.

References Mem_Tag, and Address::times_1.

Address InterpreterGenerator::field_addr ( Register  obj,
int  i 
) [private]

Definition at line 470 of file interpreter.cpp.

References assert, and byteOffset().

Referenced by push_instVar(), return_instVar(), and store_instVar().

Here is the call graph for this function:

Address InterpreterGenerator::float_addr ( Register  float_no  )  [private]

Definition at line 465 of file interpreter.cpp.

References ebp, float_0_offset, floatSize, max_nof_floats, and Address::times_8.

char * InterpreterGenerator::float_allocate (  )  [private]

Definition at line 1060 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::float_floatify (  )  [private]

Definition at line 1135 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::float_move (  )  [private]

Definition at line 1186 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::float_oopify (  )  [private]

Definition at line 1169 of file interpreter.cpp.

char * InterpreterGenerator::float_op ( int  nof_args,
bool  returns_float = false 
) [private]

Definition at line 1217 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::float_set (  )  [private]

Definition at line 1202 of file interpreter.cpp.

Referenced by generate_instruction().

void InterpreterGenerator::generate_all (  )  [private]

Definition at line 2444 of file interpreter.cpp.

void InterpreterGenerator::generate_error_handler_code (  )  [private]

Definition at line 1759 of file interpreter.cpp.

void InterpreterGenerator::generate_inline_cache_miss_handler (  )  [private]

Definition at line 1522 of file interpreter.cpp.

char * InterpreterGenerator::generate_instruction ( Bytecodes::Code  code  )  [private]

Definition at line 2217 of file interpreter.cpp.

References Bytecodes::allocate_temp_1, Bytecodes::allocate_temp_2, Bytecodes::allocate_temp_3, Bytecodes::allocate_temp_n, allocate_temps(), allocate_temps_n(), allocateBlock0(), allocateBlock1(), allocateBlock2(), allocateContext0(), allocateContext1(), allocateContext2(), call_DLL(), call_primitive(), call_primitive_can_fail(), compiled_send(), Bytecodes::compiled_send_0, Bytecodes::compiled_send_0_pop, Bytecodes::compiled_send_1, Bytecodes::compiled_send_1_pop, Bytecodes::compiled_send_2, Bytecodes::compiled_send_2_pop, Bytecodes::compiled_send_n, Bytecodes::compiled_send_n_pop, Bytecodes::compiled_send_self, Bytecodes::compiled_send_self_pop, Bytecodes::compiled_send_super, Bytecodes::compiled_send_super_pop, Bytecodes::dll_call_async, Bytecodes::dll_call_sync, false_addr(), float_allocate(), Bytecodes::float_allocate, Bytecodes::float_binary_op, Bytecodes::float_binary_op_to_oop, float_floatify(), Bytecodes::float_floatify_pop, float_move(), Bytecodes::float_move, Bytecodes::float_nullary_op, float_op(), float_set(), Bytecodes::float_set, Bytecodes::float_unary_op, Bytecodes::float_unary_op_to_oop, halt(), Bytecodes::halt, install_context(), Bytecodes::install_new_context_block_1, Bytecodes::install_new_context_block_2, Bytecodes::install_new_context_block_n, Bytecodes::install_new_context_method_0, Bytecodes::install_new_context_method_1, Bytecodes::install_new_context_method_2, Bytecodes::install_new_context_method_n, interpreted_send(), Bytecodes::interpreted_send_0, Bytecodes::interpreted_send_0_pop, Bytecodes::interpreted_send_1, Bytecodes::interpreted_send_1_pop, Bytecodes::interpreted_send_2, Bytecodes::interpreted_send_2_pop, Bytecodes::interpreted_send_n, Bytecodes::interpreted_send_n_pop, Bytecodes::interpreted_send_self, Bytecodes::interpreted_send_self_pop, Bytecodes::interpreted_send_super, Bytecodes::interpreted_send_super_pop, lookup_primitive(), megamorphic_send(), Bytecodes::megamorphic_send_0, Bytecodes::megamorphic_send_0_pop, Bytecodes::megamorphic_send_1, Bytecodes::megamorphic_send_1_pop, Bytecodes::megamorphic_send_2, Bytecodes::megamorphic_send_2_pop, Bytecodes::megamorphic_send_n, Bytecodes::megamorphic_send_n_pop, Bytecodes::megamorphic_send_self, Bytecodes::megamorphic_send_self_pop, Bytecodes::megamorphic_send_super, Bytecodes::megamorphic_send_super_pop, nil_addr(), Bytecodes::non_local_return_self_pop_n, Bytecodes::non_local_return_tos_pop_n, nonlocal_return_self(), nonlocal_return_tos(), only_pop(), Bytecodes::only_pop, polymorphic_send(), Bytecodes::polymorphic_send_0, Bytecodes::polymorphic_send_0_pop, Bytecodes::polymorphic_send_1, Bytecodes::polymorphic_send_1_pop, Bytecodes::polymorphic_send_2, Bytecodes::polymorphic_send_2_pop, Bytecodes::polymorphic_send_n, Bytecodes::polymorphic_send_n_pop, Bytecodes::polymorphic_send_self, Bytecodes::polymorphic_send_self_pop, Bytecodes::polymorphic_send_super, Bytecodes::polymorphic_send_super_pop, Bytecodes::prim_call, Bytecodes::prim_call_failure, Bytecodes::prim_call_failure_lookup, Bytecodes::prim_call_lookup, Bytecodes::prim_call_self, Bytecodes::prim_call_self_failure, Bytecodes::prim_call_self_failure_lookup, Bytecodes::prim_call_self_lookup, push_arg(), Bytecodes::push_arg_1, Bytecodes::push_arg_2, Bytecodes::push_arg_3, push_arg_n(), Bytecodes::push_arg_n, Bytecodes::push_classVar, push_closure(), push_const(), push_context_temp(), Bytecodes::push_false, push_global(), Bytecodes::push_global, push_instVar(), Bytecodes::push_instVar, push_literal(), Bytecodes::push_literal, Bytecodes::push_neg_n, Bytecodes::push_new_closure_context_0, Bytecodes::push_new_closure_context_1, Bytecodes::push_new_closure_context_2, Bytecodes::push_new_closure_context_n, Bytecodes::push_new_closure_tos_0, Bytecodes::push_new_closure_tos_1, Bytecodes::push_new_closure_tos_2, Bytecodes::push_new_closure_tos_n, Bytecodes::push_nil, push_self(), Bytecodes::push_self, push_smi(), Bytecodes::push_succ_n, push_temp(), Bytecodes::push_temp_0, Bytecodes::push_temp_0_context_0, Bytecodes::push_temp_0_context_1, Bytecodes::push_temp_1, Bytecodes::push_temp_1_context_0, Bytecodes::push_temp_1_context_1, Bytecodes::push_temp_2, Bytecodes::push_temp_2_context_0, Bytecodes::push_temp_2_context_1, Bytecodes::push_temp_3, Bytecodes::push_temp_4, Bytecodes::push_temp_5, push_temp_n(), Bytecodes::push_temp_n, push_tos(), Bytecodes::push_tos, Bytecodes::push_true, return_instVar(), Bytecodes::return_instVar, set_self_via_context(), Bytecodes::set_self_via_context, smi_add(), Bytecodes::smi_add, Bytecodes::smi_and, smi_compare_op(), Bytecodes::smi_equal, Bytecodes::smi_greater, Bytecodes::smi_greater_equal, Bytecodes::smi_less, Bytecodes::smi_less_equal, smi_logical_op(), smi_mul(), Bytecodes::smi_mult, Bytecodes::smi_not_equal, Bytecodes::smi_or, smi_shift(), Bytecodes::smi_shift, smi_sub(), Bytecodes::smi_sub, Bytecodes::smi_xor, Bytecodes::special_primitive_send_1_hint, special_primitive_send_hint(), Bytecodes::store_classVar, Bytecodes::store_classVar_pop, Bytecodes::store_global, store_global(), Bytecodes::store_global_pop, Bytecodes::store_instVar, store_instVar(), Bytecodes::store_instVar_pop, store_temp(), Bytecodes::store_temp_0_pop, Bytecodes::store_temp_1_pop, Bytecodes::store_temp_2_pop, Bytecodes::store_temp_3_pop, Bytecodes::store_temp_4_pop, Bytecodes::store_temp_5_pop, Bytecodes::store_temp_n, store_temp_n(), Bytecodes::store_temp_n_pop, and true_addr().

Here is the call graph for this function:

void InterpreterGenerator::generate_method_entry_code (  )  [private]

Definition at line 1420 of file interpreter.cpp.

void InterpreterGenerator::generate_nonlocal_return_code (  )  [private]

Definition at line 1824 of file interpreter.cpp.

void InterpreterGenerator::generate_predicted_smi_send_failure_handler (  )  [private]

Definition at line 1538 of file interpreter.cpp.

void InterpreterGenerator::generate_redo_send_code (  )  [private]

Definition at line 1373 of file interpreter.cpp.

char * InterpreterGenerator::halt (  )  [private]

Definition at line 2206 of file interpreter.cpp.

Referenced by generate_instruction().

void InterpreterGenerator::info ( char *  name  )  [private]

Definition at line 2435 of file interpreter.cpp.

References _masm, Assembler::code(), outputStream::cr(), outputStream::print(), and std.

Here is the call graph for this function:

char * InterpreterGenerator::install_context ( char *  allocation_routine,
bool  for_method 
) [private]

Definition at line 985 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::interpreted_send ( Bytecodes::Code  code  )  [private]

Definition at line 2015 of file interpreter.cpp.

Referenced by generate_instruction().

void InterpreterGenerator::jump_ebx (  )  [private]

Definition at line 508 of file interpreter.cpp.

References _masm, Assembler::bind(), call_C(), check_oop(), Assembler::cmpl(), eax, ebx, Assembler::incl(), Assembler::int3(), Assembler::jcc(), Assembler::jmp(), Assembler::less, load_ebx(), noreg, Assembler::popl(), Assembler::pushl(), dispatchTable::table(), Address::times_4, and Interpreter::trace_bytecode().

Referenced by only_pop(), push_arg_n(), push_const(), push_instVar(), push_literal(), push_smi(), push_temp_n(), push_tos(), store_instVar(), store_temp(), and store_temp_n().

Here is the call graph for this function:

void InterpreterGenerator::jump_edi (  )  [private]

Definition at line 535 of file interpreter.cpp.

References _masm, Assembler::bind(), call_C(), check_oop(), Assembler::cmpl(), eax, edi, Assembler::incl(), Assembler::int3(), Assembler::jcc(), Assembler::jmp(), Assembler::less, load_ebx(), Assembler::popl(), Assembler::pushl(), and Interpreter::trace_bytecode().

Referenced by push_arg(), push_self(), and push_temp().

Here is the call graph for this function:

void InterpreterGenerator::load_ebx (  )  [private]

Definition at line 495 of file interpreter.cpp.

References _masm, check_ebx(), ebx, esi, and Assembler::movb().

Referenced by jump_ebx(), jump_edi(), push_arg_n(), push_instVar(), push_literal(), push_smi(), push_temp_n(), store_instVar(), and store_temp_n().

Here is the call graph for this function:

void InterpreterGenerator::load_edi (  )  [private]

Definition at line 530 of file interpreter.cpp.

References _masm, ebx, edi, Assembler::movl(), noreg, dispatchTable::table(), and Address::times_4.

Referenced by push_arg(), push_self(), and push_temp().

Here is the call graph for this function:

void InterpreterGenerator::load_recv ( Bytecodes::ArgumentSpec  arg_spec  )  [private]

Definition at line 610 of file interpreter.cpp.

References _masm, Bytecodes::args_only, eax, ebx, esi, esp, Assembler::movb(), Assembler::movl(), oopSize, Assembler::pushl(), Bytecodes::recv_0_args, Bytecodes::recv_1_args, Bytecodes::recv_2_args, Bytecodes::recv_n_args, self_addr(), ShouldNotReachHere, and Address::times_4.

Here is the call graph for this function:

char * InterpreterGenerator::lookup_primitive (  )  [private]

Definition at line 1246 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::megamorphic_send ( Bytecodes::Code  code  )  [private]

Definition at line 2025 of file interpreter.cpp.

Referenced by generate_instruction().

void InterpreterGenerator::next_ebx (  )  [private]

Definition at line 501 of file interpreter.cpp.

References _masm, check_ebx(), ebx, esi, Assembler::incl(), and Assembler::movb().

Referenced by only_pop(), push_arg(), push_const(), push_self(), push_temp(), push_tos(), and store_temp().

Here is the call graph for this function:

Address InterpreterGenerator::nil_addr (  )  [inline, private]

Definition at line 304 of file interpreter.cpp.

References nilObj.

Referenced by generate_instruction().

char * InterpreterGenerator::nonlocal_return_self (  )  [private]

Definition at line 1923 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::nonlocal_return_tos (  )  [private]

Definition at line 1916 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::normal_send ( Bytecodes::Code  code,
bool  allow_methodOop,
bool  allow_nmethod 
) [private]

Definition at line 1951 of file interpreter.cpp.

char * InterpreterGenerator::objArray_at (  )  [private]

Definition at line 1712 of file interpreter.cpp.

char * InterpreterGenerator::objArray_at_put (  )  [private]

Definition at line 1719 of file interpreter.cpp.

char * InterpreterGenerator::objArray_size (  )  [private]

Definition at line 1705 of file interpreter.cpp.

char * InterpreterGenerator::only_pop (  )  [private]

Definition at line 772 of file interpreter.cpp.

References _masm, eax, entry_point(), jump_ebx(), next_ebx(), and Assembler::popl().

Referenced by generate_instruction().

Here is the call graph for this function:

char * InterpreterGenerator::polymorphic_send ( Bytecodes::Code  code  )  [private]

Definition at line 2120 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::push_arg ( int  i  )  [private]

Definition at line 653 of file interpreter.cpp.

References _masm, arg_addr(), eax, entry_point(), jump_edi(), load_edi(), Assembler::movl(), next_ebx(), and Assembler::pushl().

Referenced by generate_instruction().

Here is the call graph for this function:

char * InterpreterGenerator::push_arg_n (  )  [private]

Definition at line 664 of file interpreter.cpp.

References _masm, Assembler::addl(), arg_addr(), eax, ebx, entry_point(), esi, jump_ebx(), load_ebx(), Assembler::movb(), Assembler::movl(), and Assembler::pushl().

Referenced by generate_instruction().

Here is the call graph for this function:

char * InterpreterGenerator::push_closure ( char *  allocation_routine,
bool  use_context 
) [private]

Definition at line 917 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::push_const ( Address  obj_addr  )  [private]

Definition at line 724 of file interpreter.cpp.

References _masm, eax, entry_point(), jump_ebx(), Assembler::movl(), next_ebx(), and Assembler::pushl().

Referenced by generate_instruction().

Here is the call graph for this function:

char * InterpreterGenerator::push_context_temp ( int  contextNo,
int  tempNo 
) [private]

Definition at line 885 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::push_global (  )  [private]

Definition at line 804 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::push_instVar (  )  [private]

Definition at line 734 of file interpreter.cpp.

References _masm, advance_aligned(), eax, ecx, edx, entry_point(), esi, field_addr(), jump_ebx(), load_ebx(), Assembler::movl(), oopSize, Assembler::pushl(), and self_addr().

Referenced by generate_instruction().

Here is the call graph for this function:

char * InterpreterGenerator::push_literal (  )  [private]

Definition at line 693 of file interpreter.cpp.

References _masm, eax, entry_point(), esi, jump_ebx(), load_ebx(), Assembler::movl(), Assembler::pushl(), and skip_words().

Referenced by generate_instruction().

Here is the call graph for this function:

char * InterpreterGenerator::push_self (  )  [private]

Definition at line 713 of file interpreter.cpp.

References _masm, eax, entry_point(), jump_edi(), load_edi(), Assembler::movl(), next_ebx(), Assembler::pushl(), and self_addr().

Referenced by generate_instruction().

Here is the call graph for this function:

char * InterpreterGenerator::push_smi ( bool  negative  )  [private]

Definition at line 676 of file interpreter.cpp.

References _masm, Assembler::addl(), eax, ebx, entry_point(), esi, jump_ebx(), Assembler::leal(), load_ebx(), Assembler::movb(), Assembler::negl(), noreg, Assembler::pushl(), and Address::times_4.

Referenced by generate_instruction().

Here is the call graph for this function:

char * InterpreterGenerator::push_temp ( int  i  )  [private]

Definition at line 630 of file interpreter.cpp.

References _masm, eax, entry_point(), jump_edi(), load_edi(), Assembler::movl(), next_ebx(), Assembler::pushl(), and temp_addr().

Referenced by generate_instruction().

Here is the call graph for this function:

char * InterpreterGenerator::push_temp_n (  )  [private]

Definition at line 641 of file interpreter.cpp.

References _masm, Assembler::addl(), eax, ebx, entry_point(), esi, jump_ebx(), load_ebx(), Assembler::movb(), Assembler::movl(), Assembler::pushl(), and temp_addr().

Referenced by generate_instruction().

Here is the call graph for this function:

char * InterpreterGenerator::push_tos (  )  [private]

Definition at line 704 of file interpreter.cpp.

References _masm, eax, entry_point(), jump_ebx(), next_ebx(), and Assembler::pushl().

Referenced by generate_instruction().

Here is the call graph for this function:

void InterpreterGenerator::restore_ebx (  )  [inline, private]

Definition at line 301 of file interpreter.cpp.

References _masm, ebx, and Assembler::xorl().

Referenced by call_C().

Here is the call graph for this function:

void InterpreterGenerator::restore_esi (  )  [inline, private]

Definition at line 300 of file interpreter.cpp.

References _masm, esi, esi_addr(), and Assembler::movl().

Referenced by call_C().

Here is the call graph for this function:

char * InterpreterGenerator::return_instVar (  )  [private]

Definition at line 761 of file interpreter.cpp.

References _masm, advance_aligned(), eax, ecx, edx, entry_point(), esi, field_addr(), Assembler::movl(), oopSize, Bytecodes::recv_0_args, return_tos(), and self_addr().

Referenced by generate_instruction().

Here is the call graph for this function:

void InterpreterGenerator::return_tos ( Bytecodes::ArgumentSpec  arg_spec  )  [private]

Definition at line 1731 of file interpreter.cpp.

References _masm, ecx, esi, esp, Assembler::jmp(), Assembler::leal(), Assembler::movb(), oopSize, Assembler::popl(), Bytecodes::recv_0_args, Bytecodes::recv_1_args, Bytecodes::recv_2_args, Bytecodes::recv_n_args, Assembler::ret(), ShouldNotReachHere, and Address::times_4.

Referenced by return_instVar().

Here is the call graph for this function:

void InterpreterGenerator::save_esi (  )  [inline, private]

Definition at line 299 of file interpreter.cpp.

References _masm, esi, esi_addr(), and Assembler::movl().

Referenced by call_C().

Here is the call graph for this function:

Address InterpreterGenerator::self_addr (  )  [inline, private]

Definition at line 295 of file interpreter.cpp.

References ebp, and self_offset.

Referenced by load_recv(), push_instVar(), push_self(), return_instVar(), and store_instVar().

char * InterpreterGenerator::set_self_via_context (  )  [private]

Definition at line 868 of file interpreter.cpp.

Referenced by generate_instruction().

void InterpreterGenerator::should_not_reach_here (  )  [private]

Definition at line 435 of file interpreter.cpp.

References _masm, and Assembler::hlt().

Here is the call graph for this function:

void InterpreterGenerator::skip_words ( int  n  )  [private]

Definition at line 483 of file interpreter.cpp.

References _masm, Assembler::addl(), Assembler::andl(), esi, and oopSize.

Referenced by push_literal().

Here is the call graph for this function:

char * InterpreterGenerator::smi_add (  )  [private]

Definition at line 1562 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::smi_compare_op ( Bytecodes::Code  code  )  [private]

Definition at line 1624 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::smi_logical_op ( Bytecodes::Code  code  )  [private]

Definition at line 1652 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::smi_mul (  )  [private]

Definition at line 1601 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::smi_shift (  )  [private]

Definition at line 1668 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::smi_sub (  )  [private]

Definition at line 1581 of file interpreter.cpp.

Referenced by generate_instruction().

Address InterpreterGenerator::smiKlass_addr (  )  [inline, private]

Definition at line 307 of file interpreter.cpp.

References smiKlassObj.

char * InterpreterGenerator::special_primitive_send_hint (  )  [private]

Definition at line 2196 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::store_global ( bool  pop = false  )  [private]

Definition at line 816 of file interpreter.cpp.

Referenced by generate_instruction().

char * InterpreterGenerator::store_instVar ( bool  pop = false  )  [private]

Definition at line 747 of file interpreter.cpp.

References _masm, advance_aligned(), eax, ecx, edx, entry_point(), esi, field_addr(), jump_ebx(), load_ebx(), Assembler::movl(), oopSize, Assembler::popl(), self_addr(), and MacroAssembler::store_check().

Referenced by generate_instruction().

Here is the call graph for this function:

char * InterpreterGenerator::store_temp ( int  i,
bool  pop = false 
) [private]

Definition at line 781 of file interpreter.cpp.

References _masm, eax, entry_point(), jump_ebx(), Assembler::movl(), next_ebx(), Assembler::popl(), and temp_addr().

Referenced by generate_instruction().

Here is the call graph for this function:

char * InterpreterGenerator::store_temp_n ( bool  pop = false  )  [private]

Definition at line 791 of file interpreter.cpp.

References _masm, Assembler::addl(), eax, ebx, entry_point(), esi, jump_ebx(), load_ebx(), Assembler::movb(), Assembler::movl(), Assembler::popl(), and temp_addr().

Referenced by generate_instruction().

Here is the call graph for this function:

Address InterpreterGenerator::temp_addr ( Register  temp_no  )  [private]

Definition at line 460 of file interpreter.cpp.

References ebp, max_nof_temps, oopSize, temp_0_offset, and Address::times_4.

Address InterpreterGenerator::temp_addr ( int  i  )  [private]

Definition at line 454 of file interpreter.cpp.

References assert, ebp, oopSize, and temp_0_offset.

Referenced by push_temp(), push_temp_n(), store_temp(), and store_temp_n().

Address InterpreterGenerator::true_addr (  )  [inline, private]

Definition at line 305 of file interpreter.cpp.

References trueObj.

Referenced by generate_instruction().


Member Data Documentation

Label InterpreterGenerator::_block_entry [private]

Definition at line 256 of file interpreter.cpp.

Label InterpreterGenerator::_boolean_expected [private]

Definition at line 262 of file interpreter.cpp.

bool InterpreterGenerator::_debug [private]

Definition at line 253 of file interpreter.cpp.

Referenced by check_ebx(), check_oop(), and entry_point().

Label InterpreterGenerator::_float_expected [private]

Definition at line 263 of file interpreter.cpp.

Label InterpreterGenerator::_halted [private]

Definition at line 265 of file interpreter.cpp.

Label InterpreterGenerator::_inline_cache_miss [private]

Definition at line 257 of file interpreter.cpp.

Label InterpreterGenerator::_issue_NLR [private]

Definition at line 259 of file interpreter.cpp.

MacroAssembler* InterpreterGenerator::_masm [private]

Definition at line 252 of file interpreter.cpp.

Referenced by advance_aligned(), call_C(), check_ebx(), check_oop(), entry_point(), info(), jump_ebx(), jump_edi(), load_ebx(), load_edi(), load_recv(), next_ebx(), only_pop(), push_arg(), push_arg_n(), push_const(), push_instVar(), push_literal(), push_self(), push_smi(), push_temp(), push_temp_n(), push_tos(), restore_ebx(), restore_esi(), return_instVar(), return_tos(), save_esi(), should_not_reach_here(), skip_words(), store_instVar(), store_temp(), and store_temp_n().

Label InterpreterGenerator::_method_entry [private]

Definition at line 255 of file interpreter.cpp.

Label InterpreterGenerator::_nlr_testpoint [private]

Definition at line 260 of file interpreter.cpp.

Referenced by call_C().

Label InterpreterGenerator::_NLR_to_dead_frame [private]

Definition at line 264 of file interpreter.cpp.

Label InterpreterGenerator::_smi_send_failure [private]

Definition at line 258 of file interpreter.cpp.


The documentation for this class was generated from the following file:
Generated on Mon Oct 9 14:03:58 2006 for Strongtalk VM by  doxygen 1.4.7