1.1 --- a/src/cpu/x86/vm/interp_masm_x86_32.hpp Tue Aug 26 15:49:40 2008 -0700 1.2 +++ b/src/cpu/x86/vm/interp_masm_x86_32.hpp Wed Aug 27 00:21:55 2008 -0700 1.3 @@ -65,15 +65,15 @@ 1.4 1.5 #else 1.6 1.7 - void save_bcp() { movl(Address(rbp, frame::interpreter_frame_bcx_offset * wordSize), rsi); } 1.8 - void restore_bcp() { movl(rsi, Address(rbp, frame::interpreter_frame_bcx_offset * wordSize)); } 1.9 - void restore_locals() { movl(rdi, Address(rbp, frame::interpreter_frame_locals_offset * wordSize)); } 1.10 + void save_bcp() { movptr(Address(rbp, frame::interpreter_frame_bcx_offset * wordSize), rsi); } 1.11 + void restore_bcp() { movptr(rsi, Address(rbp, frame::interpreter_frame_bcx_offset * wordSize)); } 1.12 + void restore_locals() { movptr(rdi, Address(rbp, frame::interpreter_frame_locals_offset * wordSize)); } 1.13 1.14 // Helpers for runtime call arguments/results 1.15 - void get_method(Register reg) { movl(reg, Address(rbp, frame::interpreter_frame_method_offset * wordSize)); } 1.16 - void get_constant_pool(Register reg) { get_method(reg); movl(reg, Address(reg, methodOopDesc::constants_offset())); } 1.17 - void get_constant_pool_cache(Register reg) { get_constant_pool(reg); movl(reg, Address(reg, constantPoolOopDesc::cache_offset_in_bytes())); } 1.18 - void get_cpool_and_tags(Register cpool, Register tags) { get_constant_pool(cpool); movl(tags, Address(cpool, constantPoolOopDesc::tags_offset_in_bytes())); 1.19 + void get_method(Register reg) { movptr(reg, Address(rbp, frame::interpreter_frame_method_offset * wordSize)); } 1.20 + void get_constant_pool(Register reg) { get_method(reg); movptr(reg, Address(reg, methodOopDesc::constants_offset())); } 1.21 + void get_constant_pool_cache(Register reg) { get_constant_pool(reg); movptr(reg, Address(reg, constantPoolOopDesc::cache_offset_in_bytes())); } 1.22 + void get_cpool_and_tags(Register cpool, Register tags) { get_constant_pool(cpool); movptr(tags, Address(cpool, constantPoolOopDesc::tags_offset_in_bytes())); 1.23 } 1.24 void get_unsigned_2_byte_index_at_bcp(Register reg, int bcp_offset); 1.25 void get_cache_and_index_at_bcp(Register cache, Register index, int bcp_offset); 1.26 @@ -82,8 +82,6 @@ 1.27 // Expression stack 1.28 void f2ieee(); // truncate ftos to 32bits 1.29 void d2ieee(); // truncate dtos to 64bits 1.30 -#endif // CC_INTERP 1.31 - 1.32 1.33 void pop_ptr(Register r = rax); 1.34 void pop_ptr(Register r, Register tag); 1.35 @@ -104,14 +102,25 @@ 1.36 void pop(TosState state); // transition vtos -> state 1.37 void push(TosState state); // transition state -> vtos 1.38 1.39 + void pop(Register r ) { ((MacroAssembler*)this)->pop(r); } 1.40 + 1.41 + void push(Register r ) { ((MacroAssembler*)this)->push(r); } 1.42 + void push(int32_t imm ) { ((MacroAssembler*)this)->push(imm); } 1.43 + 1.44 + // These are dummies to prevent surprise implicit conversions to Register 1.45 + void pop(void* v ); // Add unimplemented ambiguous method 1.46 + void push(void* v ); // Add unimplemented ambiguous method 1.47 + 1.48 DEBUG_ONLY(void verify_stack_tag(frame::Tag t);) 1.49 1.50 +#endif // CC_INTERP 1.51 + 1.52 #ifndef CC_INTERP 1.53 1.54 void empty_expression_stack() { 1.55 - movl(rsp, Address(rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize)); 1.56 + movptr(rsp, Address(rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize)); 1.57 // NULL last_sp until next java call 1.58 - movl(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD); 1.59 + movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD); 1.60 } 1.61 1.62 // Tagged stack helpers for swap and dup