1665
1666 // Create the barrier set for the entire reserved region.
1667 G1CardTable* ct = new G1CardTable(reserved_region());
1668 ct->initialize();
1669 G1BarrierSet* bs = new G1BarrierSet(ct);
1670 bs->initialize();
1671 assert(bs->is_a(BarrierSet::G1BarrierSet), "sanity");
1672 BarrierSet::set_barrier_set(bs);
1673 _card_table = ct;
1674
1675 G1BarrierSet::satb_mark_queue_set().initialize(this,
1676 SATB_Q_CBL_mon,
1677 &bs->satb_mark_queue_buffer_allocator(),
1678 G1SATBProcessCompletedThreshold,
1679 G1SATBBufferEnqueueingThresholdPercent);
1680
1681 // process_completed_buffers_threshold and max_completed_buffers are updated
1682 // later, based on the concurrent refinement object.
1683 G1BarrierSet::dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon,
1684 &bs->dirty_card_queue_buffer_allocator(),
1685 Shared_DirtyCardQ_lock,
1686 true); // init_free_ids
1687
1688 dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon,
1689 &bs->dirty_card_queue_buffer_allocator(),
1690 Shared_DirtyCardQ_lock);
1691
1692 // Create the hot card cache.
1693 _hot_card_cache = new G1HotCardCache(this);
1694
1695 // Carve out the G1 part of the heap.
1696 ReservedSpace g1_rs = heap_rs.first_part(max_byte_size);
1697 size_t page_size = actual_reserved_page_size(heap_rs);
1698 G1RegionToSpaceMapper* heap_storage =
1699 G1RegionToSpaceMapper::create_heap_mapper(g1_rs,
1700 g1_rs.size(),
1701 page_size,
1702 HeapRegion::GrainBytes,
1703 1,
1704 mtJavaHeap);
1705 if(heap_storage == NULL) {
1706 vm_shutdown_during_initialization("Could not initialize G1 heap");
1707 return JNI_ERR;
1708 }
1709
1710 os::trace_page_sizes("Heap",
|
1665
1666 // Create the barrier set for the entire reserved region.
1667 G1CardTable* ct = new G1CardTable(reserved_region());
1668 ct->initialize();
1669 G1BarrierSet* bs = new G1BarrierSet(ct);
1670 bs->initialize();
1671 assert(bs->is_a(BarrierSet::G1BarrierSet), "sanity");
1672 BarrierSet::set_barrier_set(bs);
1673 _card_table = ct;
1674
1675 G1BarrierSet::satb_mark_queue_set().initialize(this,
1676 SATB_Q_CBL_mon,
1677 &bs->satb_mark_queue_buffer_allocator(),
1678 G1SATBProcessCompletedThreshold,
1679 G1SATBBufferEnqueueingThresholdPercent);
1680
1681 // process_completed_buffers_threshold and max_completed_buffers are updated
1682 // later, based on the concurrent refinement object.
1683 G1BarrierSet::dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon,
1684 &bs->dirty_card_queue_buffer_allocator(),
1685 true); // init_free_ids
1686
1687 dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon,
1688 &bs->dirty_card_queue_buffer_allocator());
1689
1690 // Create the hot card cache.
1691 _hot_card_cache = new G1HotCardCache(this);
1692
1693 // Carve out the G1 part of the heap.
1694 ReservedSpace g1_rs = heap_rs.first_part(max_byte_size);
1695 size_t page_size = actual_reserved_page_size(heap_rs);
1696 G1RegionToSpaceMapper* heap_storage =
1697 G1RegionToSpaceMapper::create_heap_mapper(g1_rs,
1698 g1_rs.size(),
1699 page_size,
1700 HeapRegion::GrainBytes,
1701 1,
1702 mtJavaHeap);
1703 if(heap_storage == NULL) {
1704 vm_shutdown_during_initialization("Could not initialize G1 heap");
1705 return JNI_ERR;
1706 }
1707
1708 os::trace_page_sizes("Heap",
|