@@ -227,28 +227,25 @@ export namespace Signal {
227
227
const node = this [ NODE ] ;
228
228
assertConsumerNode ( node ) ;
229
229
230
- let indicesToShift = [ ] ;
231
- for ( let i = 0 ; i < node . producerNode . length ; i ++ ) {
230
+ for ( let i = node . producerNode . length - 1 ; i >= 0 ; i -- ) {
232
231
if ( signals . includes ( node . producerNode [ i ] . wrapper ) ) {
233
232
producerRemoveLiveConsumerAtIndex ( node . producerNode [ i ] , node . producerIndexOfThis [ i ] ) ;
234
- indicesToShift . push ( i ) ;
235
- }
236
- }
237
- for ( const idx of indicesToShift ) {
238
- // Logic copied from producerRemoveLiveConsumerAtIndex, but reversed
239
- const lastIdx = node . producerNode ! . length - 1 ;
240
- node . producerNode ! [ idx ] = node . producerNode ! [ lastIdx ] ;
241
- node . producerIndexOfThis [ idx ] = node . producerIndexOfThis [ lastIdx ] ;
242
-
243
- node . producerNode . length -- ;
244
- node . producerIndexOfThis . length -- ;
245
- node . nextProducerIndex -- ;
246
-
247
- if ( idx < node . producerNode . length ) {
248
- const idxConsumer = node . producerIndexOfThis [ idx ] ;
249
- const producer = node . producerNode [ idx ] ;
250
- assertProducerNode ( producer ) ;
251
- producer . liveConsumerIndexOfThis [ idxConsumer ] = idx ;
233
+
234
+ // Logic copied from producerRemoveLiveConsumerAtIndex, but reversed
235
+ const lastIdx = node . producerNode ! . length - 1 ;
236
+ node . producerNode ! [ i ] = node . producerNode ! [ lastIdx ] ;
237
+ node . producerIndexOfThis [ i ] = node . producerIndexOfThis [ lastIdx ] ;
238
+
239
+ node . producerNode . length -- ;
240
+ node . producerIndexOfThis . length -- ;
241
+ node . nextProducerIndex -- ;
242
+
243
+ if ( i < node . producerNode . length ) {
244
+ const idxConsumer = node . producerIndexOfThis [ i ] ;
245
+ const producer = node . producerNode [ i ] ;
246
+ assertProducerNode ( producer ) ;
247
+ producer . liveConsumerIndexOfThis [ idxConsumer ] = i ;
248
+ }
252
249
}
253
250
}
254
251
}
0 commit comments