8329764: G1: Handle null references during verification first
Reviewed-by: stefank, iwalulya
This commit is contained in:
parent
60d88b7ae2
commit
a3fecdb2f4
@ -621,14 +621,18 @@ class G1VerifyLiveAndRemSetClosure : public BasicOopIterateClosure {
|
|||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
void do_oop_work(T* p) {
|
void do_oop_work(T* p) {
|
||||||
if (_failures->count() >= G1MaxVerifyFailures) {
|
// Check for null references first - they are fairly common and since there is
|
||||||
return;
|
// nothing to do for them anyway (they can't fail verification), it makes sense
|
||||||
}
|
// to handle them first.
|
||||||
|
|
||||||
T heap_oop = RawAccess<>::oop_load(p);
|
T heap_oop = RawAccess<>::oop_load(p);
|
||||||
if (CompressedOops::is_null(heap_oop)) {
|
if (CompressedOops::is_null(heap_oop)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_failures->count() >= G1MaxVerifyFailures) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
oop obj = CompressedOops::decode_raw_not_null(heap_oop);
|
oop obj = CompressedOops::decode_raw_not_null(heap_oop);
|
||||||
|
|
||||||
LiveChecker<T> live_check(_failures, _containing_obj, p, obj, _vo);
|
LiveChecker<T> live_check(_failures, _containing_obj, p, obj, _vo);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user