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:
Coleen Phillimore 2019-08-14 10:07:00 -04:00
parent af89550878
commit d1ca6221a4
16 changed files with 50 additions and 51 deletions

View file

@ -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) {