< prev index next >
src/share/vm/gc/g1/g1BlockOffsetTable.cpp
Print this page
rev 12504 : 8173764: G1 BOT wrongly assumes that objects must always begin at the start of G1BlockOffsetTablePart
Reviewed-by:
rev 12505 : [mq]: 8173764-rev-tschatzl
*** 1,7 ****
/*
! * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2001, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 76,88 ****
G1BlockOffsetTablePart::G1BlockOffsetTablePart(G1BlockOffsetTable* array, G1ContiguousSpace* gsp) :
_bot(array),
_space(gsp),
_next_offset_threshold(NULL),
! _next_offset_index(0),
! _object_can_span(false)
! { }
// The arguments follow the normal convention of denoting
// a right-open interval: [start, end)
void G1BlockOffsetTablePart:: set_remainder_to_point_to_start(HeapWord* start, HeapWord* end) {
--- 76,89 ----
G1BlockOffsetTablePart::G1BlockOffsetTablePart(G1BlockOffsetTable* array, G1ContiguousSpace* gsp) :
_bot(array),
_space(gsp),
_next_offset_threshold(NULL),
! _next_offset_index(0)
! {
! debug_only(_object_can_span = false;)
! }
// The arguments follow the normal convention of denoting
// a right-open interval: [start, end)
void G1BlockOffsetTablePart:: set_remainder_to_point_to_start(HeapWord* start, HeapWord* end) {
*** 364,373 ****
--- 365,378 ----
}
}
}
#ifndef PRODUCT
+ void G1BlockOffsetTablePart::set_object_can_span(bool can_span) {
+ _object_can_span = can_span;
+ }
+
void
G1BlockOffsetTablePart::print_on(outputStream* out) {
size_t from_index = _bot->index_for(_space->bottom());
size_t to_index = _bot->index_for(_space->end());
out->print_cr(">> BOT for area [" PTR_FORMAT "," PTR_FORMAT ") "
*** 418,426 ****
alloc_block(_space->bottom(), obj_top);
if (fill_size > 0) {
alloc_block(obj_top, fill_size);
}
}
-
- void G1BlockOffsetTablePart::set_continues_humongous(bool is_humongous) {
- _object_can_span = is_humongous;
- }
--- 423,427 ----
< prev index next >