8255909: Remove unused delayed_value methods
Reviewed-by: minqi, coleenp, thartmann
This commit is contained in:
parent
397972ebf3
commit
700447f7e4
@ -3220,13 +3220,6 @@ public:
|
|||||||
Assembler(CodeBuffer* code) : AbstractAssembler(code) {
|
Assembler(CodeBuffer* code) : AbstractAssembler(code) {
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr,
|
|
||||||
Register tmp,
|
|
||||||
int offset) {
|
|
||||||
ShouldNotCallThis();
|
|
||||||
return RegisterOrConstant();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Stack overflow checking
|
// Stack overflow checking
|
||||||
virtual void bang_stack_with_offset(int offset);
|
virtual void bang_stack_with_offset(int offset);
|
||||||
|
|
||||||
|
@ -934,23 +934,6 @@ void MacroAssembler::check_and_handle_earlyret(Register java_thread) { }
|
|||||||
|
|
||||||
void MacroAssembler::check_and_handle_popframe(Register java_thread) { }
|
void MacroAssembler::check_and_handle_popframe(Register java_thread) { }
|
||||||
|
|
||||||
|
|
||||||
RegisterOrConstant MacroAssembler::delayed_value_impl(intptr_t* delayed_value_addr,
|
|
||||||
Register tmp,
|
|
||||||
int offset) {
|
|
||||||
intptr_t value = *delayed_value_addr;
|
|
||||||
if (value != 0)
|
|
||||||
return RegisterOrConstant(value + offset);
|
|
||||||
|
|
||||||
// load indirectly to solve generation ordering problem
|
|
||||||
ldr(tmp, ExternalAddress((address) delayed_value_addr));
|
|
||||||
|
|
||||||
if (offset != 0)
|
|
||||||
add(tmp, tmp, offset);
|
|
||||||
|
|
||||||
return RegisterOrConstant(tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Look up the method for a megamorphic invokeinterface call.
|
// Look up the method for a megamorphic invokeinterface call.
|
||||||
// The target method is determined by <intf_klass, itable_index>.
|
// The target method is determined by <intf_klass, itable_index>.
|
||||||
// The receiver klass is in recv_klass.
|
// The receiver klass is in recv_klass.
|
||||||
|
@ -1013,10 +1013,6 @@ public:
|
|||||||
// Check for reserved stack access in method being exited (for JIT)
|
// Check for reserved stack access in method being exited (for JIT)
|
||||||
void reserved_stack_check();
|
void reserved_stack_check();
|
||||||
|
|
||||||
virtual RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr,
|
|
||||||
Register tmp,
|
|
||||||
int offset);
|
|
||||||
|
|
||||||
// Arithmetics
|
// Arithmetics
|
||||||
|
|
||||||
void addptr(const Address &dst, int32_t src);
|
void addptr(const Address &dst, int32_t src);
|
||||||
|
@ -85,20 +85,6 @@ void AddressLiteral::set_rspec(relocInfo::relocType rtype) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initially added to the Assembler interface as a pure virtual:
|
|
||||||
// RegisterConstant delayed_value(..)
|
|
||||||
// for:
|
|
||||||
// 6812678 macro assembler needs delayed binding of a few constants (for 6655638)
|
|
||||||
// this was subsequently modified to its present name and return type
|
|
||||||
RegisterOrConstant MacroAssembler::delayed_value_impl(intptr_t* delayed_value_addr,
|
|
||||||
Register tmp,
|
|
||||||
int offset) {
|
|
||||||
ShouldNotReachHere();
|
|
||||||
return RegisterOrConstant(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// virtual method calling
|
// virtual method calling
|
||||||
void MacroAssembler::lookup_virtual_method(Register recv_klass,
|
void MacroAssembler::lookup_virtual_method(Register recv_klass,
|
||||||
|
@ -222,14 +222,6 @@ public:
|
|||||||
// returning false to preserve all relocation information.
|
// returning false to preserve all relocation information.
|
||||||
inline bool ignore_non_patchable_relocations() { return true; }
|
inline bool ignore_non_patchable_relocations() { return true; }
|
||||||
|
|
||||||
// Initially added to the Assembler interface as a pure virtual:
|
|
||||||
// RegisterConstant delayed_value(..)
|
|
||||||
// for:
|
|
||||||
// 6812678 macro assembler needs delayed binding of a few constants (for 6655638)
|
|
||||||
// this was subsequently modified to its present name and return type
|
|
||||||
virtual RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr, Register tmp, int offset);
|
|
||||||
|
|
||||||
|
|
||||||
void align(int modulus);
|
void align(int modulus);
|
||||||
|
|
||||||
// Support for VM calls
|
// Support for VM calls
|
||||||
|
@ -382,25 +382,6 @@ AddressLiteral MacroAssembler::constant_oop_address(jobject obj) {
|
|||||||
return AddressLiteral(address(obj), oop_Relocation::spec(oop_index));
|
return AddressLiteral(address(obj), oop_Relocation::spec(oop_index));
|
||||||
}
|
}
|
||||||
|
|
||||||
RegisterOrConstant MacroAssembler::delayed_value_impl(intptr_t* delayed_value_addr,
|
|
||||||
Register tmp, int offset) {
|
|
||||||
intptr_t value = *delayed_value_addr;
|
|
||||||
if (value != 0) {
|
|
||||||
return RegisterOrConstant(value + offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load indirectly to solve generation ordering problem.
|
|
||||||
// static address, no relocation
|
|
||||||
int simm16_offset = load_const_optimized(tmp, delayed_value_addr, noreg, true);
|
|
||||||
ld(tmp, simm16_offset, tmp); // must be aligned ((xa & 3) == 0)
|
|
||||||
|
|
||||||
if (offset != 0) {
|
|
||||||
addi(tmp, tmp, offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
return RegisterOrConstant(tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef PRODUCT
|
#ifndef PRODUCT
|
||||||
void MacroAssembler::pd_print_patched_instruction(address branch) {
|
void MacroAssembler::pd_print_patched_instruction(address branch) {
|
||||||
Unimplemented(); // TODO: PPC port
|
Unimplemented(); // TODO: PPC port
|
||||||
|
@ -152,12 +152,6 @@ class MacroAssembler: public Assembler {
|
|||||||
// Same as load_address.
|
// Same as load_address.
|
||||||
inline void set_oop (AddressLiteral obj_addr, Register d);
|
inline void set_oop (AddressLiteral obj_addr, Register d);
|
||||||
|
|
||||||
// Read runtime constant: Issue load if constant not yet established,
|
|
||||||
// else use real constant.
|
|
||||||
virtual RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr,
|
|
||||||
Register tmp,
|
|
||||||
int offset);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// branch, jump
|
// branch, jump
|
||||||
//
|
//
|
||||||
|
@ -1810,34 +1810,6 @@ void MacroAssembler::c2bool(Register r, Register t) {
|
|||||||
z_srl(r, 31); // Yields 0 if r was 0, 1 otherwise.
|
z_srl(r, 31); // Yields 0 if r was 0, 1 otherwise.
|
||||||
}
|
}
|
||||||
|
|
||||||
RegisterOrConstant MacroAssembler::delayed_value_impl(intptr_t* delayed_value_addr,
|
|
||||||
Register tmp,
|
|
||||||
int offset) {
|
|
||||||
intptr_t value = *delayed_value_addr;
|
|
||||||
if (value != 0) {
|
|
||||||
return RegisterOrConstant(value + offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
BLOCK_COMMENT("delayed_value {");
|
|
||||||
// Load indirectly to solve generation ordering problem.
|
|
||||||
load_absolute_address(tmp, (address) delayed_value_addr); // tmp = a;
|
|
||||||
z_lg(tmp, 0, tmp); // tmp = *tmp;
|
|
||||||
|
|
||||||
#ifdef ASSERT
|
|
||||||
NearLabel L;
|
|
||||||
compare64_and_branch(tmp, (intptr_t)0L, Assembler::bcondNotEqual, L);
|
|
||||||
z_illtrap();
|
|
||||||
bind(L);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (offset != 0) {
|
|
||||||
z_agfi(tmp, offset); // tmp = tmp + offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
BLOCK_COMMENT("} delayed_value");
|
|
||||||
return RegisterOrConstant(tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Patch instruction `inst' at offset `inst_pos' to refer to `dest_pos'
|
// Patch instruction `inst' at offset `inst_pos' to refer to `dest_pos'
|
||||||
// and return the resulting instruction.
|
// and return the resulting instruction.
|
||||||
// Dest_pos and inst_pos are 32 bit only. These parms can only designate
|
// Dest_pos and inst_pos are 32 bit only. These parms can only designate
|
||||||
|
@ -350,9 +350,6 @@ class MacroAssembler: public Assembler {
|
|||||||
// Uses constant_metadata_address.
|
// Uses constant_metadata_address.
|
||||||
inline bool set_metadata_constant(Metadata* md, Register d);
|
inline bool set_metadata_constant(Metadata* md, Register d);
|
||||||
|
|
||||||
virtual RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr,
|
|
||||||
Register tmp,
|
|
||||||
int offset);
|
|
||||||
//
|
//
|
||||||
// branch, jump
|
// branch, jump
|
||||||
//
|
//
|
||||||
|
@ -3929,44 +3929,6 @@ void MacroAssembler::vallones(XMMRegister dst, int vector_len) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RegisterOrConstant MacroAssembler::delayed_value_impl(intptr_t* delayed_value_addr,
|
|
||||||
Register tmp,
|
|
||||||
int offset) {
|
|
||||||
intptr_t value = *delayed_value_addr;
|
|
||||||
if (value != 0)
|
|
||||||
return RegisterOrConstant(value + offset);
|
|
||||||
|
|
||||||
// load indirectly to solve generation ordering problem
|
|
||||||
movptr(tmp, ExternalAddress((address) delayed_value_addr));
|
|
||||||
|
|
||||||
#ifdef ASSERT
|
|
||||||
{ Label L;
|
|
||||||
testptr(tmp, tmp);
|
|
||||||
if (WizardMode) {
|
|
||||||
const char* buf = NULL;
|
|
||||||
{
|
|
||||||
ResourceMark rm;
|
|
||||||
stringStream ss;
|
|
||||||
ss.print("DelayedValue=" INTPTR_FORMAT, delayed_value_addr[1]);
|
|
||||||
buf = code_string(ss.as_string());
|
|
||||||
}
|
|
||||||
jcc(Assembler::notZero, L);
|
|
||||||
STOP(buf);
|
|
||||||
} else {
|
|
||||||
jccb(Assembler::notZero, L);
|
|
||||||
hlt();
|
|
||||||
}
|
|
||||||
bind(L);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (offset != 0)
|
|
||||||
addptr(tmp, offset);
|
|
||||||
|
|
||||||
return RegisterOrConstant(tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Address MacroAssembler::argument_address(RegisterOrConstant arg_slot,
|
Address MacroAssembler::argument_address(RegisterOrConstant arg_slot,
|
||||||
int extra_slot_offset) {
|
int extra_slot_offset) {
|
||||||
// cf. TemplateTable::prepare_invoke(), if (load_receiver).
|
// cf. TemplateTable::prepare_invoke(), if (load_receiver).
|
||||||
|
@ -651,10 +651,6 @@ class MacroAssembler: public Assembler {
|
|||||||
// Check for reserved stack access in method being exited (for JIT)
|
// Check for reserved stack access in method being exited (for JIT)
|
||||||
void reserved_stack_check();
|
void reserved_stack_check();
|
||||||
|
|
||||||
virtual RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr,
|
|
||||||
Register tmp,
|
|
||||||
int offset);
|
|
||||||
|
|
||||||
void safepoint_poll(Label& slow_path, Register thread_reg, bool at_return, bool in_nmethod);
|
void safepoint_poll(Label& slow_path, Register thread_reg, bool at_return, bool in_nmethod);
|
||||||
|
|
||||||
void verify_tlab();
|
void verify_tlab();
|
||||||
|
@ -66,12 +66,6 @@ void MacroAssembler::advance(int bytes) {
|
|||||||
code_section()->set_end(code_section()->end() + bytes);
|
code_section()->set_end(code_section()->end() + bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
RegisterOrConstant MacroAssembler::delayed_value_impl(
|
|
||||||
intptr_t* delayed_value_addr, Register tmpl, int offset) {
|
|
||||||
ShouldNotCallThis();
|
|
||||||
return RegisterOrConstant();
|
|
||||||
}
|
|
||||||
|
|
||||||
void MacroAssembler::store_oop(jobject obj) {
|
void MacroAssembler::store_oop(jobject obj) {
|
||||||
code_section()->relocate(pc(), oop_Relocation::spec_for_immediate());
|
code_section()->relocate(pc(), oop_Relocation::spec_for_immediate());
|
||||||
emit_address((address) obj);
|
emit_address((address) obj);
|
||||||
|
@ -54,9 +54,6 @@ class MacroAssembler : public Assembler {
|
|||||||
void bang_stack_with_offset(int offset);
|
void bang_stack_with_offset(int offset);
|
||||||
bool needs_explicit_null_check(intptr_t offset);
|
bool needs_explicit_null_check(intptr_t offset);
|
||||||
bool uses_implicit_null_check(void* address);
|
bool uses_implicit_null_check(void* address);
|
||||||
RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr,
|
|
||||||
Register tmp, int offset);
|
|
||||||
public:
|
|
||||||
void advance(int bytes);
|
void advance(int bytes);
|
||||||
void store_oop(jobject obj);
|
void store_oop(jobject obj);
|
||||||
void store_Metadata(Metadata* obj);
|
void store_Metadata(Metadata* obj);
|
||||||
|
@ -35,14 +35,6 @@
|
|||||||
class InterpreterMacroAssembler : public MacroAssembler {
|
class InterpreterMacroAssembler : public MacroAssembler {
|
||||||
public:
|
public:
|
||||||
InterpreterMacroAssembler(CodeBuffer* code) : MacroAssembler(code) {}
|
InterpreterMacroAssembler(CodeBuffer* code) : MacroAssembler(code) {}
|
||||||
|
|
||||||
public:
|
|
||||||
RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr,
|
|
||||||
Register tmp,
|
|
||||||
int offset) {
|
|
||||||
ShouldNotCallThis();
|
|
||||||
return RegisterOrConstant();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CPU_ZERO_INTERP_MASM_ZERO_HPP
|
#endif // CPU_ZERO_INTERP_MASM_ZERO_HPP
|
||||||
|
@ -431,22 +431,6 @@ class AbstractAssembler : public ResourceObj {
|
|||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bootstrapping aid to cope with delayed determination of constants.
|
|
||||||
// Returns a static address which will eventually contain the constant.
|
|
||||||
// The value zero (NULL) stands instead of a constant which is still uncomputed.
|
|
||||||
// Thus, the eventual value of the constant must not be zero.
|
|
||||||
// This is fine, since this is designed for embedding object field
|
|
||||||
// offsets in code which must be generated before the object class is loaded.
|
|
||||||
// Field offsets are never zero, since an object's header (mark word)
|
|
||||||
// is located at offset zero.
|
|
||||||
RegisterOrConstant delayed_value(int(*value_fn)(), Register tmp, int offset = 0);
|
|
||||||
RegisterOrConstant delayed_value(address(*value_fn)(), Register tmp, int offset = 0);
|
|
||||||
virtual RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr, Register tmp, int offset) = 0;
|
|
||||||
// Last overloading is platform-dependent; look in assembler_<arch>.cpp.
|
|
||||||
static intptr_t* delayed_value_addr(int(*constant_fn)());
|
|
||||||
static intptr_t* delayed_value_addr(address(*constant_fn)());
|
|
||||||
static void update_delayed_values();
|
|
||||||
|
|
||||||
// Bang stack to trigger StackOverflowError at a safe location
|
// Bang stack to trigger StackOverflowError at a safe location
|
||||||
// implementation delegates to machine-specific bang_stack_with_offset
|
// implementation delegates to machine-specific bang_stack_with_offset
|
||||||
void generate_stack_overflow_check( int frame_size_in_bytes );
|
void generate_stack_overflow_check( int frame_size_in_bytes );
|
||||||
|
Loading…
Reference in New Issue
Block a user