@@ -6,8 +6,8 @@ use crate::{
66 oparg:: {
77 BinaryOperator , BuildSliceArgCount , CommonConstant , ComparisonOperator ,
88 ConvertValueOparg , IntrinsicFunction1 , IntrinsicFunction2 , Invert , Label ,
9- MakeFunctionFlags , NameIdx , OpArg , OpArgByte , OpArgType , RaiseKind , SpecialMethod ,
10- UnpackExArgs ,
9+ LoadSuperAttr , MakeFunctionFlags , NameIdx , OpArg , OpArgByte , OpArgType , RaiseKind ,
10+ SpecialMethod , UnpackExArgs ,
1111 } ,
1212 } ,
1313 marshal:: MarshalError ,
@@ -198,7 +198,7 @@ pub enum Instruction {
198198 method : Arg < SpecialMethod > ,
199199 } = 95 ,
200200 LoadSuperAttr {
201- arg : Arg < u32 > ,
201+ arg : Arg < LoadSuperAttr > ,
202202 } = 96 ,
203203 MakeCell ( Arg < NameIdx > ) = 97 ,
204204 MapAdd {
@@ -862,13 +862,15 @@ impl InstructionMetadata for Instruction {
862862 Self :: LoadName ( idx) => w ! ( LOAD_NAME , name = idx) ,
863863 Self :: LoadSpecial { method } => w ! ( LOAD_SPECIAL , method) ,
864864 Self :: LoadSuperAttr { arg : idx } => {
865- let encoded = idx. get ( arg) ;
866- let ( name_idx, load_method, has_class) = decode_load_super_attr_arg ( encoded) ;
867- let attr_name = name ( name_idx) ;
865+ let oparg = idx. get ( arg) ;
868866 write ! (
869867 f,
870868 "{:pad$}({}, {}, method={}, class={})" ,
871- "LOAD_SUPER_ATTR" , encoded, attr_name, load_method, has_class
869+ "LOAD_SUPER_ATTR" ,
870+ u32 :: from( oparg) ,
871+ name( oparg. name_idx( ) ) ,
872+ oparg. is_load_method( ) ,
873+ oparg. has_class( )
872874 )
873875 }
874876 Self :: MakeFunction => w ! ( MAKE_FUNCTION ) ,
@@ -1304,18 +1306,3 @@ pub const fn decode_load_attr_arg(oparg: u32) -> (u32, bool) {
13041306 let name_idx = oparg >> 1 ;
13051307 ( name_idx, is_method)
13061308}
1307-
1308- /// Encode LOAD_SUPER_ATTR oparg: bit 0 = load_method, bit 1 = has_class, bits 2+ = name index.
1309- #[ inline]
1310- pub const fn encode_load_super_attr_arg ( name_idx : u32 , load_method : bool , has_class : bool ) -> u32 {
1311- ( name_idx << 2 ) | ( ( has_class as u32 ) << 1 ) | ( load_method as u32 )
1312- }
1313-
1314- /// Decode LOAD_SUPER_ATTR oparg: returns (name_idx, load_method, has_class).
1315- #[ inline]
1316- pub const fn decode_load_super_attr_arg ( oparg : u32 ) -> ( u32 , bool , bool ) {
1317- let load_method = ( oparg & 1 ) == 1 ;
1318- let has_class = ( oparg & 2 ) == 2 ;
1319- let name_idx = oparg >> 2 ;
1320- ( name_idx, load_method, has_class)
1321- }
0 commit comments