Skip to content

Commit 915ff5e

Browse files
committed
Remove pre 3.5 BUILD_MAP customiztion...
it is not needed here.
1 parent 81922bd commit 915ff5e

File tree

1 file changed

+12
-113
lines changed

1 file changed

+12
-113
lines changed

uncompyle6/scanners/scanner3.py

Lines changed: 12 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,7 @@ def bound_collection_from_inst(
298298
)
299299
return new_tokens
300300

301+
# Move to scanner35?
301302
def bound_map_from_inst_35(
302303
self, insts: list, next_tokens: list, t: Token, i: int
303304
) -> Optional[list]:
@@ -389,92 +390,6 @@ def bound_map_from_inst_35(
389390
)
390391
return new_tokens
391392

392-
def bound_map_from_inst_pre35(
393-
self, insts: list, next_tokens: list, t: Token, i: int
394-
):
395-
"""
396-
Try to a sequence of instruction that ends with a BUILD_MAP into
397-
a sequence that can be parsed much faster, but inserting the
398-
token boundary at the beginning of the sequence.
399-
"""
400-
count = t.attr
401-
assert isinstance(count, int)
402-
403-
# For small lists don't bother
404-
if count < 10:
405-
return None
406-
407-
# Older Python BUILD_MAP argument's count is a
408-
# key and value pair and STORE_MAP. So it is multiplied by three.
409-
collection_end = i + 1 + count * 3
410-
411-
for j in range(i + 1, collection_end, 3):
412-
if insts[j].opname not in ("LOAD_CONST",):
413-
return None
414-
if insts[j + 1].opname not in ("LOAD_CONST",):
415-
return None
416-
if insts[j + 2].opname not in ("STORE_MAP",):
417-
return None
418-
419-
collection_enum = CONST_COLLECTIONS.index("CONST_MAP")
420-
421-
new_tokens = next_tokens[:i]
422-
start_offset = insts[i].offset
423-
new_tokens.append(
424-
Token(
425-
opname="COLLECTION_START",
426-
attr=collection_enum,
427-
pattr="CONST_MAP",
428-
offset=f"{start_offset}_0",
429-
linestart=insts[i].starts_line,
430-
has_arg=True,
431-
has_extended_arg=False,
432-
opc=self.opc,
433-
optype="pseudo",
434-
)
435-
)
436-
for j in range(i + 1, collection_end, 3):
437-
new_tokens.append(
438-
Token(
439-
opname="ADD_KEY",
440-
attr=insts[j + 1].argval,
441-
pattr=insts[j + 1].argrepr,
442-
offset=insts[j + 1].offset,
443-
linestart=insts[j + 1].starts_line,
444-
has_arg=True,
445-
has_extended_arg=False,
446-
opc=self.opc,
447-
optype="pseudo",
448-
)
449-
)
450-
new_tokens.append(
451-
Token(
452-
opname="ADD_VALUE",
453-
attr=insts[j].argval,
454-
pattr=insts[j].argrepr,
455-
offset=insts[j].offset,
456-
linestart=insts[j].starts_line,
457-
has_arg=True,
458-
has_extended_arg=False,
459-
opc=self.opc,
460-
optype="pseudo",
461-
)
462-
)
463-
new_tokens.append(
464-
Token(
465-
opname="BUILD_DICT_OLDER",
466-
attr=t.attr,
467-
pattr=t.pattr,
468-
offset=t.offset,
469-
linestart=t.linestart,
470-
has_arg=t.has_arg,
471-
has_extended_arg=False,
472-
opc=t.opc,
473-
optype="pseudo",
474-
)
475-
)
476-
return new_tokens
477-
478393
def ingest(
479394
self, co, classname=None, code_objects={}, show_asm=None
480395
) -> Tuple[list, dict]:
@@ -578,6 +493,7 @@ def ingest(
578493

579494
last_op_was_break = False
580495
new_tokens = []
496+
581497
skip_end_offset = None
582498

583499
for i, inst in enumerate(self.insts):
@@ -623,35 +539,18 @@ def ingest(
623539
continue
624540

625541
elif opname in ("BUILD_MAP",):
626-
bound_map_from_insts_fn = (
627-
self.bound_map_from_inst_35
628-
if self.version >= (3, 5)
629-
else self.bound_map_from_inst_pre35
630-
)
631-
try_tokens = bound_map_from_insts_fn(
632-
self.insts,
633-
new_tokens,
634-
t,
635-
i,
636-
)
637-
if try_tokens is not None:
638-
if self.version < (3, 5):
639-
assert try_tokens[-1] == "BUILD_DICT_OLDER"
640-
prev_offset = inst.offset
641-
for j in range(i, len(self.insts)):
642-
if self.insts[j].opname == "STORE_NAME":
643-
new_tokens = try_tokens
644-
skip_end_offset = prev_offset
645-
# Set a hacky sentinal to indicate skipping to the
646-
# next instruction
647-
opname = "EXTENDED_ARG"
648-
break
649-
prev_offset = self.insts[j].offset
650-
pass
651-
pass
652-
else:
542+
if self.version >= (3, 5):
543+
try_tokens = self.bound_map_from_inst_35(
544+
self.insts,
545+
new_tokens,
546+
t,
547+
i,
548+
)
549+
if try_tokens is not None:
653550
new_tokens = try_tokens
654551
continue
552+
pass
553+
pass
655554
pass
656555

657556
argval = inst.argval

0 commit comments

Comments
 (0)