@@ -442,7 +442,12 @@ pub enum Instruction {
442
442
LoadGlobal ( Arg < NameIdx > ) ,
443
443
LoadDeref ( Arg < NameIdx > ) ,
444
444
LoadClassDeref ( Arg < NameIdx > ) ,
445
+ LoadFromDictOrDeref ( Arg < NameIdx > ) ,
445
446
StoreFast ( Arg < NameIdx > ) ,
447
+ StoreFastLoadFast {
448
+ store_idx : Arg < NameIdx > ,
449
+ load_idx : Arg < NameIdx > ,
450
+ } ,
446
451
StoreLocal ( Arg < NameIdx > ) ,
447
452
StoreGlobal ( Arg < NameIdx > ) ,
448
453
StoreDeref ( Arg < NameIdx > ) ,
@@ -1258,8 +1263,9 @@ impl Instruction {
1258
1263
ImportName { .. } | ImportNameless => -1 ,
1259
1264
ImportStar => -1 ,
1260
1265
ImportFrom { .. } => 1 ,
1261
- LoadFast ( _) | LoadNameAny ( _) | LoadGlobal ( _) | LoadDeref ( _) | LoadClassDeref ( _) => 1 ,
1266
+ LoadFast ( _) | LoadNameAny ( _) | LoadGlobal ( _) | LoadDeref ( _) | LoadClassDeref ( _) | LoadFromDictOrDeref ( _ ) => 1 ,
1262
1267
StoreFast ( _) | StoreLocal ( _) | StoreGlobal ( _) | StoreDeref ( _) => -1 ,
1268
+ StoreFastLoadFast { .. } => 0 , // Stores then loads, net effect 0
1263
1269
DeleteFast ( _) | DeleteLocal ( _) | DeleteGlobal ( _) | DeleteDeref ( _) => 0 ,
1264
1270
LoadClosure ( _) => 1 ,
1265
1271
Subscript => -1 ,
@@ -1462,7 +1468,12 @@ impl Instruction {
1462
1468
LoadGlobal ( idx) => w ! ( LoadGlobal , name = idx) ,
1463
1469
LoadDeref ( idx) => w ! ( LoadDeref , cell_name = idx) ,
1464
1470
LoadClassDeref ( idx) => w ! ( LoadClassDeref , cell_name = idx) ,
1471
+ LoadFromDictOrDeref ( idx) => w ! ( LoadFromDictOrDeref , name = idx) ,
1465
1472
StoreFast ( idx) => w ! ( StoreFast , varname = idx) ,
1473
+ StoreFastLoadFast { store_idx, load_idx } => {
1474
+ write ! ( f, "StoreFastLoadFast(" ) ?;
1475
+ write ! ( f, "store={}, load={})" , store_idx. get( arg) , load_idx. get( arg) )
1476
+ }
1466
1477
StoreLocal ( idx) => w ! ( StoreLocal , name = idx) ,
1467
1478
StoreGlobal ( idx) => w ! ( StoreGlobal , name = idx) ,
1468
1479
StoreDeref ( idx) => w ! ( StoreDeref , cell_name = idx) ,
0 commit comments