goto done;
}
+ // Strange control-flow
+ bool has_dynamic_jump_taken = OPCODE_HAS_UNPREDICTABLE_JUMP(opcode) &&
+ (next_instr != this_instr + 1 + _PyOpcode_Caches[_PyOpcode_Deopt[opcode]]);
+ if (has_dynamic_jump_taken) {
+ DPRINTF(2, "Unsupported: dynamic jump taken\n");
+ goto unsupported;
+ }
+
/* Special case the first instruction,
* so that we can guarantee forward progress */
if (progress_needed && tstate->interp->jit_state.code_curr_size <= 2) {
assert(!OPCODE_HAS_DEOPT(opcode));
}
- // Strange control-flow
- bool has_dynamic_jump_taken = OPCODE_HAS_UNPREDICTABLE_JUMP(opcode) &&
- (next_instr != this_instr + 1 + _PyOpcode_Caches[_PyOpcode_Deopt[opcode]]);
- if (has_dynamic_jump_taken) {
- DPRINTF(2, "Unsupported: dynamic jump taken\n");
- goto unsupported;
- }
-
// This happens when a recursive call happens that we can't trace. Such as Python -> C -> Python calls
// If we haven't guarded the IP, then it's untraceable.
if (frame != tstate->interp->jit_state.prev_instr_frame && !needs_guard_ip) {