@@ -116,6 +116,7 @@ import {
116
116
117
117
import {
118
118
Module ,
119
+ ExpressionRef ,
119
120
FunctionRef ,
120
121
MemorySegment ,
121
122
getFunctionName
@@ -3749,8 +3750,8 @@ export class Function extends TypedElement {
3749
3750
contextualTypeArguments : Map < string , Type > | null ;
3750
3751
/** Default control flow. */
3751
3752
flow ! : Flow ;
3752
- /** Remembered debug locations. */
3753
- debugLocations : Range [ ] = [ ] ;
3753
+ /** Ordered debug locations by Binaryen expression reference . */
3754
+ debugLocations : Map < ExpressionRef , Range > = new Map ( ) ;
3754
3755
/** Function reference, if compiled. */
3755
3756
ref : FunctionRef = 0 ;
3756
3757
/** Varargs stub for calling with omitted arguments. */
@@ -3918,12 +3919,13 @@ export class Function extends TypedElement {
3918
3919
addDebugInfo ( module : Module , ref : FunctionRef ) : void {
3919
3920
if ( this . program . options . sourceMap ) {
3920
3921
let debugLocations = this . debugLocations ;
3921
- for ( let i = 0 , k = debugLocations . length ; i < k ; ++ i ) {
3922
- let range = debugLocations [ i ] ;
3922
+ for ( let _keys = Map_keys ( debugLocations ) , i = 0 , k = _keys . length ; i < k ; ++ i ) {
3923
+ let expressionRef = _keys [ i ] ;
3924
+ let range = assert ( debugLocations . get ( expressionRef ) ) ;
3923
3925
let source = range . source ;
3924
3926
module . setDebugLocation (
3925
3927
ref ,
3926
- range . debugInfoRef ,
3928
+ expressionRef ,
3927
3929
source . debugInfoIndex ,
3928
3930
source . lineAt ( range . start ) ,
3929
3931
source . columnAt ( ) - 1 // source maps are 0-based
0 commit comments