mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
8215500: ICRefillVerifierMark does not set the provided verfier as current
Reviewed-by: pliden, thartmann
This commit is contained in:
parent
205598c97f
commit
1cc5cf4c02
3 changed files with 14 additions and 13 deletions
|
@ -53,29 +53,29 @@ ICRefillVerifier::ICRefillVerifier()
|
||||||
_refill_remembered(false)
|
_refill_remembered(false)
|
||||||
{
|
{
|
||||||
Thread* thread = Thread::current();
|
Thread* thread = Thread::current();
|
||||||
assert(thread->missed_ic_stub_refill_mark() == NULL, "nesting not supported");
|
assert(thread->missed_ic_stub_refill_verifier() == NULL, "nesting not supported");
|
||||||
thread->set_missed_ic_stub_refill_mark(this);
|
thread->set_missed_ic_stub_refill_verifier(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
ICRefillVerifier::~ICRefillVerifier() {
|
ICRefillVerifier::~ICRefillVerifier() {
|
||||||
assert(!_refill_requested || _refill_remembered,
|
assert(!_refill_requested || _refill_remembered,
|
||||||
"Forgot to refill IC stubs after failed IC transition");
|
"Forgot to refill IC stubs after failed IC transition");
|
||||||
Thread::current()->set_missed_ic_stub_refill_mark(NULL);
|
Thread::current()->set_missed_ic_stub_refill_verifier(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
ICRefillVerifierMark::ICRefillVerifierMark(ICRefillVerifier* verifier) {
|
ICRefillVerifierMark::ICRefillVerifierMark(ICRefillVerifier* verifier) {
|
||||||
Thread* thread = Thread::current();
|
Thread* thread = Thread::current();
|
||||||
assert(thread->missed_ic_stub_refill_mark() == NULL, "nesting not supported");
|
assert(thread->missed_ic_stub_refill_verifier() == NULL, "nesting not supported");
|
||||||
thread->set_missed_ic_stub_refill_mark(this);
|
thread->set_missed_ic_stub_refill_verifier(verifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
ICRefillVerifierMark::~ICRefillVerifierMark() {
|
ICRefillVerifierMark::~ICRefillVerifierMark() {
|
||||||
Thread::current()->set_missed_ic_stub_refill_mark(NULL);
|
Thread::current()->set_missed_ic_stub_refill_verifier(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ICRefillVerifier* current_ic_refill_verifier() {
|
static ICRefillVerifier* current_ic_refill_verifier() {
|
||||||
Thread* current = Thread::current();
|
Thread* current = Thread::current();
|
||||||
ICRefillVerifier* verifier = reinterpret_cast<ICRefillVerifier*>(current->missed_ic_stub_refill_mark());
|
ICRefillVerifier* verifier = current->missed_ic_stub_refill_verifier();
|
||||||
assert(verifier != NULL, "need a verifier for safety");
|
assert(verifier != NULL, "need a verifier for safety");
|
||||||
return verifier;
|
return verifier;
|
||||||
}
|
}
|
||||||
|
|
|
@ -231,7 +231,7 @@ Thread::Thread() {
|
||||||
set_active_handles(NULL);
|
set_active_handles(NULL);
|
||||||
set_free_handle_block(NULL);
|
set_free_handle_block(NULL);
|
||||||
set_last_handle_mark(NULL);
|
set_last_handle_mark(NULL);
|
||||||
DEBUG_ONLY(_missed_ic_stub_refill_mark = NULL);
|
DEBUG_ONLY(_missed_ic_stub_refill_verifier = NULL);
|
||||||
|
|
||||||
// This initial value ==> never claimed.
|
// This initial value ==> never claimed.
|
||||||
_oops_do_parity = 0;
|
_oops_do_parity = 0;
|
||||||
|
|
|
@ -81,6 +81,7 @@ class jvmtiDeferredLocalVariableSet;
|
||||||
|
|
||||||
class GCTaskQueue;
|
class GCTaskQueue;
|
||||||
class ThreadClosure;
|
class ThreadClosure;
|
||||||
|
class ICRefillVerifier;
|
||||||
class IdealGraphPrinter;
|
class IdealGraphPrinter;
|
||||||
|
|
||||||
class Metadata;
|
class Metadata;
|
||||||
|
@ -329,15 +330,15 @@ class Thread: public ThreadShadow {
|
||||||
private:
|
private:
|
||||||
|
|
||||||
#ifdef ASSERT
|
#ifdef ASSERT
|
||||||
void* _missed_ic_stub_refill_mark;
|
ICRefillVerifier* _missed_ic_stub_refill_verifier;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void* missed_ic_stub_refill_mark() {
|
ICRefillVerifier* missed_ic_stub_refill_verifier() {
|
||||||
return _missed_ic_stub_refill_mark;
|
return _missed_ic_stub_refill_verifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_missed_ic_stub_refill_mark(void* mark) {
|
void set_missed_ic_stub_refill_verifier(ICRefillVerifier* verifier) {
|
||||||
_missed_ic_stub_refill_mark = mark;
|
_missed_ic_stub_refill_verifier = verifier;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue