Mercurial > hg > truffle
diff src/share/vm/oops/oop.pcgc.inline.hpp @ 113:ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv
Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author | coleenp |
---|---|
date | Sun, 13 Apr 2008 17:43:42 -0400 |
parents | a61af66fc99e |
children | d1605aabd0a1 |
line wrap: on
line diff
--- a/src/share/vm/oops/oop.pcgc.inline.hpp Fri Apr 11 09:56:35 2008 -0400 +++ b/src/share/vm/oops/oop.pcgc.inline.hpp Sun Apr 13 17:43:42 2008 -0400 @@ -67,8 +67,8 @@ // 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 @@ // 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 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); + } }