Optimize CSharp scripting runtime to use arena allocator per-assembly

This commit is contained in:
Wojtek Figat
2025-05-25 02:04:16 +02:00
parent f9cb4ddae2
commit 410ec0465c
15 changed files with 126 additions and 78 deletions

View File

@@ -71,6 +71,17 @@ MAssembly::~MAssembly()
Unload();
}
StringAnsiView MAssembly::AllocString(const char* str)
{
if (!str)
return StringAnsiView::Empty;
int32 len = StringUtils::Length(str);
char* mem = (char*)Memory.Allocate(len + 1);
Platform::MemoryCopy(mem, str, len);
mem[len] = 0;
return StringAnsiView(mem, len);
}
String MAssembly::ToString() const
{
return _name.ToString();
@@ -127,7 +138,11 @@ void MAssembly::Unload(bool isReloading)
_isLoading = false;
_isLoaded = false;
_hasCachedClasses = false;
#if USE_NETCORE
ArenaAllocator::ClearDelete(_classes);
#else
_classes.ClearDelete();
#endif
Unloaded(this);
}