mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
5103339: Strengthen NoSafepointVerifier
Add NSV check at possible safepoint transition or places that could take out locks. Consolidate with clearing unhandled oops. Reviewed-by: dholmes, rehn
This commit is contained in:
parent
af89550878
commit
d1ca6221a4
16 changed files with 50 additions and 51 deletions
|
@ -367,7 +367,7 @@ class Thread: public ThreadShadow {
|
|||
void set_missed_ic_stub_refill_verifier(ICRefillVerifier* verifier) {
|
||||
_missed_ic_stub_refill_verifier = verifier;
|
||||
}
|
||||
#endif
|
||||
#endif // ASSERT
|
||||
|
||||
private:
|
||||
|
||||
|
@ -381,12 +381,13 @@ class Thread: public ThreadShadow {
|
|||
//
|
||||
NOT_PRODUCT(int _no_safepoint_count;) // If 0, thread allow a safepoint to happen
|
||||
|
||||
private:
|
||||
// Used by SkipGCALot class.
|
||||
NOT_PRODUCT(bool _skip_gcalot;) // Should we elide gc-a-lot?
|
||||
|
||||
friend class GCLocker;
|
||||
friend class NoSafepointVerifier;
|
||||
friend class PauseNoSafepointVerifier;
|
||||
friend class GCLocker;
|
||||
|
||||
volatile void* _polling_page; // Thread local polling page
|
||||
|
||||
|
@ -757,9 +758,12 @@ protected:
|
|||
// Deadlock detection
|
||||
ResourceMark* current_resource_mark() { return _current_resource_mark; }
|
||||
void set_current_resource_mark(ResourceMark* rm) { _current_resource_mark = rm; }
|
||||
#endif
|
||||
#endif // ASSERT
|
||||
|
||||
void check_for_valid_safepoint_state(bool potential_vm_operation) PRODUCT_RETURN;
|
||||
// These functions check conditions on a JavaThread before possibly going to a safepoint,
|
||||
// including NoSafepointVerifier.
|
||||
void check_for_valid_safepoint_state(bool potential_vm_operation) NOT_DEBUG_RETURN;
|
||||
void check_possible_safepoint() NOT_DEBUG_RETURN;
|
||||
|
||||
private:
|
||||
volatile int _jvmti_env_iteration_count;
|
||||
|
@ -1221,7 +1225,7 @@ class JavaThread: public Thread {
|
|||
#ifdef ASSERT
|
||||
// verify this JavaThread hasn't be published in the Threads::list yet
|
||||
void verify_not_published();
|
||||
#endif
|
||||
#endif // ASSERT
|
||||
|
||||
//JNI functiontable getter/setter for JVMTI jni function table interception API.
|
||||
void set_jni_functions(struct JNINativeInterface_* functionTable) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue