Skip to content

Commit

Permalink
Use baseObj in CardMarking for OffHeap on X
Browse files Browse the repository at this point in the history
When running with Balanced GC and OffHeap enabled, if the
destOwningObject is a dataAddrPointer load, use the baseObj
as the owningObjectReg.

Signed-off-by: Abdulrahman Alattas <[email protected]>
  • Loading branch information
rmnattas committed Sep 30, 2024
1 parent 30a47ed commit 5b929a9
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion runtime/compiler/x/codegen/J9TreeEvaluator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10599,7 +10599,13 @@ void J9::X86::TreeEvaluator::VMwrtbarWithoutStoreEvaluator(
TR::Register *owningObjectReg;
TR::Register *tempReg = NULL;

owningObjectReg = cg->evaluate(destOwningObject);
#if defined(J9VM_GC_ENABLE_SPARSE_HEAP_ALLOCATION)
bool stopUsingCopyBaseReg;
if (gcMode == gc_modron_wrtbar_cardmark_incremental && TR::Compiler->om.isOffHeapAllocationEnabled() && destOwningObject->isDataAddrPointer())
owningObjectReg = cg->evaluate(destOwningObject->getFirstChild());
else
#endif /* defined(J9VM_GC_ENABLE_SPARSE_HEAP_ALLOCATION) */
owningObjectReg = cg->evaluate(destOwningObject);

if (doInternalControlFlow)
{
Expand Down

0 comments on commit 5b929a9

Please sign in to comment.