You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
/* add the leaf to the spine region's leaf list */
361
-
/* We own the lock on the spine region's context when this call is made so we can safely manipulate this list.
362
-
* An exceptional scenario: A thread allocates a spine (and possibly a few arraylets), but does not complete the allocation. A global GC (or a series of regular PGCs) occurs
363
-
* that age out regions to max age. The spine moves into a common context. Now, we successfully resume the leaf allocation, but the common lock that
364
-
* we already hold is not sufficient any more. We need to additionally acquire common context' common lock, since multiple spines from different ACs could have come into this state,
365
-
* and worse multiple spines originally allocated from different ACs may end up in a single common context region.
366
-
*/
361
+
if (!MM_GCExtensions::getExtensions(env)->isVirtualLargeObjectHeapEnabled) {
362
+
leafAllocateData->setSpine(spine);
363
+
/* add the leaf to the spine region's leaf list */
364
+
/* We own the lock on the spine region's context when this call is made so we can safely manipulate this list.
365
+
* An exceptional scenario: A thread allocates a spine (and possibly a few arraylets), but does not complete the allocation. A global GC (or a series of regular PGCs) occurs
366
+
* that age out regions to max age. The spine moves into a common context. Now, we successfully resume the leaf allocation, but the common lock that
367
+
* we already hold is not sufficient any more. We need to additionally acquire common context' common lock, since multiple spines from different ACs could have come into this state,
368
+
* and worse multiple spines originally allocated from different ACs may end up in a single common context region.
Copy file name to clipboardExpand all lines: runtime/gc_vlhgc/AllocationContextBalanced.hpp
+36Lines changed: 36 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -71,6 +71,10 @@ class MM_AllocationContextBalanced : public MM_AllocationContextTarok
71
71
UDATA *_freeProcessorNodes; /**< The array listing all the NUMA node numbers which account for the nodes with processors but no memory plus an empty slot for each context to use (element 0 is used by this context) - this is used when setting affinity */
72
72
UDATA _freeProcessorNodeCount; /**< The length, in elements, of the _freeProcessorNodes array (always at least 1 after startup) */
73
73
74
+
#if defined(J9VM_GC_SPARSE_HEAP_ALLOCATION)
75
+
MM_HeapRegionDescriptorVLHGC *_arrayReservedRegionList; /** for Off-heap case only, adding and removing via region->_allocateData.pushRegionToArrayReservedRegionList/popRegionFromArrayReservedRegionList */
0 commit comments