◐ Shell
clean mode source ↗

gh-98831: rewrite MAKE_FUNCTION and BUILD_SLICE in the instruction definition DSL by iritkatriel · Pull Request #101529 · python/cpython

@bedevere-bot

🤖 New build scheduled with the buildbot fleet by @iritkatriel for commit 90ff55e 🤖

If you want to schedule another build, you need to add the :hammer: test-with-buildbots label again.

gvanrossum

kwdefaults if (oparg & 0x02),
annotations if (oparg & 0x04),
closure if (oparg & 0x08),
codeobj -- func)) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Too bad we can't write func: PyFunctionObject * yet -- I've gotta add that to the grammar, it would add the casts and save the ugly extra func_obj variable.

Comment on lines 3042 to 3037

Py_DECREF(start);
Py_DECREF(stop);
Py_XDECREF(step);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, we should augment DECREF_INPUTS() to use XDECREF for conditional inputs.

Comment on lines +3584 to +3591

PyObject *annotations = (oparg & 0x04) ? PEEK(1 + ((oparg & 0x08) ? 1 : 0) + ((oparg & 0x04) ? 1 : 0)) : NULL;
PyObject *kwdefaults = (oparg & 0x02) ? PEEK(1 + ((oparg & 0x08) ? 1 : 0) + ((oparg & 0x04) ? 1 : 0) + ((oparg & 0x02) ? 1 : 0)) : NULL;
PyObject *defaults = (oparg & 0x01) ? PEEK(1 + ((oparg & 0x08) ? 1 : 0) + ((oparg & 0x04) ? 1 : 0) + ((oparg & 0x02) ? 1 : 0) + ((oparg & 0x01) ? 1 : 0)) : NULL;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's hope the compiler optimizes this. (Though it's not perf critical.)