src/cpu/sparc/vm/assembler_sparc.hpp

changeset 4037
da91efe96a93
parent 3969
1d7922586cf6
child 4052
75f33eecc1b3
     1.1 --- a/src/cpu/sparc/vm/assembler_sparc.hpp	Fri Aug 31 16:39:35 2012 -0700
     1.2 +++ b/src/cpu/sparc/vm/assembler_sparc.hpp	Sat Sep 01 13:25:18 2012 -0400
     1.3 @@ -152,7 +152,7 @@
     1.4                                                         // is added and removed as needed in the frame code.
     1.5  // Interface to signature handler
     1.6  REGISTER_DECLARATION(Register, Llocals          , L7); // pointer to locals for signature handler
     1.7 -REGISTER_DECLARATION(Register, Lmethod          , L6); // methodOop when calling signature handler
     1.8 +REGISTER_DECLARATION(Register, Lmethod          , L6); // Method* when calling signature handler
     1.9  
    1.10  #else
    1.11  REGISTER_DECLARATION(Register, Lesp             , L0); // expression stack pointer
    1.12 @@ -351,7 +351,7 @@
    1.13  
    1.14    // Convert the raw encoding form into the form expected by the
    1.15    // constructor for Address.
    1.16 -  static Address make_raw(int base, int index, int scale, int disp, bool disp_is_oop);
    1.17 +  static Address make_raw(int base, int index, int scale, int disp, relocInfo::relocType disp_reloc);
    1.18  
    1.19    friend class Assembler;
    1.20  };
    1.21 @@ -438,11 +438,11 @@
    1.22        _rspec(rspec_from_rtype(rtype, (address) addr)) {}
    1.23  #endif
    1.24  
    1.25 -  AddressLiteral(oop addr, relocInfo::relocType rtype = relocInfo::none)
    1.26 +  AddressLiteral(Metadata* addr, relocInfo::relocType rtype = relocInfo::none)
    1.27      : _address((address) addr),
    1.28        _rspec(rspec_from_rtype(rtype, (address) addr)) {}
    1.29  
    1.30 -  AddressLiteral(oop* addr, relocInfo::relocType rtype = relocInfo::none)
    1.31 +  AddressLiteral(Metadata** addr, relocInfo::relocType rtype = relocInfo::none)
    1.32      : _address((address) addr),
    1.33        _rspec(rspec_from_rtype(rtype, (address) addr)) {}
    1.34  
    1.35 @@ -478,7 +478,7 @@
    1.36  
    1.37   public:
    1.38    ExternalAddress(address target) : AddressLiteral(target, reloc_for_target(          target)) {}
    1.39 -  ExternalAddress(oop*    target) : AddressLiteral(target, reloc_for_target((address) target)) {}
    1.40 +  ExternalAddress(Metadata** target) : AddressLiteral(target, reloc_for_target((address) target)) {}
    1.41  };
    1.42  
    1.43  inline Address RegisterImpl::address_in_saved_window() const {
    1.44 @@ -2311,11 +2311,14 @@
    1.45    void call_VM_leaf(Register thread_cache, address entry_point, Register arg_1, Register arg_2, Register arg_3);
    1.46  
    1.47    void get_vm_result  (Register oop_result);
    1.48 -  void get_vm_result_2(Register oop_result);
    1.49 +  void get_vm_result_2(Register metadata_result);
    1.50  
    1.51    // vm result is currently getting hijacked to for oop preservation
    1.52    void set_vm_result(Register oop_result);
    1.53  
    1.54 +  // Emit the CompiledIC call idiom
    1.55 +  void ic_call(address entry, bool emit_delay = true);
    1.56 +
    1.57    // if call_VM_base was called with check_exceptions=false, then call
    1.58    // check_and_forward_exception to handle exceptions when it is safe
    1.59    void check_and_forward_exception(Register scratch_reg);
    1.60 @@ -2392,6 +2395,13 @@
    1.61    inline void    set_oop_constant    (jobject obj, Register d);              // uses constant_oop_address
    1.62    inline void    set_oop             (const AddressLiteral& obj_addr, Register d); // same as load_address
    1.63  
    1.64 +  // metadata in code that we have to keep track of
    1.65 +  AddressLiteral allocate_metadata_address(Metadata* obj); // allocate_index
    1.66 +  AddressLiteral constant_metadata_address(Metadata* obj); // find_index
    1.67 +  inline void    set_metadata             (Metadata* obj, Register d);              // uses allocate_metadata_address
    1.68 +  inline void    set_metadata_constant    (Metadata* obj, Register d);              // uses constant_metadata_address
    1.69 +  inline void    set_metadata             (const AddressLiteral& obj_addr, Register d); // same as load_address
    1.70 +
    1.71    void set_narrow_oop( jobject obj, Register d );
    1.72  
    1.73    // nop padding

mercurial