@@ -1092,27 +1092,19 @@ where
10921092 }
10931093
10941094 fn do_binary_maths( & self , context: & mut MethodContext , op: OpInFlight ) -> Result <( ) , AmlError > {
1095- let [ Argument :: Object ( left) , Argument :: Object ( right) , Argument :: Object ( target) ] = & op. arguments [ 0 ..2 ]
1096- else {
1097- Err ( AmlError :: InvalidOperationOnObject ) ?
1098- } ;
1099- let target2 = if op. op == Opcode :: Divide {
1100- let Argument :: Object ( target2) = & op. arguments [ 3 ] else { panic ! ( ) } ;
1101- Some ( target2)
1102- } else {
1103- None
1104- } ;
1095+ let [ Argument :: Object ( left) , Argument :: Object ( right) , target] = & op. arguments [ 0 ..3 ] else { panic ! ( ) } ;
1096+ let target2 = if op. op == Opcode :: Divide { Some ( & op. arguments [ 3 ] ) } else { None } ;
11051097
11061098 let left = left. clone ( ) . unwrap_transparent_reference ( ) . as_integer ( ) ?;
11071099 let right = right. clone ( ) . unwrap_transparent_reference ( ) . as_integer ( ) ?;
11081100
1109- let value = match op. op {
1101+ let result = match op. op {
11101102 Opcode :: Add => left. wrapping_add ( right) ,
11111103 Opcode :: Subtract => left. wrapping_sub ( right) ,
11121104 Opcode :: Multiply => left. wrapping_mul ( right) ,
11131105 Opcode :: Divide => {
11141106 if let Some ( remainder) = target2 {
1115- * remainder . gain_mut ( ) = Object :: Integer ( left. wrapping_rem ( right) ) ;
1107+ self . do_store ( context , remainder , Arc :: new ( Object :: Integer ( left. wrapping_rem ( right) ) ) ) ? ;
11161108 }
11171109 left. wrapping_div_euclid ( right)
11181110 }
@@ -1127,8 +1119,9 @@ where
11271119 _ => panic ! ( ) ,
11281120 } ;
11291121
1130- * target. gain_mut ( ) = Object :: Integer ( value) ;
1131- context. contribute_arg ( Argument :: Object ( Arc :: new ( Object :: Integer ( value) ) ) ) ;
1122+ let result = Arc :: new ( Object :: Integer ( result) ) ;
1123+ self . do_store ( context, target, result. clone ( ) ) ?;
1124+ context. contribute_arg ( Argument :: Object ( result) ) ;
11321125 Ok ( ( ) )
11331126 }
11341127
0 commit comments