119 void push_d(XMMRegister r = xmm0); 120 121 void pop(Register r ) { ((MacroAssembler*)this)->pop(r); } 122 123 void push(Register r ) { ((MacroAssembler*)this)->push(r); } 124 void push(int32_t imm ) { ((MacroAssembler*)this)->push(imm); } 125 126 void pop(TosState state); // transition vtos -> state 127 void push(TosState state); // transition state -> vtos 128 129 void empty_expression_stack() { 130 movptr(rsp, Address(rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize)); 131 // NULL last_sp until next java call 132 movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD); 133 } 134 135 // Helpers for swap and dup 136 void load_ptr(int n, Register val); 137 void store_ptr(int n, Register val); 138 139 // Super call_VM calls - correspond to MacroAssembler::call_VM(_leaf) calls 140 void super_call_VM_leaf(address entry_point); 141 void super_call_VM_leaf(address entry_point, Register arg_1); 142 void super_call_VM_leaf(address entry_point, Register arg_1, Register arg_2); 143 void super_call_VM_leaf(address entry_point, 144 Register arg_1, Register arg_2, Register arg_3); 145 146 // Generate a subtype check: branch to ok_is_subtype if sub_klass is 147 // a subtype of super_klass. 148 void gen_subtype_check( Register sub_klass, Label &ok_is_subtype ); 149 150 // Dispatching 151 void dispatch_prolog(TosState state, int step = 0); 152 void dispatch_epilog(TosState state, int step = 0); 153 // dispatch via ebx (assume ebx is loaded already) 154 void dispatch_only(TosState state); 155 // dispatch normal table via ebx (assume ebx is loaded already) 156 void dispatch_only_normal(TosState state); 157 void dispatch_only_noverify(TosState state); 158 // load ebx from [esi + step] and dispatch via ebx 159 void dispatch_next(TosState state, int step = 0); 160 // load ebx from [esi] and dispatch via ebx and table 161 void dispatch_via (TosState state, address* table); 162 163 // jump to an invoked target 164 void prepare_to_jump_from_interpreted(); 165 void jump_from_interpreted(Register method, Register temp); | 119 void push_d(XMMRegister r = xmm0); 120 121 void pop(Register r ) { ((MacroAssembler*)this)->pop(r); } 122 123 void push(Register r ) { ((MacroAssembler*)this)->push(r); } 124 void push(int32_t imm ) { ((MacroAssembler*)this)->push(imm); } 125 126 void pop(TosState state); // transition vtos -> state 127 void push(TosState state); // transition state -> vtos 128 129 void empty_expression_stack() { 130 movptr(rsp, Address(rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize)); 131 // NULL last_sp until next java call 132 movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD); 133 } 134 135 // Helpers for swap and dup 136 void load_ptr(int n, Register val); 137 void store_ptr(int n, Register val); 138 139 // Generate a subtype check: branch to ok_is_subtype if sub_klass is 140 // a subtype of super_klass. 141 void gen_subtype_check( Register sub_klass, Label &ok_is_subtype ); 142 143 // Dispatching 144 void dispatch_prolog(TosState state, int step = 0); 145 void dispatch_epilog(TosState state, int step = 0); 146 // dispatch via ebx (assume ebx is loaded already) 147 void dispatch_only(TosState state); 148 // dispatch normal table via ebx (assume ebx is loaded already) 149 void dispatch_only_normal(TosState state); 150 void dispatch_only_noverify(TosState state); 151 // load ebx from [esi + step] and dispatch via ebx 152 void dispatch_next(TosState state, int step = 0); 153 // load ebx from [esi] and dispatch via ebx and table 154 void dispatch_via (TosState state, address* table); 155 156 // jump to an invoked target 157 void prepare_to_jump_from_interpreted(); 158 void jump_from_interpreted(Register method, Register temp); |