@@ -44,22 +44,21 @@ export function __realloc(ptr: usize, size: usize): usize {
4444 var block = changetype < BLOCK > ( ptr - BLOCK_OVERHEAD ) ;
4545 var actualSize = block . mmInfo ;
4646 if ( DEBUG ) assert ( block . gcInfo == - 1 ) ;
47+ var isLast = ptr + actualSize == offset ;
48+ var alignedSize = ( size + AL_MASK ) & ~ AL_MASK ;
4749 if ( size > actualSize ) {
48- if ( ptr + actualSize == offset ) { // last block: grow
50+ if ( isLast ) { // last block: grow
4951 if ( size > BLOCK_MAXSIZE ) unreachable ( ) ;
50- actualSize = ( size + AL_MASK ) & ~ AL_MASK ;
51- maybeGrowMemory ( ptr + actualSize ) ;
52- block . mmInfo = actualSize ;
52+ maybeGrowMemory ( ptr + alignedSize ) ;
53+ block . mmInfo = alignedSize ;
5354 } else { // copy to new block at least double the size
54- actualSize = max < usize > ( ( size + AL_MASK ) & ~ AL_MASK , actualSize << 1 ) ;
55- let newPtr = __alloc ( actualSize , block . rtId ) ;
55+ let newPtr = __alloc ( max < usize > ( alignedSize , actualSize << 1 ) , block . rtId ) ;
5656 memory . copy ( newPtr , ptr , block . rtSize ) ;
5757 block = changetype < BLOCK > ( ( ptr = newPtr ) - BLOCK_OVERHEAD ) ;
5858 }
59- } else if ( ptr + actualSize == offset ) { // last block: shrink
60- actualSize = ( size + AL_MASK ) & ~ AL_MASK ;
61- offset = ptr + actualSize ;
62- block . mmInfo = actualSize ;
59+ } else if ( isLast ) { // last block: shrink
60+ offset = ptr + alignedSize ;
61+ block . mmInfo = alignedSize ;
6362 }
6463 block . rtSize = size ;
6564 return ptr ;
@@ -78,7 +77,7 @@ export function __free(ptr: usize): void {
7877
7978// @ts -ignore: decorator
8079@unsafe @global
81- function __reset ( ) : void { // special
80+ export function __reset ( ) : void { // special
8281 offset = startOffset ;
8382}
8483
@@ -95,7 +94,7 @@ export function __release(ref: usize): void {
9594
9695// @ts -ignore: decorator
9796@global @unsafe
98- export function __visit ( ref : usize , cookie : u32 ) : void {
97+ function __visit ( ref : usize , cookie : u32 ) : void {
9998}
10099
101100// @ts -ignore: decorator
0 commit comments