6420645: Create a vm that uses compressed oops for up to 32gb heapsizes

Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv

Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
This commit is contained in:
Coleen Phillimore 2008-04-13 17:43:42 -04:00
parent 680ecf1611
commit 4a831d45f0
273 changed files with 6585 additions and 2993 deletions

View file

@ -67,8 +67,8 @@ inline void oopDesc::update_contents(ParCompactionManager* cm,
// update_header();
// The klass has moved. Is the location of the klass
// within the limits?
if ((((HeapWord*)&_klass) >= begin_limit) &&
(((HeapWord*)&_klass) < end_limit)) {
if ((((HeapWord*)&_metadata._klass) >= begin_limit) &&
(((HeapWord*)&_metadata._klass) < end_limit)) {
set_klass(updated_klass);
}
@ -89,7 +89,11 @@ inline void oopDesc::follow_contents(ParCompactionManager* cm) {
// Used by parallel old GC.
inline void oopDesc::follow_header(ParCompactionManager* cm) {
PSParallelCompact::mark_and_push(cm, (oop*)&_klass);
if (UseCompressedOops) {
PSParallelCompact::mark_and_push(cm, compressed_klass_addr());
} else {
PSParallelCompact::mark_and_push(cm, klass_addr());
}
}
inline oop oopDesc::forward_to_atomic(oop p) {
@ -114,9 +118,18 @@ inline oop oopDesc::forward_to_atomic(oop p) {
}
inline void oopDesc::update_header() {
PSParallelCompact::adjust_pointer((oop*)&_klass);
if (UseCompressedOops) {
PSParallelCompact::adjust_pointer(compressed_klass_addr());
} else {
PSParallelCompact::adjust_pointer(klass_addr());
}
}
inline void oopDesc::update_header(HeapWord* beg_addr, HeapWord* end_addr) {
PSParallelCompact::adjust_pointer((oop*)&_klass, beg_addr, end_addr);
if (UseCompressedOops) {
PSParallelCompact::adjust_pointer(compressed_klass_addr(),
beg_addr, end_addr);
} else {
PSParallelCompact::adjust_pointer(klass_addr(), beg_addr, end_addr);
}
}