@@ -110,9 +110,10 @@ let prevStack: LuaStackFrame[] = [];
110110let prevCat : string = "" ;
111111const perfettoStack : number [ ] = [ ] ;
112112
113+ let now = 0 ;
113114for ( const stack of stacks ) {
114- const thisStackFrames = stack . frames ;
115- thisStackFrames . reverse ( ) ;
115+ debugger ;
116+ const thisStackFrames = stack . frames . toReversed ( ) . slice ( frameSkip ) ;
116117
117118 let overlappingI = 0 ;
118119 while ( overlappingI < thisStackFrames . length && overlappingI < prevStack . length ) {
@@ -123,20 +124,31 @@ for (const stack of stacks) {
123124 overlappingI ++ ;
124125 }
125126 // pop off the stack
126- for ( let i = prevStack . length - 1 ; i >= Math . max ( frameSkip , overlappingI ) ; -- i ) {
127+ for ( let i = prevStack . length - 1 ; i >= overlappingI ; -- i ) {
127128 const prevFrame = prevStack [ i ] ;
129+ let newNow = stack . time * 1000000 ;
130+ if ( newNow <= now ) {
131+ newNow = now + 1 ;
132+ }
133+ now = newNow ;
134+
128135 traceEvents . push ( {
129136 ph : "E" ,
130137 name : prevFrame . location ,
131138 sf : String ( perfettoStack . pop ( ) ) ,
132- ts : stack . time * 1000000 ,
139+ ts : now ,
133140 cat : prevCat !== "" ? prevCat : undefined
134141 } ) ;
135142 }
136143
137144 // push on the stack
138- for ( let i = Math . max ( frameSkip , overlappingI ) ; i < thisStackFrames . length ; ++ i ) {
145+ for ( let i = overlappingI ; i < thisStackFrames . length ; ++ i ) {
139146 const nextFrame = thisStackFrames [ i ] ;
147+ let newNow = stack . time * 1000000 ;
148+ if ( newNow <= now ) {
149+ newNow = now + 1 ;
150+ }
151+ now = newNow ;
140152 stackFrames [ stackNo ] = {
141153 name : nextFrame . location ,
142154 parent : perfettoStack . length ? String ( perfettoStack [ perfettoStack . length - 1 ] ) : undefined
@@ -145,7 +157,7 @@ for (const stack of stacks) {
145157 ph : "B" ,
146158 name : nextFrame . location ,
147159 sf : String ( stackNo ) ,
148- ts : stack . time * 1000000 ,
160+ ts : newNow ,
149161 cat : stack . category !== "" ? stack . category : undefined
150162 } ) ;
151163 perfettoStack . push ( stackNo ++ ) ;
0 commit comments