File tree Expand file tree Collapse file tree 2 files changed +22
-1
lines changed Expand file tree Collapse file tree 2 files changed +22
-1
lines changed Original file line number Diff line number Diff line change @@ -592,7 +592,7 @@ def _unpack_opargs(code):
592
592
caches = _inline_cache_entries [deop ]
593
593
if deop >= HAVE_ARGUMENT :
594
594
arg = code [i + 1 ] | extended_arg
595
- extended_arg = (arg << 8 ) if EXTENDED_ARG in ( op , deop ) else 0
595
+ extended_arg = (arg << 8 ) if deop == EXTENDED_ARG else 0
596
596
# The oparg is stored as a signed integer
597
597
# If the value exceeds its upper limit, it will overflow and wrap
598
598
# to a negative integer
Original file line number Diff line number Diff line change @@ -620,6 +620,22 @@ def loop_test():
620
620
loop_test .__code__ .co_firstlineno + 2 ,
621
621
loop_test .__code__ .co_firstlineno + 1 ,)
622
622
623
+ def extend_arg_quick ():
624
+ * _ , _ = ...
625
+
626
+ dis_extended_arg_quick_code = """\
627
+ %3d 0 RESUME 0
628
+
629
+ %3d 2 LOAD_CONST 1 (Ellipsis)
630
+ 4 EXTENDED_ARG_QUICK 1
631
+ 6 UNPACK_EX 256
632
+ 8 STORE_FAST 0 (_)
633
+ 10 STORE_FAST 0 (_)
634
+ 12 LOAD_CONST 0 (None)
635
+ 14 RETURN_VALUE
636
+ """ % (extend_arg_quick .__code__ .co_firstlineno ,
637
+ extend_arg_quick .__code__ .co_firstlineno + 1 ,)
638
+
623
639
QUICKENING_WARMUP_DELAY = 8
624
640
625
641
class DisTestBase (unittest .TestCase ):
@@ -997,6 +1013,11 @@ def test_loop_quicken(self):
997
1013
got = self .get_disassembly (loop_test , adaptive = True )
998
1014
self .do_disassembly_compare (got , dis_loop_test_quickened_code )
999
1015
1016
+ @cpython_only
1017
+ def test_extenaded_arg_quick (self ):
1018
+ got = self .get_disassembly (extend_arg_quick )
1019
+ self .do_disassembly_compare (got , dis_extended_arg_quick_code , True )
1020
+
1000
1021
def get_cached_values (self , quickened , adaptive ):
1001
1022
def f ():
1002
1023
l = []
You can’t perform that action at this time.
0 commit comments