def test_compile_loop(): cpu = FakeCPU() staticdata = FakeMetaInterpStaticData() staticdata.all_descrs = LLtypeMixin.cpu.setup_descrs() staticdata.cpu = cpu staticdata.jitlog = jl.JitLogger(cpu) staticdata.jitlog.trace_id = 1 # loop = parse(''' [p1] i1 = getfield_gc_i(p1, descr=valuedescr) i2 = int_add(i1, 1) p2 = new_with_vtable(descr=nodesize) setfield_gc(p2, i2, descr=valuedescr) jump(p2) ''', namespace=LLtypeMixin.__dict__.copy()) # metainterp = FakeMetaInterp() metainterp.staticdata = staticdata metainterp.cpu = cpu metainterp.history = History() t = convert_loop_to_trace(loop, staticdata) metainterp.history.inputargs = t.inputargs metainterp.history.trace = t # greenkey = 'faked' target_token = compile_loop( metainterp, greenkey, (0, 0, 0), t.inputargs, [t._mapping[x] for x in loop.operations[-1].getarglist()], use_unroll=False) jitcell_token = target_token.targeting_jitcell_token assert jitcell_token == target_token.original_jitcell_token assert jitcell_token.target_tokens == [target_token] assert jitcell_token.number == 2 # assert len(cpu.seen) == 1 assert cpu.seen[0][2] == jitcell_token # del cpu.seen[:]
def test_compile_loop(): cpu = FakeCPU() staticdata = FakeMetaInterpStaticData() staticdata.cpu = cpu staticdata.globaldata = FakeGlobalData() staticdata.globaldata.loopnumbering = 1 # loop = parse(''' [p1] i1 = getfield_gc(p1, descr=valuedescr) i2 = int_add(i1, 1) p2 = new_with_vtable(ConstClass(node_vtable)) setfield_gc(p2, i2, descr=valuedescr) jump(p2) ''', namespace=LLtypeMixin.__dict__.copy()) # metainterp = FakeMetaInterp() metainterp.staticdata = staticdata metainterp.cpu = cpu metainterp.history = History() metainterp.history.operations = loop.operations[:-1] metainterp.history.inputargs = loop.inputargs[:] cpu.tracker._all_size_descrs_with_vtable = ( LLtypeMixin.cpu.tracker._all_size_descrs_with_vtable) # greenkey = 'faked' target_token = compile_loop(metainterp, greenkey, 0, loop.inputargs, loop.operations[-1].getarglist(), None) jitcell_token = target_token.targeting_jitcell_token assert jitcell_token == target_token.original_jitcell_token assert jitcell_token.target_tokens == [target_token] assert jitcell_token.number == 1 assert staticdata.globaldata.loopnumbering == 2 # assert len(cpu.seen) == 1 assert cpu.seen[0][2] == jitcell_token # del cpu.seen[:]
def test_compile_loop(): cpu = FakeCPU() staticdata = FakeMetaInterpStaticData() staticdata.cpu = cpu staticdata.globaldata = FakeGlobalData() staticdata.globaldata.loopnumbering = 1 # loop = parse(''' [p1] i1 = getfield_gc_i(p1, descr=valuedescr) i2 = int_add(i1, 1) p2 = new_with_vtable(descr=nodesize) setfield_gc(p2, i2, descr=valuedescr) jump(p2) ''', namespace=LLtypeMixin.__dict__.copy()) # metainterp = FakeMetaInterp() metainterp.staticdata = staticdata metainterp.cpu = cpu metainterp.history = History() t = convert_loop_to_trace(loop, staticdata) metainterp.history.inputargs = t.inputargs metainterp.history.trace = t # greenkey = 'faked' target_token = compile_loop(metainterp, greenkey, (0, 0, 0), t.inputargs, [t._mapping[x] for x in loop.operations[-1].getarglist()], None) jitcell_token = target_token.targeting_jitcell_token assert jitcell_token == target_token.original_jitcell_token assert jitcell_token.target_tokens == [target_token] assert jitcell_token.number == 1 assert staticdata.globaldata.loopnumbering == 2 # assert len(cpu.seen) == 1 assert cpu.seen[0][2] == jitcell_token # del cpu.seen[:]