mirror of
https://github.com/openjdk/jdk.git
synced 2026-07-18 23:19:33 +00:00
6943926: G1: Integer overflow during heap region verification
The expression that calculates the live bytes for a heap region can overflow for a suitably large humongous region/object. Cache the object size in a suitably sized local variable so that the expression is converted to a wider type. Reviewed-by: tonyp, jmasa, iveresov, apetrusenko
This commit is contained in:
parent
9b4fc8fc23
commit
6110c052aa
@ -2194,8 +2194,10 @@ public:
|
||||
assert(o != NULL, "Huh?");
|
||||
if (!_g1h->is_obj_dead_cond(o, _use_prev_marking)) {
|
||||
o->oop_iterate(&isLive);
|
||||
if (!_hr->obj_allocated_since_prev_marking(o))
|
||||
_live_bytes += (o->size() * HeapWordSize);
|
||||
if (!_hr->obj_allocated_since_prev_marking(o)) {
|
||||
size_t obj_size = o->size(); // Make sure we don't overflow
|
||||
_live_bytes += (obj_size * HeapWordSize);
|
||||
}
|
||||
}
|
||||
}
|
||||
size_t live_bytes() { return _live_bytes; }
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user