Skip to content

Commit 17d6dd6

Browse files
committed
Add a super instruction
1 parent 291ace9 commit 17d6dd6

File tree

11 files changed

+134
-79
lines changed

11 files changed

+134
-79
lines changed

Include/internal/pycore_opcode_metadata.h

Lines changed: 12 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Include/internal/pycore_uop_ids.h

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Include/internal/pycore_uop_metadata.h

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Include/opcode_ids.h

Lines changed: 34 additions & 33 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Lib/_opcode_metadata.py

Lines changed: 34 additions & 33 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Programs/test_frozenmain.h

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Python/bytecodes.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,13 @@ dummy_func(
286286
value2 = PyStackRef_DUP(GETLOCAL(oparg2));
287287
}
288288

289+
inst(LOAD_FAST_BORROW_LOAD_FAST_BORROW, ( -- value1, value2)) {
290+
uint32_t oparg1 = oparg >> 4;
291+
uint32_t oparg2 = oparg & 15;
292+
value1 = PyStackRef_DupDeferred(GETLOCAL(oparg1));
293+
value2 = PyStackRef_DupDeferred(GETLOCAL(oparg2));
294+
}
295+
289296
family(LOAD_CONST, 0) = {
290297
LOAD_CONST_MORTAL,
291298
LOAD_CONST_IMMORTAL,

Python/generated_cases.c.h

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Python/opcode_targets.h

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Python/specialize.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -546,6 +546,13 @@ _PyCode_Quicken(_Py_CODEUNIT *instructions, Py_ssize_t size, int enable_counters
546546
eligible++;
547547
}
548548
}
549+
else if (opcode == LOAD_FAST_LOAD_FAST) {
550+
total++;
551+
if (!get_mutated(mutated, oparg >> 4) && !get_mutated(mutated, oparg & 15)) {
552+
instructions[i].op.code = LOAD_FAST_BORROW_LOAD_FAST_BORROW;
553+
eligible++;
554+
}
555+
}
549556
if (opcode != EXTENDED_ARG) {
550557
oparg = 0;
551558
}

0 commit comments

Comments
 (0)