@@ -344,22 +344,6 @@ void* ArenaBlock::allocate(Reference<ArenaBlock>& self, int bytes, IsSecureMem i
344344 return result;
345345}
346346
347- force_inline ArenaBlock* newBigArenaBlock (int size) {
348- if (keepalive_allocator::isActive ()) [[unlikely]] {
349- return (ArenaBlock*)keepalive_allocator::allocate (size);
350- } else {
351- return (ArenaBlock*)new uint8_t [size];
352- }
353- }
354-
355- force_inline void deleteBigArenaBlock (ArenaBlock* block) {
356- if (keepalive_allocator::isActive ()) [[unlikely]] {
357- return keepalive_allocator::invalidate (block);
358- } else {
359- return delete[] reinterpret_cast <uint8_t *>(block);
360- }
361- }
362-
363347// Return an appropriately-sized ArenaBlock to store the given data
364348ArenaBlock* ArenaBlock::create (int dataSize, Reference<ArenaBlock>& next) {
365349 ArenaBlock* b;
@@ -402,23 +386,23 @@ ArenaBlock* ArenaBlock::create(int dataSize, Reference<ArenaBlock>& next) {
402386 b->bigSize = 256 ;
403387 INSTRUMENT_ALLOCATE (" Arena256" );
404388 } else if (reqSize <= 512 ) {
405- b = newBigArenaBlock (512 );
389+ b = (ArenaBlock*) allocateAndMaybeKeepalive (512 );
406390 b->bigSize = 512 ;
407391 INSTRUMENT_ALLOCATE (" Arena512" );
408392 } else if (reqSize <= 1024 ) {
409- b = newBigArenaBlock (1024 );
393+ b = (ArenaBlock*) allocateAndMaybeKeepalive (1024 );
410394 b->bigSize = 1024 ;
411395 INSTRUMENT_ALLOCATE (" Arena1024" );
412396 } else if (reqSize <= 2048 ) {
413- b = newBigArenaBlock (2048 );
397+ b = (ArenaBlock*) allocateAndMaybeKeepalive (2048 );
414398 b->bigSize = 2048 ;
415399 INSTRUMENT_ALLOCATE (" Arena2048" );
416400 } else if (reqSize <= 4096 ) {
417- b = newBigArenaBlock (4096 );
401+ b = (ArenaBlock*) allocateAndMaybeKeepalive (4096 );
418402 b->bigSize = 4096 ;
419403 INSTRUMENT_ALLOCATE (" Arena4096" );
420404 } else {
421- b = newBigArenaBlock (8192 );
405+ b = (ArenaBlock*) allocateAndMaybeKeepalive (8192 );
422406 b->bigSize = 8192 ;
423407 INSTRUMENT_ALLOCATE (" Arena8192" );
424408 }
@@ -430,7 +414,7 @@ ArenaBlock* ArenaBlock::create(int dataSize, Reference<ArenaBlock>& next) {
430414#ifdef ALLOC_INSTRUMENTATION
431415 allocInstr[" ArenaHugeKB" ].alloc ((reqSize + 1023 ) >> 10 );
432416#endif
433- b = newBigArenaBlock (reqSize);
417+ b = (ArenaBlock*) allocateAndMaybeKeepalive (reqSize);
434418 b->tinySize = b->tinyUsed = NOT_TINY;
435419 b->bigSize = reqSize;
436420 b->totalSizeEstimate = b->bigSize ;
@@ -522,26 +506,26 @@ void ArenaBlock::destroyLeaf() {
522506 FastAllocator<256 >::release (this );
523507 INSTRUMENT_RELEASE (" Arena256" );
524508 } else if (bigSize <= 512 ) {
525- deleteBigArenaBlock (this );
509+ freeOrMaybeKeepalive (this );
526510 INSTRUMENT_RELEASE (" Arena512" );
527511 } else if (bigSize <= 1024 ) {
528- deleteBigArenaBlock (this );
512+ freeOrMaybeKeepalive (this );
529513 INSTRUMENT_RELEASE (" Arena1024" );
530514 } else if (bigSize <= 2048 ) {
531- deleteBigArenaBlock (this );
515+ freeOrMaybeKeepalive (this );
532516 INSTRUMENT_RELEASE (" Arena2048" );
533517 } else if (bigSize <= 4096 ) {
534- deleteBigArenaBlock (this );
518+ freeOrMaybeKeepalive (this );
535519 INSTRUMENT_RELEASE (" Arena4096" );
536520 } else if (bigSize <= 8192 ) {
537- deleteBigArenaBlock (this );
521+ freeOrMaybeKeepalive (this );
538522 INSTRUMENT_RELEASE (" Arena8192" );
539523 } else {
540524#ifdef ALLOC_INSTRUMENTATION
541525 allocInstr[" ArenaHugeKB" ].dealloc ((bigSize + 1023 ) >> 10 );
542526#endif
543527 g_hugeArenaMemory.fetch_sub (bigSize);
544- deleteBigArenaBlock (this );
528+ freeOrMaybeKeepalive (this );
545529 }
546530 }
547531}
0 commit comments