def f(i, j): for param, _ in unroll_parameters: defl = PARAMETERS[param] set_param(jitdriver, param, defl) set_param(jitdriver, "threshold", 3) set_param(jitdriver, "trace_eagerness", 2) total = 0 frame = Frame(i) j = float(j) prev_s = rstr.mallocstr(16) while frame.i > 3: jitdriver.can_enter_jit(frame=frame, total=total, j=j, prev_s=prev_s) jitdriver.jit_merge_point(frame=frame, total=total, j=j, prev_s=prev_s) _get_virtualizable_token(frame) total += frame.i if frame.i >= 20: frame.i -= 2 frame.i -= 1 j *= -0.712 if j + (-j): raise ValueError j += frame.i k = myabs1(myabs2(j)) if k - abs(j): raise ValueError if k - abs(-j): raise ValueError s = rstr.mallocstr(16) rgc.ll_write_final_null_char(s) rgc.ll_write_final_null_char(prev_s) if (frame.i & 3) == 0: prev_s = s return chr(total % 253)
def check(lst): hashes = [] for i, (s, a) in enumerate(lst): assert a.x == i rgc.ll_write_final_null_char(s) for i, (s, a) in enumerate(lst): assert a.x == i # check it was not overwritten