aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/x86/vm/interp_masm_x86_32.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/x86/vm/interp_masm_x86_32.hpp')
-rw-r--r--src/cpu/x86/vm/interp_masm_x86_32.hpp31
1 files changed, 20 insertions, 11 deletions
diff --git a/src/cpu/x86/vm/interp_masm_x86_32.hpp b/src/cpu/x86/vm/interp_masm_x86_32.hpp
index 10cf8140a..be3dee662 100644
--- a/src/cpu/x86/vm/interp_masm_x86_32.hpp
+++ b/src/cpu/x86/vm/interp_masm_x86_32.hpp
@@ -65,15 +65,15 @@ class InterpreterMacroAssembler: public MacroAssembler {
#else
- void save_bcp() { movl(Address(rbp, frame::interpreter_frame_bcx_offset * wordSize), rsi); }
- void restore_bcp() { movl(rsi, Address(rbp, frame::interpreter_frame_bcx_offset * wordSize)); }
- void restore_locals() { movl(rdi, Address(rbp, frame::interpreter_frame_locals_offset * wordSize)); }
+ void save_bcp() { movptr(Address(rbp, frame::interpreter_frame_bcx_offset * wordSize), rsi); }
+ void restore_bcp() { movptr(rsi, Address(rbp, frame::interpreter_frame_bcx_offset * wordSize)); }
+ void restore_locals() { movptr(rdi, Address(rbp, frame::interpreter_frame_locals_offset * wordSize)); }
// Helpers for runtime call arguments/results
- void get_method(Register reg) { movl(reg, Address(rbp, frame::interpreter_frame_method_offset * wordSize)); }
- void get_constant_pool(Register reg) { get_method(reg); movl(reg, Address(reg, methodOopDesc::constants_offset())); }
- void get_constant_pool_cache(Register reg) { get_constant_pool(reg); movl(reg, Address(reg, constantPoolOopDesc::cache_offset_in_bytes())); }
- void get_cpool_and_tags(Register cpool, Register tags) { get_constant_pool(cpool); movl(tags, Address(cpool, constantPoolOopDesc::tags_offset_in_bytes()));
+ void get_method(Register reg) { movptr(reg, Address(rbp, frame::interpreter_frame_method_offset * wordSize)); }
+ void get_constant_pool(Register reg) { get_method(reg); movptr(reg, Address(reg, methodOopDesc::constants_offset())); }
+ void get_constant_pool_cache(Register reg) { get_constant_pool(reg); movptr(reg, Address(reg, constantPoolOopDesc::cache_offset_in_bytes())); }
+ void get_cpool_and_tags(Register cpool, Register tags) { get_constant_pool(cpool); movptr(tags, Address(cpool, constantPoolOopDesc::tags_offset_in_bytes()));
}
void get_unsigned_2_byte_index_at_bcp(Register reg, int bcp_offset);
void get_cache_and_index_at_bcp(Register cache, Register index, int bcp_offset);
@@ -82,8 +82,6 @@ class InterpreterMacroAssembler: public MacroAssembler {
// Expression stack
void f2ieee(); // truncate ftos to 32bits
void d2ieee(); // truncate dtos to 64bits
-#endif // CC_INTERP
-
void pop_ptr(Register r = rax);
void pop_ptr(Register r, Register tag);
@@ -104,14 +102,25 @@ class InterpreterMacroAssembler: public MacroAssembler {
void pop(TosState state); // transition vtos -> state
void push(TosState state); // transition state -> vtos
+ void pop(Register r ) { ((MacroAssembler*)this)->pop(r); }
+
+ void push(Register r ) { ((MacroAssembler*)this)->push(r); }
+ void push(int32_t imm ) { ((MacroAssembler*)this)->push(imm); }
+
+ // These are dummies to prevent surprise implicit conversions to Register
+ void pop(void* v ); // Add unimplemented ambiguous method
+ void push(void* v ); // Add unimplemented ambiguous method
+
DEBUG_ONLY(void verify_stack_tag(frame::Tag t);)
+#endif // CC_INTERP
+
#ifndef CC_INTERP
void empty_expression_stack() {
- movl(rsp, Address(rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize));
+ movptr(rsp, Address(rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize));
// NULL last_sp until next java call
- movl(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD);
+ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD);
}
// Tagged stack helpers for swap and dup