Example #1
0
    void DomainObject::initNewDomain(DomainObject *parentDomain)
	{
		Shell *core = (Shell*) this->core();

		Domain* baseDomain;
		if (parentDomain) {
			baseDomain = parentDomain->domainEnv->domain();
		} else {
			baseDomain = core->builtinDomain;
		}

        Domain* domain = new (core->GetGC()) Domain(core, baseDomain);

		if (parentDomain) {
			domainToplevel = parentDomain->domainToplevel;
		} else {
			domainToplevel = core->initShellBuiltins();
		}

        domainEnv = new (core->GetGC()) DomainEnv(core, domain, domainToplevel->domainEnv());
	}