ex = get_first_executor(testfunc)
self.assertIsNotNone(ex)
uops = get_opnames(ex)
- self.assertIn("_SET_IP", uops)
+ self.assertIn("_JUMP_TO_TOP", uops)
self.assertIn("_LOAD_FAST_0", uops)
def test_extended_arg(self):
EXIT_TO_TRACE();
}
- tier2 op(_ERROR_POP_N, (unused[oparg] --)) {
+ tier2 op(_ERROR_POP_N, (target/2, unused[oparg] --)) {
+ frame->instr_ptr = ((_Py_CODEUNIT *)_PyFrame_GetCode(frame)->co_code_adaptive) + target;
SYNC_SP();
GOTO_UNWIND();
}
case _ERROR_POP_N: {
oparg = CURRENT_OPARG();
+ uint32_t target = (uint32_t)CURRENT_OPERAND();
+ frame->instr_ptr = ((_Py_CODEUNIT *)_PyFrame_GetCode(frame)->co_code_adaptive) + target;
stack_pointer += -oparg;
GOTO_UNWIND();
break;
current_error_target = target;
make_exit(&buffer[next_spare], _ERROR_POP_N, 0);
buffer[next_spare].oparg = popped;
+ buffer[next_spare].operand = target;
next_spare++;
}
buffer[i].error_target = current_error;
needs_ip = true;
may_have_escaped = true;
}
- if (_PyUop_Flags[opcode] & HAS_ERROR_FLAG) {
- needs_ip = true;
- }
if (needs_ip && last_set_ip >= 0) {
if (buffer[last_set_ip].opcode == _CHECK_VALIDITY) {
buffer[last_set_ip].opcode = _CHECK_VALIDITY_AND_SET_IP;