comparison 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
comparison
equal deleted inserted replaced
110:a49a647afe9a 113:ba764ed4b6f2
1136 void reset_after_compaction(); 1136 void reset_after_compaction();
1137 1137
1138 // Allocation support 1138 // Allocation support
1139 HeapWord* allocate(size_t size, bool tlab); 1139 HeapWord* allocate(size_t size, bool tlab);
1140 HeapWord* have_lock_and_allocate(size_t size, bool tlab); 1140 HeapWord* have_lock_and_allocate(size_t size, bool tlab);
1141 oop promote(oop obj, size_t obj_size, oop* ref); 1141 oop promote(oop obj, size_t obj_size);
1142 HeapWord* par_allocate(size_t size, bool tlab) { 1142 HeapWord* par_allocate(size_t size, bool tlab) {
1143 return allocate(size, tlab); 1143 return allocate(size, tlab);
1144 } 1144 }
1145 1145
1146 // Incremental mode triggering. 1146 // Incremental mode triggering.
1299 // 1299 //
1300 1300
1301 // This closure is used to check that a certain set of oops is empty. 1301 // This closure is used to check that a certain set of oops is empty.
1302 class FalseClosure: public OopClosure { 1302 class FalseClosure: public OopClosure {
1303 public: 1303 public:
1304 void do_oop(oop* p) { 1304 void do_oop(oop* p) { guarantee(false, "Should be an empty set"); }
1305 guarantee(false, "Should be an empty set"); 1305 void do_oop(narrowOop* p) { guarantee(false, "Should be an empty set"); }
1306 }
1307 }; 1306 };
1308 1307
1309 // This closure is used to do concurrent marking from the roots 1308 // This closure is used to do concurrent marking from the roots
1310 // following the first checkpoint. 1309 // following the first checkpoint.
1311 class MarkFromRootsClosure: public BitMapClosure { 1310 class MarkFromRootsClosure: public BitMapClosure {
1378 CMSCollector* _collector; 1377 CMSCollector* _collector;
1379 MemRegion _span; 1378 MemRegion _span;
1380 CMSBitMap* _verification_bm; 1379 CMSBitMap* _verification_bm;
1381 CMSBitMap* _cms_bm; 1380 CMSBitMap* _cms_bm;
1382 CMSMarkStack* _mark_stack; 1381 CMSMarkStack* _mark_stack;
1382 protected:
1383 void do_oop(oop p);
1384 template <class T> inline void do_oop_work(T *p) {
1385 oop obj = oopDesc::load_decode_heap_oop_not_null(p);
1386 do_oop(obj);
1387 }
1383 public: 1388 public:
1384 PushAndMarkVerifyClosure(CMSCollector* cms_collector, 1389 PushAndMarkVerifyClosure(CMSCollector* cms_collector,
1385 MemRegion span, 1390 MemRegion span,
1386 CMSBitMap* verification_bm, 1391 CMSBitMap* verification_bm,
1387 CMSBitMap* cms_bm, 1392 CMSBitMap* cms_bm,
1388 CMSMarkStack* mark_stack); 1393 CMSMarkStack* mark_stack);
1389 void do_oop(oop* p); 1394 void do_oop(oop* p);
1395 void do_oop(narrowOop* p);
1390 // Deal with a stack overflow condition 1396 // Deal with a stack overflow condition
1391 void handle_stack_overflow(HeapWord* lost); 1397 void handle_stack_overflow(HeapWord* lost);
1392 }; 1398 };
1393 1399
1394 class MarkFromRootsVerifyClosure: public BitMapClosure { 1400 class MarkFromRootsVerifyClosure: public BitMapClosure {