Mercurial > hg > truffle
diff src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.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 | 0834225a7916 |
children | b5489bb705c9 |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp Fri Apr 11 09:56:35 2008 -0400 +++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp Sun Apr 13 17:43:42 2008 -0400 @@ -1138,7 +1138,7 @@ // Allocation support HeapWord* allocate(size_t size, bool tlab); HeapWord* have_lock_and_allocate(size_t size, bool tlab); - oop promote(oop obj, size_t obj_size, oop* ref); + oop promote(oop obj, size_t obj_size); HeapWord* par_allocate(size_t size, bool tlab) { return allocate(size, tlab); } @@ -1301,9 +1301,8 @@ // This closure is used to check that a certain set of oops is empty. class FalseClosure: public OopClosure { public: - void do_oop(oop* p) { - guarantee(false, "Should be an empty set"); - } + void do_oop(oop* p) { guarantee(false, "Should be an empty set"); } + void do_oop(narrowOop* p) { guarantee(false, "Should be an empty set"); } }; // This closure is used to do concurrent marking from the roots @@ -1380,6 +1379,12 @@ CMSBitMap* _verification_bm; CMSBitMap* _cms_bm; CMSMarkStack* _mark_stack; + protected: + void do_oop(oop p); + template <class T> inline void do_oop_work(T *p) { + oop obj = oopDesc::load_decode_heap_oop_not_null(p); + do_oop(obj); + } public: PushAndMarkVerifyClosure(CMSCollector* cms_collector, MemRegion span, @@ -1387,6 +1392,7 @@ CMSBitMap* cms_bm, CMSMarkStack* mark_stack); void do_oop(oop* p); + void do_oop(narrowOop* p); // Deal with a stack overflow condition void handle_stack_overflow(HeapWord* lost); };