| 172 | } |
| 173 | |
| 174 | MDomain* MCore::CreateDomain(const StringAnsi& domainName) |
| 175 | { |
| 176 | #if USE_MONO_AOT |
| 177 | LOG(Fatal, "Scripts can run only in single domain mode with AOT mode enabled."); |
| 178 | return nullptr; |
| 179 | #endif |
| 180 | |
| 181 | for (int32 i = 0; i < MDomains.Count(); i++) |
| 182 | { |
| 183 | if (MDomains[i]->GetName() == domainName) |
| 184 | return MDomains[i]; |
| 185 | } |
| 186 | |
| 187 | auto domain = New<MDomain>(domainName); |
| 188 | const auto monoDomain = mono_domain_create_appdomain((char*)domainName.Get(), nullptr); |
| 189 | #if MONO_DEBUG_ENABLE |
| 190 | mono_debug_domain_create(monoDomain); |
| 191 | #endif |
| 192 | ASSERT(monoDomain); |
| 193 | domain->_monoDomain = monoDomain; |
| 194 | MDomains.Add(domain); |
| 195 | return domain; |
| 196 | } |
| 197 | |
| 198 | void MCore::UnloadDomain(const StringAnsi& domainName) |
| 199 | { |