Skip to content

Commit b591bb3

Browse files
committed
Use array instead of conditional for BUILD_SLICE args
1 parent 4213d83 commit b591bb3

File tree

7 files changed

+31
-41
lines changed

7 files changed

+31
-41
lines changed

Include/internal/pycore_opcode_metadata.h

Lines changed: 2 additions & 2 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: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Lib/test/test__opcode.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,7 @@ def check_function(self, func, expected):
6565
class StackEffectTests(unittest.TestCase):
6666
def test_stack_effect(self):
6767
self.assertEqual(stack_effect(dis.opmap['POP_TOP']), -1)
68-
self.assertEqual(stack_effect(dis.opmap['BUILD_SLICE'], 0), -1)
69-
self.assertEqual(stack_effect(dis.opmap['BUILD_SLICE'], 1), -1)
68+
self.assertEqual(stack_effect(dis.opmap['BUILD_SLICE'], 2), -1)
7069
self.assertEqual(stack_effect(dis.opmap['BUILD_SLICE'], 3), -2)
7170
self.assertRaises(ValueError, stack_effect, 30000)
7271
# All defined opcodes

Python/bytecodes.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4695,11 +4695,10 @@ dummy_func(
46954695
LLTRACE_RESUME_FRAME();
46964696
}
46974697

4698-
inst(BUILD_SLICE, (start, stop, step if (oparg == 3) -- slice)) {
4699-
PyObject *start_o = PyStackRef_AsPyObjectBorrow(start);
4700-
PyObject *stop_o = PyStackRef_AsPyObjectBorrow(stop);
4701-
PyObject *step_o = PyStackRef_AsPyObjectBorrow(step);
4702-
4698+
inst(BUILD_SLICE, (args[oparg] -- slice)) {
4699+
PyObject *start_o = PyStackRef_AsPyObjectBorrow(args[0]);
4700+
PyObject *stop_o = PyStackRef_AsPyObjectBorrow(args[1]);
4701+
PyObject *step_o = oparg == 3 ? PyStackRef_AsPyObjectBorrow(args[2]) : NULL;
47034702
PyObject *slice_o = PySlice_New(start_o, stop_o, step_o);
47044703
DECREF_INPUTS();
47054704
ERROR_IF(slice_o == NULL, error);

Python/executor_cases.c.h

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

Python/generated_cases.c.h

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

Python/optimizer_cases.c.h

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

0 commit comments

Comments
 (0)