mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 19:44:41 +02:00
Merge
This commit is contained in:
commit
b8633a3b01
46 changed files with 1401 additions and 256 deletions
|
@ -71,8 +71,15 @@ TreeList* TreeList::as_TreeList(TreeChunk* tc) {
|
|||
TreeList* TreeList::as_TreeList(HeapWord* addr, size_t size) {
|
||||
TreeChunk* tc = (TreeChunk*) addr;
|
||||
assert(size >= sizeof(TreeChunk), "Chunk is too small for a TreeChunk");
|
||||
assert(tc->size() == 0 && tc->prev() == NULL && tc->next() == NULL,
|
||||
"Space should be clear");
|
||||
// The space in the heap will have been mangled initially but
|
||||
// is not remangled when a free chunk is returned to the free list
|
||||
// (since it is used to maintain the chunk on the free list).
|
||||
assert((ZapUnusedHeapArea &&
|
||||
SpaceMangler::is_mangled((HeapWord*) tc->size_addr()) &&
|
||||
SpaceMangler::is_mangled((HeapWord*) tc->prev_addr()) &&
|
||||
SpaceMangler::is_mangled((HeapWord*) tc->next_addr())) ||
|
||||
(tc->size() == 0 && tc->prev() == NULL && tc->next() == NULL),
|
||||
"Space should be clear or mangled");
|
||||
tc->setSize(size);
|
||||
tc->linkPrev(NULL);
|
||||
tc->linkNext(NULL);
|
||||
|
|
|
@ -54,7 +54,7 @@ CompactibleFreeListSpace::CompactibleFreeListSpace(BlockOffsetSharedArray* bs,
|
|||
_collector(NULL)
|
||||
{
|
||||
_bt.set_space(this);
|
||||
initialize(mr, true);
|
||||
initialize(mr, SpaceDecorator::Clear, SpaceDecorator::Mangle);
|
||||
// We have all of "mr", all of which we place in the dictionary
|
||||
// as one big chunk. We'll need to decide here which of several
|
||||
// possible alternative dictionary implementations to use. For
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
|
||||
// A FreeBlockDictionary is an abstract superclass that will allow
|
||||
// a number of alternative implementations in the future.
|
||||
class FreeBlockDictionary: public CHeapObj {
|
||||
|
|
|
@ -85,6 +85,8 @@ class FreeChunk VALUE_OBJ_CLASS_SPEC {
|
|||
}
|
||||
|
||||
debug_only(void* prev_addr() const { return (void*)&_prev; })
|
||||
debug_only(void* next_addr() const { return (void*)&_next; })
|
||||
debug_only(void* size_addr() const { return (void*)&_size; })
|
||||
|
||||
size_t size() const volatile {
|
||||
LP64_ONLY(if (UseCompressedOops) return mark()->get_size(); else )
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue