MCPcopy Create free account
hub / github.com/WheretIB/nullc / AllocObject

Method AllocObject

NULLC/translation/runtime.cpp:1271–1354  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1269}
1270
1271void* NULLC::AllocObject(int size, unsigned typeID)
1272{
1273 if(size < 0)
1274 {
1275 nullcThrowError("Requested memory size is less than zero.");
1276 return NULL;
1277 }
1278 void *data = NULL;
1279 size += 4;
1280
1281 if((unsigned int)(usedMemory + size) > globalMemoryLimit)
1282 {
1283 CollectMemory();
1284 if((unsigned int)(usedMemory + size) > globalMemoryLimit)
1285 {
1286 nullcThrowError("Reached global memory maximum");
1287 return NULL;
1288 }
1289 }else if((unsigned int)(usedMemory + size) > collectableMinimum){
1290 CollectMemory();
1291 }
1292 unsigned int realSize = size;
1293 if(size <= 64)
1294 {
1295 if(size <= 16)
1296 {
1297 if(size <= 8)
1298 {
1299 data = pool8.Alloc();
1300 realSize = 8;
1301 }else{
1302 data = pool16.Alloc();
1303 realSize = 16;
1304 }
1305 }else{
1306 if(size <= 32)
1307 {
1308 data = pool32.Alloc();
1309 realSize = 32;
1310 }else{
1311 data = pool64.Alloc();
1312 realSize = 64;
1313 }
1314 }
1315 }else{
1316 if(size <= 256)
1317 {
1318 if(size <= 128)
1319 {
1320 data = pool128.Alloc();
1321 realSize = 128;
1322 }else{
1323 data = pool256.Alloc();
1324 realSize = 256;
1325 }
1326 }else{
1327 if(size <= 512)
1328 {

Callers

nothing calls this directly

Calls 3

nullcThrowErrorFunction · 0.70
AllocMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected