@@ -160,6 +160,7 @@ public void PushOrMergeInstruction(int lastLocal,in Instruction instruction, in
160160 if ( lastInstruction . A == instruction . B )
161161 {
162162 lastInstruction = Instruction . GetTable ( instruction . A , lastInstruction . B , instruction . C ) ;
163+ instructionPositions [ ^ 1 ] = position ;
163164 incrementStackPosition = false ;
164165 return ;
165166 }
@@ -186,18 +187,21 @@ public void PushOrMergeInstruction(int lastLocal,in Instruction instruction, in
186187 last2Instruction = Instruction . SetTable ( ( byte ) ( lastB ) , instruction . B , last2Instruction . B ) ;
187188 instructions . RemoveAtSwapback ( instructions . Length - 1 ) ;
188189 instructionPositions . RemoveAtSwapback ( instructionPositions . Length - 1 ) ;
190+ instructionPositions [ ^ 1 ] = position ;
189191 incrementStackPosition = false ;
190192 return ;
191193 }
192194 }
193195 lastInstruction = Instruction . SetTable ( ( byte ) ( lastB ) , instruction . B , instruction . C ) ;
196+ instructionPositions [ ^ 1 ] = position ;
194197 incrementStackPosition = false ;
195198 return ;
196199 }
197200
198201 if ( lastA == instruction . C )
199202 {
200203 lastInstruction = Instruction . SetTable ( instruction . A , instruction . B , lastB ) ;
204+ instructionPositions [ ^ 1 ] = position ;
201205 incrementStackPosition = false ;
202206 return ;
203207 }
@@ -215,6 +219,8 @@ public void PushOrMergeInstruction(int lastLocal,in Instruction instruction, in
215219 var c = last2OpCode == OpCode . LoadK ? last2Instruction . Bx + 256 : last2Instruction . B ;
216220 last2Instruction = lastInstruction ;
217221 lastInstruction = instruction with { C = ( ushort ) c } ;
222+ instructionPositions [ ^ 2 ] = instructionPositions [ ^ 1 ] ;
223+ instructionPositions [ ^ 1 ] = position ;
218224 incrementStackPosition = false ;
219225 return ;
220226 }
@@ -228,6 +234,7 @@ public void PushOrMergeInstruction(int lastLocal,in Instruction instruction, in
228234 if ( lastInstruction . OpCode == OpCode . Move && lastLocal != lastInstruction . A && lastInstruction . A == instruction . B )
229235 {
230236 lastInstruction = instruction with { B = lastInstruction . B } ; ;
237+ instructionPositions [ ^ 1 ] = position ;
231238 incrementStackPosition = false ;
232239 return ;
233240 }
@@ -236,6 +243,7 @@ public void PushOrMergeInstruction(int lastLocal,in Instruction instruction, in
236243 if ( lastInstruction . OpCode == OpCode . Move && instruction . B == 2 && lastInstruction . B < 256 )
237244 {
238245 lastInstruction = instruction with { A = ( byte ) lastInstruction . B } ;
246+ instructionPositions [ ^ 1 ] = position ;
239247 incrementStackPosition = false ;
240248 return ;
241249 }
0 commit comments