SKIP_OVER(INLINE_CACHE_ENTRIES_BINARY_SUBSCR);
frame->return_offset = 0;
DISPATCH_INLINED(new_frame);
- STACK_SHRINK(1);
}
TARGET(LIST_APPEND) {
break;
}
if (true) { STACK_SHRINK(oparg); goto error; }
- STACK_SHRINK(oparg);
}
TARGET(INTERPRETER_EXIT) {
assert(!_PyErr_Occurred(tstate));
tstate->c_recursion_remaining += PY_EVAL_C_STACK_UNITS;
return retval;
- STACK_SHRINK(1);
}
TARGET(RETURN_VALUE) {
frame->prev_instr += frame->return_offset;
_PyFrame_StackPush(frame, retval);
goto resume_frame;
- STACK_SHRINK(1);
}
TARGET(RETURN_CONST) {
_PyErr_SetRaisedException(tstate, exc);
monitor_reraise(tstate, frame, next_instr-1);
goto exception_unwind;
- STACK_SHRINK(1);
}
TARGET(END_ASYNC_FOR) {
// don't want to specialize instrumented instructions
INCREMENT_ADAPTIVE_COUNTER(cache->counter);
GO_TO_INSTRUCTION(LOAD_SUPER_ATTR);
- STACK_SHRINK(2);
- STACK_GROW(((oparg & 1) ? 1 : 0));
}
TARGET(LOAD_SUPER_ATTR) {
next_instr[oparg].op.code == INSTRUMENTED_END_FOR);
frame->return_offset = oparg;
DISPATCH_INLINED(gen_frame);
- STACK_GROW(1);
}
TARGET(BEFORE_ASYNC_WITH) {
SKIP_OVER(INLINE_CACHE_ENTRIES_CALL);
frame->return_offset = 0;
DISPATCH_INLINED(new_frame);
- STACK_SHRINK(oparg);
- STACK_SHRINK(1);
}
TARGET(CALL_NO_KW_TYPE_1) {
* as it will be checked after start_frame */
tstate->py_recursion_remaining--;
goto start_frame;
- STACK_SHRINK(oparg);
- STACK_SHRINK(1);
}
TARGET(EXIT_INIT_CHECK) {
SKIP_OVER(INLINE_CACHE_ENTRIES_CALL + 1);
assert(next_instr[-1].op.code == POP_TOP);
DISPATCH();
- STACK_SHRINK(oparg);
- STACK_SHRINK(1);
}
TARGET(CALL_NO_KW_METHOD_DESCRIPTOR_O) {
with out.block(""):
mgr.instr.write_body(out, -4, mgr.active_caches, tier)
- if mgr is managers[-1] and not next_instr_is_set:
+ if mgr is managers[-1] and not next_instr_is_set and not mgr.instr.always_exits:
# Adjust the stack to its final depth, *then* write the
# pokes for all preceding uops.
# Note that for array output effects we may still write