static MM_GCWriteBarrierType getWriteBarrierType(MM_EnvironmentBase* env) { MM_GCWriteBarrierType writeBarrierType = gc_modron_wrtbar_none; MM_GCExtensionsBase* extensions = env->getExtensions(); if (extensions->isScavengerEnabled()) { if (extensions->isConcurrentMarkEnabled()) { writeBarrierType = gc_modron_wrtbar_cardmark_and_oldcheck; } else { writeBarrierType = gc_modron_wrtbar_oldcheck; } } else if (extensions->isConcurrentMarkEnabled()) { writeBarrierType = gc_modron_wrtbar_cardmark; } return writeBarrierType; }
bool MM_ConfigurationStandard::initialize(MM_EnvironmentBase* env) { MM_GCExtensionsBase* extensions = env->getExtensions(); bool result = MM_Configuration::initialize(env); if (result) { extensions->payAllocationTax = extensions->isConcurrentMarkEnabled() || extensions->isConcurrentSweepEnabled(); extensions->setStandardGC(true); } return result; }