Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.cpp @ 187:790e66e5fbac
6687581: Make CMS work with compressed oops
Summary: Make FreeChunk read markword instead of LSB in _klass pointer to indicate that it's a FreeChunk for compressed oops.
Reviewed-by: ysr, jmasa
author | coleenp |
---|---|
date | Mon, 09 Jun 2008 11:51:19 -0400 |
parents | a61af66fc99e |
children | d1605aabd0a1 |
comparison
equal
deleted
inserted
replaced
185:8759d37f2524 | 187:790e66e5fbac |
---|---|
45 HeapWord* addr = (HeapWord*)this; | 45 HeapWord* addr = (HeapWord*)this; |
46 size_t hdr = header_size(); | 46 size_t hdr = header_size(); |
47 Copy::fill_to_words(addr + hdr, size - hdr, baadbabeHeapWord); | 47 Copy::fill_to_words(addr + hdr, size - hdr, baadbabeHeapWord); |
48 } | 48 } |
49 | 49 |
50 void FreeChunk::mangleFreed(size_t size) { | 50 void FreeChunk::mangleFreed(size_t sz) { |
51 assert(baadbabeHeapWord != deadbeefHeapWord, "Need distinct patterns"); | 51 assert(baadbabeHeapWord != deadbeefHeapWord, "Need distinct patterns"); |
52 // mangle all but the header of a just-freed block of storage | 52 // mangle all but the header of a just-freed block of storage |
53 // just prior to passing it to the storage dictionary | 53 // just prior to passing it to the storage dictionary |
54 assert(size >= MinChunkSize, "smallest size of object"); | 54 assert(sz >= MinChunkSize, "smallest size of object"); |
55 assert(size == _size, "just checking"); | 55 assert(sz == size(), "just checking"); |
56 HeapWord* addr = (HeapWord*)this; | 56 HeapWord* addr = (HeapWord*)this; |
57 size_t hdr = header_size(); | 57 size_t hdr = header_size(); |
58 Copy::fill_to_words(addr + hdr, size - hdr, deadbeefHeapWord); | 58 Copy::fill_to_words(addr + hdr, sz - hdr, deadbeefHeapWord); |
59 } | 59 } |
60 | 60 |
61 void FreeChunk::verifyList() const { | 61 void FreeChunk::verifyList() const { |
62 FreeChunk* nextFC = next(); | 62 FreeChunk* nextFC = next(); |
63 if (nextFC != NULL) { | 63 if (nextFC != NULL) { |