hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
changeset 3697 ea9211aa02f5
parent 3696 9e5d9b5e1049
child 3912 3aaaaad1ccb0
equal deleted inserted replaced
3696:9e5d9b5e1049 3697:ea9211aa02f5
    22  *
    22  *
    23  */
    23  */
    24 
    24 
    25 #include "incls/_precompiled.incl"
    25 #include "incls/_precompiled.incl"
    26 #include "incls/_g1CollectedHeap.cpp.incl"
    26 #include "incls/_g1CollectedHeap.cpp.incl"
       
    27 
       
    28 size_t G1CollectedHeap::_humongous_object_threshold_in_words = 0;
    27 
    29 
    28 // turn it on so that the contents of the young list (scan-only /
    30 // turn it on so that the contents of the young list (scan-only /
    29 // to-be-collected) are printed at "strategic" points before / during
    31 // to-be-collected) are printed at "strategic" points before / during
    30 // / after the collection --- this is useful for debugging
    32 // / after the collection --- this is useful for debugging
    31 #define SCAN_ONLY_VERBOSE 0
    33 #define SCAN_ONLY_VERBOSE 0
  1392   _dirty_cards_region_list(NULL) {
  1394   _dirty_cards_region_list(NULL) {
  1393   _g1h = this; // To catch bugs.
  1395   _g1h = this; // To catch bugs.
  1394   if (_process_strong_tasks == NULL || !_process_strong_tasks->valid()) {
  1396   if (_process_strong_tasks == NULL || !_process_strong_tasks->valid()) {
  1395     vm_exit_during_initialization("Failed necessary allocation.");
  1397     vm_exit_during_initialization("Failed necessary allocation.");
  1396   }
  1398   }
       
  1399 
       
  1400   _humongous_object_threshold_in_words = HeapRegion::GrainWords / 2;
       
  1401 
  1397   int n_queues = MAX2((int)ParallelGCThreads, 1);
  1402   int n_queues = MAX2((int)ParallelGCThreads, 1);
  1398   _task_queues = new RefToScanQueueSet(n_queues);
  1403   _task_queues = new RefToScanQueueSet(n_queues);
  1399 
  1404 
  1400   int n_rem_sets = HeapRegionRemSet::num_par_rem_sets();
  1405   int n_rem_sets = HeapRegionRemSet::num_par_rem_sets();
  1401   assert(n_rem_sets > 0, "Invariant.");
  1406   assert(n_rem_sets > 0, "Invariant.");
  1544   // 6843694 - ensure that the maximum region index can fit
  1549   // 6843694 - ensure that the maximum region index can fit
  1545   // in the remembered set structures.
  1550   // in the remembered set structures.
  1546   const size_t max_region_idx = ((size_t)1 << (sizeof(RegionIdx_t)*BitsPerByte-1)) - 1;
  1551   const size_t max_region_idx = ((size_t)1 << (sizeof(RegionIdx_t)*BitsPerByte-1)) - 1;
  1547   guarantee((max_regions() - 1) <= max_region_idx, "too many regions");
  1552   guarantee((max_regions() - 1) <= max_region_idx, "too many regions");
  1548 
  1553 
  1549   const size_t cards_per_region = HeapRegion::GrainBytes >> CardTableModRefBS::card_shift;
       
  1550   size_t max_cards_per_region = ((size_t)1 << (sizeof(CardIdx_t)*BitsPerByte-1)) - 1;
  1554   size_t max_cards_per_region = ((size_t)1 << (sizeof(CardIdx_t)*BitsPerByte-1)) - 1;
  1551   guarantee(cards_per_region < max_cards_per_region, "too many cards per region");
  1555   guarantee(HeapRegion::CardsPerRegion > 0, "make sure it's initialized");
       
  1556   guarantee((size_t) HeapRegion::CardsPerRegion < max_cards_per_region,
       
  1557             "too many cards per region");
  1552 
  1558 
  1553   _bot_shared = new G1BlockOffsetSharedArray(_reserved,
  1559   _bot_shared = new G1BlockOffsetSharedArray(_reserved,
  1554                                              heap_word_size(init_byte_size));
  1560                                              heap_word_size(init_byte_size));
  1555 
  1561 
  1556   _g1h = this;
  1562   _g1h = this;