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