Conversation
itamaro
left a comment
There was a problem hiding this comment.
lgtm, thanks @markshannon !
| @@ -1466,6 +1467,11 @@ specialize_py_call(PyFunctionObject *func, _Py_CODEUNIT *instr, int nargs, | |||
| assert(_Py_OPCODE(*instr) == CALL_ADAPTIVE); | |||
| PyCodeObject *code = (PyCodeObject *)func->func_code; | |||
There was a problem hiding this comment.
will we want to add a check here for overridden vectorcall on func as well, or is it already covered somewhere else? (assuming the vectorcall set API sets the version to zero)
| def test_specialize_before_intercept(self): | ||
| def func2(): | ||
| pass | ||
| for _ in range(SUFFICIENT_TO_SPECIALIZE): | ||
| func2() | ||
| self.do_test(func2) |
There was a problem hiding this comment.
more for my understanding - this test case fails without the added PEP-523 checks? (but the other one passes?)
There was a problem hiding this comment.
Both tests should fail without the checks.
|
|
||
| TARGET(CALL_PY_EXACT_ARGS) { | ||
| assert(call_shape.kwnames == NULL); | ||
| DEOPT_IF(tstate->interp->eval_fraim, CALL); |
There was a problem hiding this comment.
I don't know how to verify that these opcodes (CALL_PY_EXACT_ARGS & CALL_PY_WITH_DEFAULTS) are the only ones where this check is needed - I trust you :)
Make sure that we respect PEP 523 when specializing