Beispiel #1
0
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;
}
bool
MM_ConfigurationStandard::initialize(MM_EnvironmentBase* env)
{
	MM_GCExtensionsBase* extensions = env->getExtensions();
	bool result = MM_Configuration::initialize(env);
	if (result) {
		extensions->payAllocationTax = false;
#if defined(OMR_GC_MODRON_CONCURRENT_MARK)
		extensions->payAllocationTax = extensions->payAllocationTax || extensions->concurrentMark;
#endif /* OMR_GC_MODRON_CONCURRENT_MARK */
#if defined(OMR_GC_CONCURRENT_SWEEP)
		extensions->payAllocationTax = extensions->payAllocationTax || extensions->concurrentSweep;
#endif /* OMR_GC_CONCURRENT_SWEEP */
		extensions->setStandardGC(true);
	}

	return result;
}
bool
MM_ConfigurationSegregated::initialize(MM_EnvironmentBase *env)
{

	bool success = false;

	/* OMRTODO investigate why these must be equal or it segfaults. */
	MM_GCExtensionsBase *extensions = env->getExtensions();
	extensions->splitAvailableListSplitAmount = extensions->gcThreadCount;

	if (MM_Configuration::initialize(env)) {
		env->getOmrVM()->_sizeClasses = _delegate.getSegregatedSizeClasses(env);
		if (NULL != env->getOmrVM()->_sizeClasses) {
			extensions->setSegregatedHeap(true);
			extensions->setStandardGC(true);
			extensions->arrayletsPerRegion = extensions->regionSize / env->getOmrVM()->_arrayletLeafSize;
			success = true;
		}
	}
	return success;
}