src/cpu/x86/vm/interp_masm_x86_32.hpp

changeset 739
dc7f315e41f7
parent 435
a61af66fc99e
child 772
9ee9cf798b59
     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

mercurial