--- a/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp Fri Aug 31 16:39:35 2012 -0700
+++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp Sat Sep 01 13:25:18 2012 -0400
@@ -152,7 +152,7 @@
// is added and removed as needed in the frame code.
// Interface to signature handler
REGISTER_DECLARATION(Register, Llocals , L7); // pointer to locals for signature handler
-REGISTER_DECLARATION(Register, Lmethod , L6); // methodOop when calling signature handler
+REGISTER_DECLARATION(Register, Lmethod , L6); // Method* when calling signature handler
#else
REGISTER_DECLARATION(Register, Lesp , L0); // expression stack pointer
@@ -351,7 +351,7 @@
// Convert the raw encoding form into the form expected by the
// constructor for Address.
- static Address make_raw(int base, int index, int scale, int disp, bool disp_is_oop);
+ static Address make_raw(int base, int index, int scale, int disp, relocInfo::relocType disp_reloc);
friend class Assembler;
};
@@ -438,11 +438,11 @@
_rspec(rspec_from_rtype(rtype, (address) addr)) {}
#endif
- AddressLiteral(oop addr, relocInfo::relocType rtype = relocInfo::none)
+ AddressLiteral(Metadata* addr, relocInfo::relocType rtype = relocInfo::none)
: _address((address) addr),
_rspec(rspec_from_rtype(rtype, (address) addr)) {}
- AddressLiteral(oop* addr, relocInfo::relocType rtype = relocInfo::none)
+ AddressLiteral(Metadata** addr, relocInfo::relocType rtype = relocInfo::none)
: _address((address) addr),
_rspec(rspec_from_rtype(rtype, (address) addr)) {}
@@ -478,7 +478,7 @@
public:
ExternalAddress(address target) : AddressLiteral(target, reloc_for_target( target)) {}
- ExternalAddress(oop* target) : AddressLiteral(target, reloc_for_target((address) target)) {}
+ ExternalAddress(Metadata** target) : AddressLiteral(target, reloc_for_target((address) target)) {}
};
inline Address RegisterImpl::address_in_saved_window() const {
@@ -2311,11 +2311,14 @@
void call_VM_leaf(Register thread_cache, address entry_point, Register arg_1, Register arg_2, Register arg_3);
void get_vm_result (Register oop_result);
- void get_vm_result_2(Register oop_result);
+ void get_vm_result_2(Register metadata_result);
// vm result is currently getting hijacked to for oop preservation
void set_vm_result(Register oop_result);
+ // Emit the CompiledIC call idiom
+ void ic_call(address entry, bool emit_delay = true);
+
// if call_VM_base was called with check_exceptions=false, then call
// check_and_forward_exception to handle exceptions when it is safe
void check_and_forward_exception(Register scratch_reg);
@@ -2392,6 +2395,13 @@
inline void set_oop_constant (jobject obj, Register d); // uses constant_oop_address
inline void set_oop (const AddressLiteral& obj_addr, Register d); // same as load_address
+ // metadata in code that we have to keep track of
+ AddressLiteral allocate_metadata_address(Metadata* obj); // allocate_index
+ AddressLiteral constant_metadata_address(Metadata* obj); // find_index
+ inline void set_metadata (Metadata* obj, Register d); // uses allocate_metadata_address
+ inline void set_metadata_constant (Metadata* obj, Register d); // uses constant_metadata_address
+ inline void set_metadata (const AddressLiteral& obj_addr, Register d); // same as load_address
+
void set_narrow_oop( jobject obj, Register d );
// nop padding