mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 23:04:50 +02:00
8047326: Consolidate all CompiledIC::CompiledIC implementations and move it to compiledIC.cpp
Reviewed-by: vlivanov, ehelin
This commit is contained in:
parent
24fcad36b4
commit
c3148bb6cb
5 changed files with 24 additions and 112 deletions
|
@ -50,34 +50,6 @@ bool CompiledIC::is_icholder_call_site(virtual_call_Relocation* call_site) {
|
||||||
return is_icholder_entry(call->destination());
|
return is_icholder_entry(call->destination());
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// High-level access to an inline cache. Guaranteed to be MT-safe.
|
|
||||||
|
|
||||||
CompiledIC::CompiledIC(nmethod* nm, NativeCall* call)
|
|
||||||
: _ic_call(call)
|
|
||||||
{
|
|
||||||
address ic_call = call->instruction_address();
|
|
||||||
|
|
||||||
assert(ic_call != NULL, "ic_call address must be set");
|
|
||||||
assert(nm != NULL, "must pass nmethod");
|
|
||||||
assert(nm->contains(ic_call), "must be in nmethod");
|
|
||||||
|
|
||||||
// Search for the ic_call at the given address.
|
|
||||||
RelocIterator iter(nm, ic_call, ic_call+1);
|
|
||||||
bool ret = iter.next();
|
|
||||||
assert(ret == true, "relocInfo must exist at this address");
|
|
||||||
assert(iter.addr() == ic_call, "must find ic_call");
|
|
||||||
if (iter.type() == relocInfo::virtual_call_type) {
|
|
||||||
virtual_call_Relocation* r = iter.virtual_call_reloc();
|
|
||||||
_is_optimized = false;
|
|
||||||
_value = nativeMovConstReg_at(r->cached_value());
|
|
||||||
} else {
|
|
||||||
assert(iter.type() == relocInfo::opt_virtual_call_type, "must be a virtual call");
|
|
||||||
_is_optimized = true;
|
|
||||||
_value = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
// A PPC CompiledStaticCall looks like this:
|
// A PPC CompiledStaticCall looks like this:
|
||||||
|
|
|
@ -50,34 +50,6 @@ bool CompiledIC::is_icholder_call_site(virtual_call_Relocation* call_site) {
|
||||||
return is_icholder_entry(call->destination());
|
return is_icholder_entry(call->destination());
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// High-level access to an inline cache. Guaranteed to be MT-safe.
|
|
||||||
|
|
||||||
CompiledIC::CompiledIC(nmethod* nm, NativeCall* call)
|
|
||||||
: _ic_call(call)
|
|
||||||
{
|
|
||||||
address ic_call = call->instruction_address();
|
|
||||||
|
|
||||||
assert(ic_call != NULL, "ic_call address must be set");
|
|
||||||
assert(nm != NULL, "must pass nmethod");
|
|
||||||
assert(nm->contains(ic_call), "must be in nmethod");
|
|
||||||
|
|
||||||
// Search for the ic_call at the given address.
|
|
||||||
RelocIterator iter(nm, ic_call, ic_call+1);
|
|
||||||
bool ret = iter.next();
|
|
||||||
assert(ret == true, "relocInfo must exist at this address");
|
|
||||||
assert(iter.addr() == ic_call, "must find ic_call");
|
|
||||||
if (iter.type() == relocInfo::virtual_call_type) {
|
|
||||||
virtual_call_Relocation* r = iter.virtual_call_reloc();
|
|
||||||
_is_optimized = false;
|
|
||||||
_value = nativeMovConstReg_at(r->cached_value());
|
|
||||||
} else {
|
|
||||||
assert(iter.type() == relocInfo::opt_virtual_call_type, "must be a virtual call");
|
|
||||||
_is_optimized = true;
|
|
||||||
_value = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#define __ _masm.
|
#define __ _masm.
|
||||||
|
|
|
@ -47,34 +47,6 @@ bool CompiledIC::is_icholder_call_site(virtual_call_Relocation* call_site) {
|
||||||
return is_icholder_entry(call->destination());
|
return is_icholder_entry(call->destination());
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// High-level access to an inline cache. Guaranteed to be MT-safe.
|
|
||||||
|
|
||||||
CompiledIC::CompiledIC(nmethod* nm, NativeCall* call)
|
|
||||||
: _ic_call(call)
|
|
||||||
{
|
|
||||||
address ic_call = call->instruction_address();
|
|
||||||
|
|
||||||
assert(ic_call != NULL, "ic_call address must be set");
|
|
||||||
assert(nm != NULL, "must pass nmethod");
|
|
||||||
assert(nm->contains(ic_call), "must be in nmethod");
|
|
||||||
|
|
||||||
// Search for the ic_call at the given address.
|
|
||||||
RelocIterator iter(nm, ic_call, ic_call+1);
|
|
||||||
bool ret = iter.next();
|
|
||||||
assert(ret == true, "relocInfo must exist at this address");
|
|
||||||
assert(iter.addr() == ic_call, "must find ic_call");
|
|
||||||
if (iter.type() == relocInfo::virtual_call_type) {
|
|
||||||
virtual_call_Relocation* r = iter.virtual_call_reloc();
|
|
||||||
_is_optimized = false;
|
|
||||||
_value = nativeMovConstReg_at(r->cached_value());
|
|
||||||
} else {
|
|
||||||
assert(iter.type() == relocInfo::opt_virtual_call_type, "must be a virtual call");
|
|
||||||
_is_optimized = true;
|
|
||||||
_value = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#define __ _masm.
|
#define __ _masm.
|
||||||
|
|
|
@ -58,34 +58,6 @@ bool CompiledIC::is_icholder_call_site(virtual_call_Relocation* call_site) {
|
||||||
return is_icholder_entry(call->destination());
|
return is_icholder_entry(call->destination());
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// High-level access to an inline cache. Guaranteed to be MT-safe.
|
|
||||||
|
|
||||||
CompiledIC::CompiledIC(nmethod* nm, NativeCall* call)
|
|
||||||
: _ic_call(call)
|
|
||||||
{
|
|
||||||
address ic_call = call->instruction_address();
|
|
||||||
|
|
||||||
assert(ic_call != NULL, "ic_call address must be set");
|
|
||||||
assert(nm != NULL, "must pass nmethod");
|
|
||||||
assert(nm->contains(ic_call), "must be in nmethod");
|
|
||||||
|
|
||||||
// Search for the ic_call at the given address.
|
|
||||||
RelocIterator iter(nm, ic_call, ic_call+1);
|
|
||||||
bool ret = iter.next();
|
|
||||||
assert(ret == true, "relocInfo must exist at this address");
|
|
||||||
assert(iter.addr() == ic_call, "must find ic_call");
|
|
||||||
if (iter.type() == relocInfo::virtual_call_type) {
|
|
||||||
virtual_call_Relocation* r = iter.virtual_call_reloc();
|
|
||||||
_is_optimized = false;
|
|
||||||
_value = nativeMovConstReg_at(r->cached_value());
|
|
||||||
} else {
|
|
||||||
assert(iter.type() == relocInfo::opt_virtual_call_type, "must be a virtual call");
|
|
||||||
_is_optimized = true;
|
|
||||||
_value = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
void CompiledStaticCall::emit_to_interp_stub(CodeBuffer &cbuf) {
|
void CompiledStaticCall::emit_to_interp_stub(CodeBuffer &cbuf) {
|
||||||
|
|
|
@ -159,6 +159,30 @@ address CompiledIC::stub_address() const {
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// High-level access to an inline cache. Guaranteed to be MT-safe.
|
// High-level access to an inline cache. Guaranteed to be MT-safe.
|
||||||
|
|
||||||
|
CompiledIC::CompiledIC(nmethod* nm, NativeCall* call)
|
||||||
|
: _ic_call(call)
|
||||||
|
{
|
||||||
|
address ic_call = call->instruction_address();
|
||||||
|
|
||||||
|
assert(ic_call != NULL, "ic_call address must be set");
|
||||||
|
assert(nm != NULL, "must pass nmethod");
|
||||||
|
assert(nm->contains(ic_call), "must be in nmethod");
|
||||||
|
|
||||||
|
// Search for the ic_call at the given address.
|
||||||
|
RelocIterator iter(nm, ic_call, ic_call+1);
|
||||||
|
bool ret = iter.next();
|
||||||
|
assert(ret == true, "relocInfo must exist at this address");
|
||||||
|
assert(iter.addr() == ic_call, "must find ic_call");
|
||||||
|
if (iter.type() == relocInfo::virtual_call_type) {
|
||||||
|
virtual_call_Relocation* r = iter.virtual_call_reloc();
|
||||||
|
_is_optimized = false;
|
||||||
|
_value = nativeMovConstReg_at(r->cached_value());
|
||||||
|
} else {
|
||||||
|
assert(iter.type() == relocInfo::opt_virtual_call_type, "must be a virtual call");
|
||||||
|
_is_optimized = true;
|
||||||
|
_value = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool CompiledIC::set_to_megamorphic(CallInfo* call_info, Bytecodes::Code bytecode, TRAPS) {
|
bool CompiledIC::set_to_megamorphic(CallInfo* call_info, Bytecodes::Code bytecode, TRAPS) {
|
||||||
assert(CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
|
assert(CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue