40 void null_check_throw(Register a, int offset, Register temp_reg);
41
42 void jump_to_entry(address entry, Register Rscratch);
43
44 // Handy address generation macros.
45 #define thread_(field_name) in_bytes(JavaThread::field_name ## _offset()), R16_thread
46 #define method_(field_name) in_bytes(Method::field_name ## _offset()), R19_method
47
48 virtual void check_and_handle_popframe(Register scratch_reg);
49 virtual void check_and_handle_earlyret(Register scratch_reg);
50
51 // Base routine for all dispatches.
52 void dispatch_base(TosState state, address* table);
53
54 void load_earlyret_value(TosState state, Register Rscratch1);
55
56 static const Address l_tmp;
57 static const Address d_tmp;
58
59 // dispatch routines
60 void dispatch_next(TosState state, int step = 0);
61 void dispatch_via (TosState state, address* table);
62 void load_dispatch_table(Register dst, address* table);
63 void dispatch_Lbyte_code(TosState state, Register bytecode, address* table, bool verify = false);
64
65 // Called by shared interpreter generator.
66 void dispatch_prolog(TosState state, int step = 0);
67 void dispatch_epilog(TosState state, int step = 0);
68
69 // Super call_VM calls - correspond to MacroAssembler::call_VM(_leaf) calls.
70 void super_call_VM_leaf(Register thread_cache, address entry_point, Register arg_1);
71 void super_call_VM(Register thread_cache, Register oop_result, Register last_java_sp,
72 address entry_point, Register arg_1, Register arg_2, bool check_exception = true);
73
74 // Generate a subtype check: branch to ok_is_subtype if sub_klass is
75 // a subtype of super_klass. Blows registers tmp1, tmp2 and tmp3.
76 void gen_subtype_check(Register sub_klass, Register super_klass,
77 Register tmp1, Register tmp2, Register tmp3, Label &ok_is_subtype);
78
79 // Load object from cpool->resolved_references(index).
80 void load_resolved_reference_at_index(Register result, Register index, Label *is_null = NULL);
81
82 // load cpool->resolved_klass_at(index)
83 void load_resolved_klass_at_offset(Register Rcpool, Register Roffset, Register Rklass);
|
40 void null_check_throw(Register a, int offset, Register temp_reg);
41
42 void jump_to_entry(address entry, Register Rscratch);
43
44 // Handy address generation macros.
45 #define thread_(field_name) in_bytes(JavaThread::field_name ## _offset()), R16_thread
46 #define method_(field_name) in_bytes(Method::field_name ## _offset()), R19_method
47
48 virtual void check_and_handle_popframe(Register scratch_reg);
49 virtual void check_and_handle_earlyret(Register scratch_reg);
50
51 // Base routine for all dispatches.
52 void dispatch_base(TosState state, address* table);
53
54 void load_earlyret_value(TosState state, Register Rscratch1);
55
56 static const Address l_tmp;
57 static const Address d_tmp;
58
59 // dispatch routines
60 void dispatch_next(TosState state, int step = 0, bool generate_poll = false);
61 void dispatch_via (TosState state, address* table);
62 void load_dispatch_table(Register dst, address* table);
63 void dispatch_Lbyte_code(TosState state, Register bytecode, address* table, bool generate_poll = false);
64
65 // Called by shared interpreter generator.
66 void dispatch_prolog(TosState state, int step = 0);
67 void dispatch_epilog(TosState state, int step = 0);
68
69 // Super call_VM calls - correspond to MacroAssembler::call_VM(_leaf) calls.
70 void super_call_VM_leaf(Register thread_cache, address entry_point, Register arg_1);
71 void super_call_VM(Register thread_cache, Register oop_result, Register last_java_sp,
72 address entry_point, Register arg_1, Register arg_2, bool check_exception = true);
73
74 // Generate a subtype check: branch to ok_is_subtype if sub_klass is
75 // a subtype of super_klass. Blows registers tmp1, tmp2 and tmp3.
76 void gen_subtype_check(Register sub_klass, Register super_klass,
77 Register tmp1, Register tmp2, Register tmp3, Label &ok_is_subtype);
78
79 // Load object from cpool->resolved_references(index).
80 void load_resolved_reference_at_index(Register result, Register index, Label *is_null = NULL);
81
82 // load cpool->resolved_klass_at(index)
83 void load_resolved_klass_at_offset(Register Rcpool, Register Roffset, Register Rklass);
|