@@ -118,7 +118,7 @@ var emscriptenMemoryProfiler = {
118118 return '#' + toHex ( r ) + toHex ( g ) + toHex ( b ) ;
119119 } ,
120120
121- onSbrkGrow ( oldLimit , newLimit ) {
121+ onSbrkGrow ( oldLimit , newLimit , loc ) {
122122 var self = emscriptenMemoryProfiler ;
123123 // On first sbrk(), account for the initial size.
124124 if ( self . sbrkSources . length == 0 ) {
@@ -130,8 +130,11 @@ var emscriptenMemoryProfiler = {
130130 } ) ;
131131 }
132132 if ( newLimit <= oldLimit ) return ;
133+ if ( loc == undefined ) {
134+ loc = new Error ( ) . stack . toString ( ) ;
135+ }
133136 self . sbrkSources . push ( {
134- stack : self . filterCallstackForHeapResize ( new Error ( ) . stack . toString ( ) ) ,
137+ stack : self . filterCallstackForHeapResize ( loc ) ,
135138 begin : oldLimit ,
136139 end : newLimit ,
137140 color : self . hsvToRgb ( self . sbrkSources . length * 0.618033988749895 % 1 , 0.5 , 0.95 )
@@ -166,7 +169,7 @@ var emscriptenMemoryProfiler = {
166169 }
167170 } ,
168171
169- onMalloc ( ptr , size ) {
172+ onMalloc ( ptr , size , loc ) {
170173 if ( ! ptr ) return ;
171174 if ( emscriptenMemoryProfiler . sizeOfAllocatedPtr [ ptr ] )
172175 {
@@ -189,7 +192,9 @@ var emscriptenMemoryProfiler = {
189192 // Also track if this was a _malloc performed at preRun time.
190193 if ( ! self . pagePreRunIsFinished ) self . sizeOfPreRunAllocatedPtr [ ptr ] = size ;
191194
192- var loc = new Error ( ) . stack . toString ( ) ;
195+ if ( loc == undefined ) {
196+ loc = new Error ( ) . stack . toString ( ) ;
197+ }
193198 self . allocationsAtLoc [ loc ] ||= [ 0 , 0 , self . filterCallstackForMalloc ( loc ) ] ;
194199 self . allocationsAtLoc [ loc ] [ 0 ] += 1 ;
195200 self . allocationsAtLoc [ loc ] [ 1 ] += size ;
@@ -229,9 +234,9 @@ var emscriptenMemoryProfiler = {
229234 ++ self . totalTimesFreeCalled ;
230235 } ,
231236
232- onRealloc ( oldAddress , newAddress , size ) {
237+ onRealloc ( oldAddress , newAddress , size , loc ) {
233238 emscriptenMemoryProfiler . onFree ( oldAddress ) ;
234- emscriptenMemoryProfiler . onMalloc ( newAddress , size ) ;
239+ emscriptenMemoryProfiler . onMalloc ( newAddress , size , loc ) ;
235240 } ,
236241
237242 onPreloadComplete ( ) {
@@ -241,9 +246,10 @@ var emscriptenMemoryProfiler = {
241246 // Installs startup hook and periodic UI update timer.
242247 initialize ( ) {
243248 // Inject the memoryprofiler hooks.
244- Module [ 'onMalloc' ] = ( ptr , size ) => emscriptenMemoryProfiler . onMalloc ( ptr , size ) ;
245- Module [ 'onRealloc' ] = ( oldAddress , newAddress , size ) => emscriptenMemoryProfiler . onRealloc ( oldAddress , newAddress , size ) ; ;
249+ Module [ 'onMalloc' ] = ( ptr , size , loc ) => emscriptenMemoryProfiler . onMalloc ( ptr , size , loc ) ;
250+ Module [ 'onRealloc' ] = ( oldAddress , newAddress , size , loc ) => emscriptenMemoryProfiler . onRealloc ( oldAddress , newAddress , size , loc ) ; ;
246251 Module [ 'onFree' ] = ( ptr ) => emscriptenMemoryProfiler . onFree ( ptr ) ;
252+ Module [ 'onSbrkGrow' ] = ( old_brk , new_brk , loc ) => emscriptenMemoryProfiler . onSbrkGrow ( old_brk , new_brk , loc ) ;
247253 emscriptenMemoryProfiler . recordStackWatermark ( ) ;
248254
249255 // Add a tracking mechanism to detect when VFS loading is complete.
0 commit comments