FA-90216 / Bytecode virtual machines / Open access
Peephole optimizer: any jump followed by a label deleted · case 01
A jmp that skips a labelled block is removed, so the skipped code now executes.
ROOT CAUSE
The rule checks only that the next instruction is some label.
VERIFIED REPAIR
Remove the jmp only when the very next instruction is its own target label.
Unsuccessful approach: Looking two instructions ahead also removes jumps whose target is not immediately next.
Case contract
Rewrite stack bytecode until a pass makes no change (at most 50 passes). Rules, applied left to right in one scan per pass: push a, push b, add/sub/mul/div folds to push (a op b) when the result fits in int16 (div truncates toward zero and is never folded by zero); not, not is removed; jmp L immediately followed by label L is removed; after ret or jmp, instructions up to the next label are deleted. Return the optimized instruction list.
Why this case matters
Bytecode compilers rely on peephole passes that must preserve semantics and encoding limits.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(code):
code = [list(i) for i in code]
for _ in range(50):
changed = False
out = []
i = 0
while i < len(code):
ins = code[i]
if (i + 2 < len(code) and ins[0] == 'push' and code[i + 1][0] == 'push'
and code[i + 2][0] in ('add', 'sub', 'mul', 'div')):
a, b, op = ins[1], code[i + 1][1], code[i + 2][0]
if not (op == 'div' and b == 0):
if op == 'add':
v = a + b
elif op == 'sub':
v = a - b
elif op == 'mul':
v = a * b
else:
v = abs(a) // abs(b) * (1 if (a < 0) == (b < 0) else -1)
if -32768 <= v <= 32767:
out.append(['push', v])
i += 3
changed = True
continue
if ins[0] == 'not' and i + 1 < len(code) and code[i + 1][0] == 'not':
i += 2
changed = True
continue
if ins[0] == 'jmp' and i + 1 < len(code) and code[i + 1][0] == 'label':
i += 1
changed = True
continue
out.append(ins)
i += 1
if ins[0] in ('ret', 'jmp'):
j = i
while j < len(code) and code[j][0] != 'label':
j += 1
if j > i:
changed = True
i = j
code = out
if not changed:
break
return code
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('regression: folding cascades across passes',
([['push', 2], ['push', 4], ['add'], ['push', 4], ['mul'], ['push', 5], ['sub'], ['ret']],),
[['push', 19], ['ret']]),
('fold reaching the int16 minimum',
([['push', -16384], ['push', 2], ['mul'], ['push', 1], ['ret']],),
[['push', -32768], ['push', 1], ['ret']]),
('fold reaching the int16 maximum',
([['push', 32766], ['push', 1], ['add'], ['push', 200], ['push', 201], ['mul'], ['ret']],),
[['push', 32767], ['push', 200], ['push', 201], ['mul'], ['ret']]),
('jump over code to a later label is kept',
([['jmp', 'L2'], ['label', 'L1'], ['push', 1], ['label', 'L2'], ['ret']],),
[['jmp', 'L2'], ['label', 'L1'], ['push', 1], ['label', 'L2'], ['ret']]),
('jump to the second of two adjacent labels',
([['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 1], ['ret']],),
[['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 1], ['ret']]),
('dead code after an unconditional jump',
([['jmp', 'E'], ['push', 1], ['push', 1], ['label', 'E'], ['ret']],),
[['label', 'E'], ['ret']]),
('conditional jump keeps its fallthrough',
([['push', 0], ['jz', 'E'], ['push', 10], ['ret'], ['label', 'E'], ['push', 1], ['ret']],),
[['push', 0], ['jz', 'E'], ['push', 10], ['ret'], ['label', 'E'], ['push', 1], ['ret']]),
('division folds truncate toward zero',
([['push', -9],
['push', 2],
['div'],
['push', 7],
['push', -2],
['div'],
['push', 5],
['push', 0],
['div'],
['ret']],),
[['push', -4], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']]),
('control: double negation removed', ([['push', 1], ['not'], ['not'], ['ret']],), [['push', 1], ['ret']])],
[('regression: folding cascades across passes',
([['push', 2], ['push', 5], ['add'], ['push', 4], ['mul'], ['push', 5], ['sub'], ['ret']],),
[['push', 23], ['ret']]),
('fold reaching the int16 minimum',
([['push', -16384], ['push', 2], ['mul'], ['push', 2], ['ret']],),
[['push', -32768], ['push', 2], ['ret']]),
('fold reaching the int16 maximum',
([['push', 32766], ['push', 1], ['add'], ['push', 200], ['push', 202], ['mul'], ['ret']],),
[['push', 32767], ['push', 200], ['push', 202], ['mul'], ['ret']]),
('jump over code to a later label is kept',
([['jmp', 'L2'], ['label', 'L1'], ['push', 2], ['label', 'L2'], ['ret']],),
[['jmp', 'L2'], ['label', 'L1'], ['push', 2], ['label', 'L2'], ['ret']]),
('jump to the second of two adjacent labels',
([['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 2], ['ret']],),
[['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 2], ['ret']]),
('dead code after an unconditional jump',
([['jmp', 'E'], ['push', 1], ['push', 2], ['label', 'E'], ['ret']],),
[['label', 'E'], ['ret']]),
('conditional jump keeps its fallthrough',
([['push', 0], ['jz', 'E'], ['push', 11], ['ret'], ['label', 'E'], ['push', 1], ['ret']],),
[['push', 0], ['jz', 'E'], ['push', 11], ['ret'], ['label', 'E'], ['push', 1], ['ret']]),
('division folds truncate toward zero',
([['push', -11],
['push', 2],
['div'],
['push', 7],
['push', -2],
['div'],
['push', 5],
['push', 0],
['div'],
['ret']],),
[['push', -5], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']]),
('control: double negation removed', ([['push', 2], ['not'], ['not'], ['ret']],), [['push', 2], ['ret']])],
[('regression: folding cascades across passes',
([['push', 2], ['push', 6], ['add'], ['push', 4], ['mul'], ['push', 5], ['sub'], ['ret']],),
[['push', 27], ['ret']]),
('fold reaching the int16 minimum',
([['push', -16384], ['push', 2], ['mul'], ['push', 3], ['ret']],),
[['push', -32768], ['push', 3], ['ret']]),
('fold reaching the int16 maximum',
([['push', 32766], ['push', 1], ['add'], ['push', 200], ['push', 203], ['mul'], ['ret']],),
[['push', 32767], ['push', 200], ['push', 203], ['mul'], ['ret']]),
('jump over code to a later label is kept',
([['jmp', 'L2'], ['label', 'L1'], ['push', 3], ['label', 'L2'], ['ret']],),
[['jmp', 'L2'], ['label', 'L1'], ['push', 3], ['label', 'L2'], ['ret']]),
('jump to the second of two adjacent labels',
([['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 3], ['ret']],),
[['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 3], ['ret']]),
('dead code after an unconditional jump',
([['jmp', 'E'], ['push', 1], ['push', 3], ['label', 'E'], ['ret']],),
[['label', 'E'], ['ret']]),
('conditional jump keeps its fallthrough',
([['push', 0], ['jz', 'E'], ['push', 12], ['ret'], ['label', 'E'], ['push', 1], ['ret']],),
[['push', 0], ['jz', 'E'], ['push', 12], ['ret'], ['label', 'E'], ['push', 1], ['ret']]),
('division folds truncate toward zero',
([['push', -13],
['push', 2],
['div'],
['push', 7],
['push', -2],
['div'],
['push', 5],
['push', 0],
['div'],
['ret']],),
[['push', -6], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']]),
('control: double negation removed', ([['push', 3], ['not'], ['not'], ['ret']],), [['push', 3], ['ret']])],
[('regression: folding cascades across passes',
([['push', 2], ['push', 7], ['add'], ['push', 4], ['mul'], ['push', 5], ['sub'], ['ret']],),
[['push', 31], ['ret']]),
('fold reaching the int16 minimum',
([['push', -16384], ['push', 2], ['mul'], ['push', 4], ['ret']],),
[['push', -32768], ['push', 4], ['ret']]),
('fold reaching the int16 maximum',
([['push', 32766], ['push', 1], ['add'], ['push', 200], ['push', 204], ['mul'], ['ret']],),
[['push', 32767], ['push', 200], ['push', 204], ['mul'], ['ret']]),
('jump over code to a later label is kept',
([['jmp', 'L2'], ['label', 'L1'], ['push', 4], ['label', 'L2'], ['ret']],),
[['jmp', 'L2'], ['label', 'L1'], ['push', 4], ['label', 'L2'], ['ret']]),
('jump to the second of two adjacent labels',
([['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 4], ['ret']],),
[['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 4], ['ret']]),
('dead code after an unconditional jump',
([['jmp', 'E'], ['push', 1], ['push', 4], ['label', 'E'], ['ret']],),
[['label', 'E'], ['ret']]),
('conditional jump keeps its fallthrough',
([['push', 0], ['jz', 'E'], ['push', 13], ['ret'], ['label', 'E'], ['push', 1], ['ret']],),
[['push', 0], ['jz', 'E'], ['push', 13], ['ret'], ['label', 'E'], ['push', 1], ['ret']]),
('division folds truncate toward zero',
([['push', -15],
['push', 2],
['div'],
['push', 7],
['push', -2],
['div'],
['push', 5],
['push', 0],
['div'],
['ret']],),
[['push', -7], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']]),
('control: double negation removed', ([['push', 4], ['not'], ['not'], ['ret']],), [['push', 4], ['ret']])],
[('regression: folding cascades across passes',
([['push', 2], ['push', 8], ['add'], ['push', 4], ['mul'], ['push', 5], ['sub'], ['ret']],),
[['push', 35], ['ret']]),
('fold reaching the int16 minimum',
([['push', -16384], ['push', 2], ['mul'], ['push', 5], ['ret']],),
[['push', -32768], ['push', 5], ['ret']]),
('fold reaching the int16 maximum',
([['push', 32766], ['push', 1], ['add'], ['push', 200], ['push', 205], ['mul'], ['ret']],),
[['push', 32767], ['push', 200], ['push', 205], ['mul'], ['ret']]),
('jump over code to a later label is kept',
([['jmp', 'L2'], ['label', 'L1'], ['push', 5], ['label', 'L2'], ['ret']],),
[['jmp', 'L2'], ['label', 'L1'], ['push', 5], ['label', 'L2'], ['ret']]),
('jump to the second of two adjacent labels',
([['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 5], ['ret']],),
[['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 5], ['ret']]),
('dead code after an unconditional jump',
([['jmp', 'E'], ['push', 1], ['push', 5], ['label', 'E'], ['ret']],),
[['label', 'E'], ['ret']]),
('conditional jump keeps its fallthrough',
([['push', 0], ['jz', 'E'], ['push', 14], ['ret'], ['label', 'E'], ['push', 1], ['ret']],),
[['push', 0], ['jz', 'E'], ['push', 14], ['ret'], ['label', 'E'], ['push', 1], ['ret']]),
('division folds truncate toward zero',
([['push', -17],
['push', 2],
['div'],
['push', 7],
['push', -2],
['div'],
['push', 5],
['push', 0],
['div'],
['ret']],),
[['push', -8], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']]),
('control: double negation removed', ([['push', 5], ['not'], ['not'], ['ret']],), [['push', 5], ['ret']])]]
for label, args, expected in cases[N - 1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: folding cascades across passes | [['push', 19], ['ret']] | [['push', 19], ['ret']] | Passed |
| fold reaching the int16 minimum | [['push', -32768], ['push', 1], ['ret']] | [['push', -32768], ['push', 1], ['ret']] | Passed |
| fold reaching the int16 maximum | [['push', 32767], ['push', 200], ['push', 201], ['mul'], ['ret']] | [['push', 32767], ['push', 200], ['push', 201], ['mul'], ['ret']] | Passed |
| jump over code to a later label is kept | [['label', 'L1'], ['push', 1], ['label', 'L2'], ['ret']] | [['jmp', 'L2'], ['label', 'L1'], ['push', 1], ['label', 'L2'], ['ret']] | Failed |
| jump to the second of two adjacent labels | [['label', 'M'], ['label', 'L'], ['push', 1], ['ret']] | [['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 1], ['ret']] | Failed |
| dead code after an unconditional jump | [['label', 'E'], ['ret']] | [['label', 'E'], ['ret']] | Passed |
| conditional jump keeps its fallthrough | [['push', 0], ['jz', 'E'], ['push', 10], ['ret'], ['label', 'E'], ['push', 1], ['ret']] | [['push', 0], ['jz', 'E'], ['push', 10], ['ret'], ['label', 'E'], ['push', 1], ['ret']] | Passed |
| division folds truncate toward zero | [['push', -4], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']] | [['push', -4], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']] | Passed |
| control: double negation removed | [['push', 1], ['ret']] | [['push', 1], ['ret']] | Passed |
SHA-256 / a346e4356a94d53cb4183faae94f2b7b4ebacc6de78690034798efc57bc00557
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(code):
code = [list(i) for i in code]
for _ in range(50):
changed = False
out = []
i = 0
while i < len(code):
ins = code[i]
if (i + 2 < len(code) and ins[0] == 'push' and code[i + 1][0] == 'push'
and code[i + 2][0] in ('add', 'sub', 'mul', 'div')):
a, b, op = ins[1], code[i + 1][1], code[i + 2][0]
if not (op == 'div' and b == 0):
if op == 'add':
v = a + b
elif op == 'sub':
v = a - b
elif op == 'mul':
v = a * b
else:
v = abs(a) // abs(b) * (1 if (a < 0) == (b < 0) else -1)
if -32768 <= v <= 32767:
out.append(['push', v])
i += 3
changed = True
continue
if ins[0] == 'not' and i + 1 < len(code) and code[i + 1][0] == 'not':
i += 2
changed = True
continue
if ins[0] == 'jmp' and i + 1 < len(code) and ['label', ins[1]] in code[i + 1:i + 3]:
i += 1
changed = True
continue
out.append(ins)
i += 1
if ins[0] in ('ret', 'jmp'):
j = i
while j < len(code) and code[j][0] != 'label':
j += 1
if j > i:
changed = True
i = j
code = out
if not changed:
break
return code
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('regression: folding cascades across passes',
([['push', 2], ['push', 4], ['add'], ['push', 4], ['mul'], ['push', 5], ['sub'], ['ret']],),
[['push', 19], ['ret']]),
('fold reaching the int16 minimum',
([['push', -16384], ['push', 2], ['mul'], ['push', 1], ['ret']],),
[['push', -32768], ['push', 1], ['ret']]),
('fold reaching the int16 maximum',
([['push', 32766], ['push', 1], ['add'], ['push', 200], ['push', 201], ['mul'], ['ret']],),
[['push', 32767], ['push', 200], ['push', 201], ['mul'], ['ret']]),
('jump over code to a later label is kept',
([['jmp', 'L2'], ['label', 'L1'], ['push', 1], ['label', 'L2'], ['ret']],),
[['jmp', 'L2'], ['label', 'L1'], ['push', 1], ['label', 'L2'], ['ret']]),
('jump to the second of two adjacent labels',
([['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 1], ['ret']],),
[['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 1], ['ret']]),
('dead code after an unconditional jump',
([['jmp', 'E'], ['push', 1], ['push', 1], ['label', 'E'], ['ret']],),
[['label', 'E'], ['ret']]),
('conditional jump keeps its fallthrough',
([['push', 0], ['jz', 'E'], ['push', 10], ['ret'], ['label', 'E'], ['push', 1], ['ret']],),
[['push', 0], ['jz', 'E'], ['push', 10], ['ret'], ['label', 'E'], ['push', 1], ['ret']]),
('division folds truncate toward zero',
([['push', -9],
['push', 2],
['div'],
['push', 7],
['push', -2],
['div'],
['push', 5],
['push', 0],
['div'],
['ret']],),
[['push', -4], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']]),
('control: double negation removed', ([['push', 1], ['not'], ['not'], ['ret']],), [['push', 1], ['ret']])],
[('regression: folding cascades across passes',
([['push', 2], ['push', 5], ['add'], ['push', 4], ['mul'], ['push', 5], ['sub'], ['ret']],),
[['push', 23], ['ret']]),
('fold reaching the int16 minimum',
([['push', -16384], ['push', 2], ['mul'], ['push', 2], ['ret']],),
[['push', -32768], ['push', 2], ['ret']]),
('fold reaching the int16 maximum',
([['push', 32766], ['push', 1], ['add'], ['push', 200], ['push', 202], ['mul'], ['ret']],),
[['push', 32767], ['push', 200], ['push', 202], ['mul'], ['ret']]),
('jump over code to a later label is kept',
([['jmp', 'L2'], ['label', 'L1'], ['push', 2], ['label', 'L2'], ['ret']],),
[['jmp', 'L2'], ['label', 'L1'], ['push', 2], ['label', 'L2'], ['ret']]),
('jump to the second of two adjacent labels',
([['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 2], ['ret']],),
[['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 2], ['ret']]),
('dead code after an unconditional jump',
([['jmp', 'E'], ['push', 1], ['push', 2], ['label', 'E'], ['ret']],),
[['label', 'E'], ['ret']]),
('conditional jump keeps its fallthrough',
([['push', 0], ['jz', 'E'], ['push', 11], ['ret'], ['label', 'E'], ['push', 1], ['ret']],),
[['push', 0], ['jz', 'E'], ['push', 11], ['ret'], ['label', 'E'], ['push', 1], ['ret']]),
('division folds truncate toward zero',
([['push', -11],
['push', 2],
['div'],
['push', 7],
['push', -2],
['div'],
['push', 5],
['push', 0],
['div'],
['ret']],),
[['push', -5], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']]),
('control: double negation removed', ([['push', 2], ['not'], ['not'], ['ret']],), [['push', 2], ['ret']])],
[('regression: folding cascades across passes',
([['push', 2], ['push', 6], ['add'], ['push', 4], ['mul'], ['push', 5], ['sub'], ['ret']],),
[['push', 27], ['ret']]),
('fold reaching the int16 minimum',
([['push', -16384], ['push', 2], ['mul'], ['push', 3], ['ret']],),
[['push', -32768], ['push', 3], ['ret']]),
('fold reaching the int16 maximum',
([['push', 32766], ['push', 1], ['add'], ['push', 200], ['push', 203], ['mul'], ['ret']],),
[['push', 32767], ['push', 200], ['push', 203], ['mul'], ['ret']]),
('jump over code to a later label is kept',
([['jmp', 'L2'], ['label', 'L1'], ['push', 3], ['label', 'L2'], ['ret']],),
[['jmp', 'L2'], ['label', 'L1'], ['push', 3], ['label', 'L2'], ['ret']]),
('jump to the second of two adjacent labels',
([['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 3], ['ret']],),
[['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 3], ['ret']]),
('dead code after an unconditional jump',
([['jmp', 'E'], ['push', 1], ['push', 3], ['label', 'E'], ['ret']],),
[['label', 'E'], ['ret']]),
('conditional jump keeps its fallthrough',
([['push', 0], ['jz', 'E'], ['push', 12], ['ret'], ['label', 'E'], ['push', 1], ['ret']],),
[['push', 0], ['jz', 'E'], ['push', 12], ['ret'], ['label', 'E'], ['push', 1], ['ret']]),
('division folds truncate toward zero',
([['push', -13],
['push', 2],
['div'],
['push', 7],
['push', -2],
['div'],
['push', 5],
['push', 0],
['div'],
['ret']],),
[['push', -6], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']]),
('control: double negation removed', ([['push', 3], ['not'], ['not'], ['ret']],), [['push', 3], ['ret']])],
[('regression: folding cascades across passes',
([['push', 2], ['push', 7], ['add'], ['push', 4], ['mul'], ['push', 5], ['sub'], ['ret']],),
[['push', 31], ['ret']]),
('fold reaching the int16 minimum',
([['push', -16384], ['push', 2], ['mul'], ['push', 4], ['ret']],),
[['push', -32768], ['push', 4], ['ret']]),
('fold reaching the int16 maximum',
([['push', 32766], ['push', 1], ['add'], ['push', 200], ['push', 204], ['mul'], ['ret']],),
[['push', 32767], ['push', 200], ['push', 204], ['mul'], ['ret']]),
('jump over code to a later label is kept',
([['jmp', 'L2'], ['label', 'L1'], ['push', 4], ['label', 'L2'], ['ret']],),
[['jmp', 'L2'], ['label', 'L1'], ['push', 4], ['label', 'L2'], ['ret']]),
('jump to the second of two adjacent labels',
([['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 4], ['ret']],),
[['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 4], ['ret']]),
('dead code after an unconditional jump',
([['jmp', 'E'], ['push', 1], ['push', 4], ['label', 'E'], ['ret']],),
[['label', 'E'], ['ret']]),
('conditional jump keeps its fallthrough',
([['push', 0], ['jz', 'E'], ['push', 13], ['ret'], ['label', 'E'], ['push', 1], ['ret']],),
[['push', 0], ['jz', 'E'], ['push', 13], ['ret'], ['label', 'E'], ['push', 1], ['ret']]),
('division folds truncate toward zero',
([['push', -15],
['push', 2],
['div'],
['push', 7],
['push', -2],
['div'],
['push', 5],
['push', 0],
['div'],
['ret']],),
[['push', -7], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']]),
('control: double negation removed', ([['push', 4], ['not'], ['not'], ['ret']],), [['push', 4], ['ret']])],
[('regression: folding cascades across passes',
([['push', 2], ['push', 8], ['add'], ['push', 4], ['mul'], ['push', 5], ['sub'], ['ret']],),
[['push', 35], ['ret']]),
('fold reaching the int16 minimum',
([['push', -16384], ['push', 2], ['mul'], ['push', 5], ['ret']],),
[['push', -32768], ['push', 5], ['ret']]),
('fold reaching the int16 maximum',
([['push', 32766], ['push', 1], ['add'], ['push', 200], ['push', 205], ['mul'], ['ret']],),
[['push', 32767], ['push', 200], ['push', 205], ['mul'], ['ret']]),
('jump over code to a later label is kept',
([['jmp', 'L2'], ['label', 'L1'], ['push', 5], ['label', 'L2'], ['ret']],),
[['jmp', 'L2'], ['label', 'L1'], ['push', 5], ['label', 'L2'], ['ret']]),
('jump to the second of two adjacent labels',
([['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 5], ['ret']],),
[['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 5], ['ret']]),
('dead code after an unconditional jump',
([['jmp', 'E'], ['push', 1], ['push', 5], ['label', 'E'], ['ret']],),
[['label', 'E'], ['ret']]),
('conditional jump keeps its fallthrough',
([['push', 0], ['jz', 'E'], ['push', 14], ['ret'], ['label', 'E'], ['push', 1], ['ret']],),
[['push', 0], ['jz', 'E'], ['push', 14], ['ret'], ['label', 'E'], ['push', 1], ['ret']]),
('division folds truncate toward zero',
([['push', -17],
['push', 2],
['div'],
['push', 7],
['push', -2],
['div'],
['push', 5],
['push', 0],
['div'],
['ret']],),
[['push', -8], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']]),
('control: double negation removed', ([['push', 5], ['not'], ['not'], ['ret']],), [['push', 5], ['ret']])]]
for label, args, expected in cases[N - 1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: folding cascades across passes | [['push', 19], ['ret']] | [['push', 19], ['ret']] | Passed |
| fold reaching the int16 minimum | [['push', -32768], ['push', 1], ['ret']] | [['push', -32768], ['push', 1], ['ret']] | Passed |
| fold reaching the int16 maximum | [['push', 32767], ['push', 200], ['push', 201], ['mul'], ['ret']] | [['push', 32767], ['push', 200], ['push', 201], ['mul'], ['ret']] | Passed |
| jump over code to a later label is kept | [['jmp', 'L2'], ['label', 'L1'], ['push', 1], ['label', 'L2'], ['ret']] | [['jmp', 'L2'], ['label', 'L1'], ['push', 1], ['label', 'L2'], ['ret']] | Passed |
| jump to the second of two adjacent labels | [['label', 'M'], ['label', 'L'], ['push', 1], ['ret']] | [['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 1], ['ret']] | Failed |
| dead code after an unconditional jump | [['label', 'E'], ['ret']] | [['label', 'E'], ['ret']] | Passed |
| conditional jump keeps its fallthrough | [['push', 0], ['jz', 'E'], ['push', 10], ['ret'], ['label', 'E'], ['push', 1], ['ret']] | [['push', 0], ['jz', 'E'], ['push', 10], ['ret'], ['label', 'E'], ['push', 1], ['ret']] | Passed |
| division folds truncate toward zero | [['push', -4], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']] | [['push', -4], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']] | Passed |
| control: double negation removed | [['push', 1], ['ret']] | [['push', 1], ['ret']] | Passed |
SHA-256 / e5f9dd2709e5c5484546fd1547e3c6f161f7578754e1a759c47e59d505093a89
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(code):
code = [list(i) for i in code]
for _ in range(50):
changed = False
out = []
i = 0
while i < len(code):
ins = code[i]
if (i + 2 < len(code) and ins[0] == 'push' and code[i + 1][0] == 'push'
and code[i + 2][0] in ('add', 'sub', 'mul', 'div')):
a, b, op = ins[1], code[i + 1][1], code[i + 2][0]
if not (op == 'div' and b == 0):
if op == 'add':
v = a + b
elif op == 'sub':
v = a - b
elif op == 'mul':
v = a * b
else:
v = abs(a) // abs(b) * (1 if (a < 0) == (b < 0) else -1)
if -32768 <= v <= 32767:
out.append(['push', v])
i += 3
changed = True
continue
if ins[0] == 'not' and i + 1 < len(code) and code[i + 1][0] == 'not':
i += 2
changed = True
continue
if ins[0] == 'jmp' and i + 1 < len(code) and code[i + 1] == ['label', ins[1]]:
i += 1
changed = True
continue
out.append(ins)
i += 1
if ins[0] in ('ret', 'jmp'):
j = i
while j < len(code) and code[j][0] != 'label':
j += 1
if j > i:
changed = True
i = j
code = out
if not changed:
break
return code
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('regression: folding cascades across passes',
([['push', 2], ['push', 4], ['add'], ['push', 4], ['mul'], ['push', 5], ['sub'], ['ret']],),
[['push', 19], ['ret']]),
('fold reaching the int16 minimum',
([['push', -16384], ['push', 2], ['mul'], ['push', 1], ['ret']],),
[['push', -32768], ['push', 1], ['ret']]),
('fold reaching the int16 maximum',
([['push', 32766], ['push', 1], ['add'], ['push', 200], ['push', 201], ['mul'], ['ret']],),
[['push', 32767], ['push', 200], ['push', 201], ['mul'], ['ret']]),
('jump over code to a later label is kept',
([['jmp', 'L2'], ['label', 'L1'], ['push', 1], ['label', 'L2'], ['ret']],),
[['jmp', 'L2'], ['label', 'L1'], ['push', 1], ['label', 'L2'], ['ret']]),
('jump to the second of two adjacent labels',
([['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 1], ['ret']],),
[['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 1], ['ret']]),
('dead code after an unconditional jump',
([['jmp', 'E'], ['push', 1], ['push', 1], ['label', 'E'], ['ret']],),
[['label', 'E'], ['ret']]),
('conditional jump keeps its fallthrough',
([['push', 0], ['jz', 'E'], ['push', 10], ['ret'], ['label', 'E'], ['push', 1], ['ret']],),
[['push', 0], ['jz', 'E'], ['push', 10], ['ret'], ['label', 'E'], ['push', 1], ['ret']]),
('division folds truncate toward zero',
([['push', -9],
['push', 2],
['div'],
['push', 7],
['push', -2],
['div'],
['push', 5],
['push', 0],
['div'],
['ret']],),
[['push', -4], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']]),
('control: double negation removed', ([['push', 1], ['not'], ['not'], ['ret']],), [['push', 1], ['ret']])],
[('regression: folding cascades across passes',
([['push', 2], ['push', 5], ['add'], ['push', 4], ['mul'], ['push', 5], ['sub'], ['ret']],),
[['push', 23], ['ret']]),
('fold reaching the int16 minimum',
([['push', -16384], ['push', 2], ['mul'], ['push', 2], ['ret']],),
[['push', -32768], ['push', 2], ['ret']]),
('fold reaching the int16 maximum',
([['push', 32766], ['push', 1], ['add'], ['push', 200], ['push', 202], ['mul'], ['ret']],),
[['push', 32767], ['push', 200], ['push', 202], ['mul'], ['ret']]),
('jump over code to a later label is kept',
([['jmp', 'L2'], ['label', 'L1'], ['push', 2], ['label', 'L2'], ['ret']],),
[['jmp', 'L2'], ['label', 'L1'], ['push', 2], ['label', 'L2'], ['ret']]),
('jump to the second of two adjacent labels',
([['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 2], ['ret']],),
[['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 2], ['ret']]),
('dead code after an unconditional jump',
([['jmp', 'E'], ['push', 1], ['push', 2], ['label', 'E'], ['ret']],),
[['label', 'E'], ['ret']]),
('conditional jump keeps its fallthrough',
([['push', 0], ['jz', 'E'], ['push', 11], ['ret'], ['label', 'E'], ['push', 1], ['ret']],),
[['push', 0], ['jz', 'E'], ['push', 11], ['ret'], ['label', 'E'], ['push', 1], ['ret']]),
('division folds truncate toward zero',
([['push', -11],
['push', 2],
['div'],
['push', 7],
['push', -2],
['div'],
['push', 5],
['push', 0],
['div'],
['ret']],),
[['push', -5], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']]),
('control: double negation removed', ([['push', 2], ['not'], ['not'], ['ret']],), [['push', 2], ['ret']])],
[('regression: folding cascades across passes',
([['push', 2], ['push', 6], ['add'], ['push', 4], ['mul'], ['push', 5], ['sub'], ['ret']],),
[['push', 27], ['ret']]),
('fold reaching the int16 minimum',
([['push', -16384], ['push', 2], ['mul'], ['push', 3], ['ret']],),
[['push', -32768], ['push', 3], ['ret']]),
('fold reaching the int16 maximum',
([['push', 32766], ['push', 1], ['add'], ['push', 200], ['push', 203], ['mul'], ['ret']],),
[['push', 32767], ['push', 200], ['push', 203], ['mul'], ['ret']]),
('jump over code to a later label is kept',
([['jmp', 'L2'], ['label', 'L1'], ['push', 3], ['label', 'L2'], ['ret']],),
[['jmp', 'L2'], ['label', 'L1'], ['push', 3], ['label', 'L2'], ['ret']]),
('jump to the second of two adjacent labels',
([['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 3], ['ret']],),
[['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 3], ['ret']]),
('dead code after an unconditional jump',
([['jmp', 'E'], ['push', 1], ['push', 3], ['label', 'E'], ['ret']],),
[['label', 'E'], ['ret']]),
('conditional jump keeps its fallthrough',
([['push', 0], ['jz', 'E'], ['push', 12], ['ret'], ['label', 'E'], ['push', 1], ['ret']],),
[['push', 0], ['jz', 'E'], ['push', 12], ['ret'], ['label', 'E'], ['push', 1], ['ret']]),
('division folds truncate toward zero',
([['push', -13],
['push', 2],
['div'],
['push', 7],
['push', -2],
['div'],
['push', 5],
['push', 0],
['div'],
['ret']],),
[['push', -6], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']]),
('control: double negation removed', ([['push', 3], ['not'], ['not'], ['ret']],), [['push', 3], ['ret']])],
[('regression: folding cascades across passes',
([['push', 2], ['push', 7], ['add'], ['push', 4], ['mul'], ['push', 5], ['sub'], ['ret']],),
[['push', 31], ['ret']]),
('fold reaching the int16 minimum',
([['push', -16384], ['push', 2], ['mul'], ['push', 4], ['ret']],),
[['push', -32768], ['push', 4], ['ret']]),
('fold reaching the int16 maximum',
([['push', 32766], ['push', 1], ['add'], ['push', 200], ['push', 204], ['mul'], ['ret']],),
[['push', 32767], ['push', 200], ['push', 204], ['mul'], ['ret']]),
('jump over code to a later label is kept',
([['jmp', 'L2'], ['label', 'L1'], ['push', 4], ['label', 'L2'], ['ret']],),
[['jmp', 'L2'], ['label', 'L1'], ['push', 4], ['label', 'L2'], ['ret']]),
('jump to the second of two adjacent labels',
([['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 4], ['ret']],),
[['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 4], ['ret']]),
('dead code after an unconditional jump',
([['jmp', 'E'], ['push', 1], ['push', 4], ['label', 'E'], ['ret']],),
[['label', 'E'], ['ret']]),
('conditional jump keeps its fallthrough',
([['push', 0], ['jz', 'E'], ['push', 13], ['ret'], ['label', 'E'], ['push', 1], ['ret']],),
[['push', 0], ['jz', 'E'], ['push', 13], ['ret'], ['label', 'E'], ['push', 1], ['ret']]),
('division folds truncate toward zero',
([['push', -15],
['push', 2],
['div'],
['push', 7],
['push', -2],
['div'],
['push', 5],
['push', 0],
['div'],
['ret']],),
[['push', -7], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']]),
('control: double negation removed', ([['push', 4], ['not'], ['not'], ['ret']],), [['push', 4], ['ret']])],
[('regression: folding cascades across passes',
([['push', 2], ['push', 8], ['add'], ['push', 4], ['mul'], ['push', 5], ['sub'], ['ret']],),
[['push', 35], ['ret']]),
('fold reaching the int16 minimum',
([['push', -16384], ['push', 2], ['mul'], ['push', 5], ['ret']],),
[['push', -32768], ['push', 5], ['ret']]),
('fold reaching the int16 maximum',
([['push', 32766], ['push', 1], ['add'], ['push', 200], ['push', 205], ['mul'], ['ret']],),
[['push', 32767], ['push', 200], ['push', 205], ['mul'], ['ret']]),
('jump over code to a later label is kept',
([['jmp', 'L2'], ['label', 'L1'], ['push', 5], ['label', 'L2'], ['ret']],),
[['jmp', 'L2'], ['label', 'L1'], ['push', 5], ['label', 'L2'], ['ret']]),
('jump to the second of two adjacent labels',
([['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 5], ['ret']],),
[['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 5], ['ret']]),
('dead code after an unconditional jump',
([['jmp', 'E'], ['push', 1], ['push', 5], ['label', 'E'], ['ret']],),
[['label', 'E'], ['ret']]),
('conditional jump keeps its fallthrough',
([['push', 0], ['jz', 'E'], ['push', 14], ['ret'], ['label', 'E'], ['push', 1], ['ret']],),
[['push', 0], ['jz', 'E'], ['push', 14], ['ret'], ['label', 'E'], ['push', 1], ['ret']]),
('division folds truncate toward zero',
([['push', -17],
['push', 2],
['div'],
['push', 7],
['push', -2],
['div'],
['push', 5],
['push', 0],
['div'],
['ret']],),
[['push', -8], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']]),
('control: double negation removed', ([['push', 5], ['not'], ['not'], ['ret']],), [['push', 5], ['ret']])]]
for label, args, expected in cases[N - 1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: folding cascades across passes | [['push', 19], ['ret']] | [['push', 19], ['ret']] | Passed |
| fold reaching the int16 minimum | [['push', -32768], ['push', 1], ['ret']] | [['push', -32768], ['push', 1], ['ret']] | Passed |
| fold reaching the int16 maximum | [['push', 32767], ['push', 200], ['push', 201], ['mul'], ['ret']] | [['push', 32767], ['push', 200], ['push', 201], ['mul'], ['ret']] | Passed |
| jump over code to a later label is kept | [['jmp', 'L2'], ['label', 'L1'], ['push', 1], ['label', 'L2'], ['ret']] | [['jmp', 'L2'], ['label', 'L1'], ['push', 1], ['label', 'L2'], ['ret']] | Passed |
| jump to the second of two adjacent labels | [['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 1], ['ret']] | [['jmp', 'L'], ['label', 'M'], ['label', 'L'], ['push', 1], ['ret']] | Passed |
| dead code after an unconditional jump | [['label', 'E'], ['ret']] | [['label', 'E'], ['ret']] | Passed |
| conditional jump keeps its fallthrough | [['push', 0], ['jz', 'E'], ['push', 10], ['ret'], ['label', 'E'], ['push', 1], ['ret']] | [['push', 0], ['jz', 'E'], ['push', 10], ['ret'], ['label', 'E'], ['push', 1], ['ret']] | Passed |
| division folds truncate toward zero | [['push', -4], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']] | [['push', -4], ['push', -3], ['push', 5], ['push', 0], ['div'], ['ret']] | Passed |
| control: double negation removed | [['push', 1], ['ret']] | [['push', 1], ['ret']] | Passed |
SHA-256 / d7ef94bd4df6dda1c5f85115e34e2b71b89fc17d04e7633479eb10dcdc8bda0e
Verification & scope
A deterministic, bounded teaching model of one bytecode virtual machine mechanism with a stipulated instruction encoding; it is not a production VM and claims no conformance to any real specification. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:51:24.591367+00:00.
Case digest / 5712f2c71a3de79f8dca075990cdf4a00dcb12d64ac372a42cf9ef81cbc640e9