Mercurial > hg > graal-jvmci-8
diff src/share/vm/memory/compactingPermGenGen.cpp @ 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 | 2c106685d6d0 |
children | d1605aabd0a1 |
line wrap: on
line diff
--- a/src/share/vm/memory/compactingPermGenGen.cpp Fri Apr 11 09:56:35 2008 -0400 +++ b/src/share/vm/memory/compactingPermGenGen.cpp Sun Apr 13 17:43:42 2008 -0400 @@ -49,9 +49,9 @@ // to prevent visiting any object twice. class RecursiveAdjustSharedObjectClosure : public OopClosure { -public: - void do_oop(oop* o) { - oop obj = *o; + protected: + template <class T> inline void do_oop_work(T* p) { + oop obj = oopDesc::load_decode_heap_oop_not_null(p); if (obj->is_shared_readwrite()) { if (obj->mark()->is_marked()) { obj->init_mark(); // Don't revisit this object. @@ -71,7 +71,10 @@ } } } - }; + } + public: + virtual void do_oop(oop* p) { RecursiveAdjustSharedObjectClosure::do_oop_work(p); } + virtual void do_oop(narrowOop* p) { RecursiveAdjustSharedObjectClosure::do_oop_work(p); } }; @@ -86,9 +89,9 @@ // as doing so can cause hash codes to be computed, destroying // forwarding pointers. class TraversePlaceholdersClosure : public OopClosure { - public: - void do_oop(oop* o) { - oop obj = *o; + protected: + template <class T> inline void do_oop_work(T* p) { + oop obj = oopDesc::load_decode_heap_oop_not_null(p); if (obj->klass() == Universe::symbolKlassObj() && obj->is_shared_readonly()) { symbolHandle sym((symbolOop) obj); @@ -99,6 +102,10 @@ } } } + public: + virtual void do_oop(oop* p) { TraversePlaceholdersClosure::do_oop_work(p); } + virtual void do_oop(narrowOop* p) { TraversePlaceholdersClosure::do_oop_work(p); } + };