MM_EnvironmentBase * MM_EnvironmentBase::newInstance(MM_GCExtensionsBase *extensions, OMR_VMThread *omrVMThread) { void *envPtr; MM_EnvironmentBase *env = NULL; envPtr = (void *)pool_newElement(extensions->environments); if (NULL != envPtr) { env = new(envPtr) MM_EnvironmentBase(omrVMThread); if (!env->initialize(extensions)) { env->kill(); env = NULL; } } return env; }