Example #1
0
def test_jump_target():
    x = '''
    []
    jump()
    '''
    loop = parse(x)
    assert loop.operations[0].descr is loop.token
Example #2
0
def test_boxkind():
    x = """
    [sum0]
    """
    loop = parse(x, None, {}, boxkinds={'sum': BoxInt})
    b = loop.getboxes()
    assert isinstance(b.sum0, BoxInt)
Example #3
0
def test_floats():
    x = '''
    [f0]
    f1 = float_add(f0, 3.5)
    '''
    loop = parse(x)
    assert isinstance(loop.operations[0].args[0], BoxFloat)
Example #4
0
def test_floats():
    x = '''
    [f0]
    f1 = float_add(f0, 3.5)
    '''
    loop = parse(x)
    assert isinstance(loop.operations[0].args[0], BoxFloat)
Example #5
0
 def parse(self, s, boxkinds=None):
     return parse(s,
                  self.cpu,
                  self.namespace,
                  type_system=self.type_system,
                  boxkinds=boxkinds,
                  invent_fail_descr=self.invent_fail_descr)
Example #6
0
def test_boxkind():
    x = """
    [sum0]
    """
    loop = parse(x, None, {}, boxkinds={'sum': BoxInt})
    b = loop.getboxes()
    assert isinstance(b.sum0, BoxInt)
Example #7
0
def test_jump_target():
    x = '''
    []
    jump()
    '''
    loop = parse(x)
    assert loop.operations[0].descr is loop.token
Example #8
0
def test_jump_target_other():
    looptoken = LoopToken()
    x = '''
    []
    jump(descr=looptoken)
    '''
    loop = parse(x, namespace=locals())
    assert loop.operations[0].descr is looptoken
Example #9
0
def test_after_fail():
    x = """
    [i0]
    guard_value(i0, 3) []
    i1 = int_add(1, 2)
    """
    loop = parse(x, None, {})
    assert len(loop.operations) == 2
Example #10
0
def test_after_fail():
    x = """
    [i0]
    guard_value(i0, 3) []
    i1 = int_add(1, 2)
    """
    loop = parse(x, None, {})
    assert len(loop.operations) == 2
Example #11
0
def test_boxname():
    x = """
    [i42]
    i50 = int_add(i42, 1)
    """
    loop = parse(x, None, {})
    assert str(loop.inputargs[0]) == 'i42'
    assert str(loop.operations[0].result) == 'i50'
Example #12
0
def test_boxname():
    x = """
    [i42]
    i50 = int_add(i42, 1)
    """
    loop = parse(x, None, {})
    assert str(loop.inputargs[0]) == 'i42'
    assert str(loop.operations[0].result) == 'i50'
Example #13
0
def test_jump_target_other():
    looptoken = LoopToken()
    x = '''
    []
    jump(descr=looptoken)
    '''
    loop = parse(x, namespace=locals())
    assert loop.operations[0].descr is looptoken
Example #14
0
def test_getvar_const_ptr():
    x = '''
    []
    call(ConstPtr(func_ptr))
    '''
    TP = lltype.GcArray(lltype.Signed)
    NULL = lltype.cast_opaque_ptr(llmemory.GCREF, lltype.nullptr(TP))
    loop = parse(x, None, {'func_ptr': NULL})
    assert loop.operations[0].args[0].value == NULL
Example #15
0
def test_getboxes():
    x = """
    [i0]
    i1 = int_add(i0, 10)
    """
    loop = parse(x, None, {})
    boxes = loop.getboxes()
    assert boxes.i0 is loop.inputargs[0]
    assert boxes.i1 is loop.operations[0].result
Example #16
0
def test_setvalues():
    x = """
    [i0]
    i1 = int_add(i0, 10)
    """
    loop = parse(x, None, {})
    loop.setvalues(i0=32, i1=42)
    assert loop.inputargs[0].value == 32
    assert loop.operations[0].result.value == 42
Example #17
0
def test_getvar_const_ptr():
    x = '''
    []
    call(ConstPtr(func_ptr))
    '''
    TP = lltype.GcArray(lltype.Signed)
    NULL = lltype.cast_opaque_ptr(llmemory.GCREF, lltype.nullptr(TP))
    loop = parse(x, None, {'func_ptr' : NULL})
    assert loop.operations[0].args[0].value == NULL
Example #18
0
def test_getboxes():
    x = """
    [i0]
    i1 = int_add(i0, 10)
    """
    loop = parse(x, None, {})
    boxes = loop.getboxes()
    assert boxes.i0 is loop.inputargs[0]
    assert boxes.i1 is loop.operations[0].result
Example #19
0
def test_setvalues():
    x = """
    [i0]
    i1 = int_add(i0, 10)
    """
    loop = parse(x, None, {})
    loop.setvalues(i0=32, i1=42)
    assert loop.inputargs[0].value == 32
    assert loop.operations[0].result.value == 42
Example #20
0
def test_descr_setfield():
    class Xyz(AbstractDescr):
        pass

    x = """
    [p0]
    setfield_gc(p0, 3, descr=stuff)
    """
    stuff = Xyz()
    loop = parse(x, None, locals())
    assert loop.operations[0].descr is stuff
Example #21
0
def test_const_ptr_subops():
    x = """
    [p0]
    guard_class(p0, ConstClass(vtable)) []
    """
    S = lltype.Struct('S')
    vtable = lltype.nullptr(S)
    loop = parse(x, None, locals())
    assert len(loop.operations) == 1
    assert loop.operations[0].descr
    assert loop.operations[0].fail_args == []
Example #22
0
def test_descr_setfield():
    class Xyz(AbstractDescr):
        pass
    
    x = """
    [p0]
    setfield_gc(p0, 3, descr=stuff)
    """
    stuff = Xyz()
    loop = parse(x, None, locals())
    assert loop.operations[0].descr is stuff
Example #23
0
def test_const_ptr_subops():
    x = """
    [p0]
    guard_class(p0, ConstClass(vtable)) []
    """
    S = lltype.Struct('S')
    vtable = lltype.nullptr(S)
    loop = parse(x, None, locals())
    assert len(loop.operations) == 1
    assert loop.operations[0].descr
    assert loop.operations[0].fail_args == []
Example #24
0
def test_debug_merge_point():
    x = '''
    []
    debug_merge_point("info")
    debug_merge_point('info')
    debug_merge_point('<some ('other,')> info')
    debug_merge_point('(stuff) #1')
    '''
    loop = parse(x)
    assert loop.operations[0].args[0]._get_str() == 'info'
    assert loop.operations[1].args[0]._get_str() == 'info'
    assert loop.operations[2].args[0]._get_str() == "<some ('other,')> info"
    assert loop.operations[3].args[0]._get_str() == "(stuff) #1"
Example #25
0
def test_debug_merge_point():
    x = '''
    []
    debug_merge_point("info")
    debug_merge_point('info')
    debug_merge_point('<some ('other,')> info')
    debug_merge_point('(stuff) #1')
    '''
    loop = parse(x)
    assert loop.operations[0].args[0]._get_str() == 'info'
    assert loop.operations[1].args[0]._get_str() == 'info'
    assert loop.operations[2].args[0]._get_str() == "<some ('other,')> info"
    assert loop.operations[3].args[0]._get_str() == "(stuff) #1"
Example #26
0
def test_basic_parse():
    x = """
    [i0, i1]
    # a comment
    i2 = int_add(i0, i1)
    i3 = int_sub(i2, 3) # another comment
    finish() # (tricky)
    """
    loop = parse(x)
    assert len(loop.operations) == 3
    assert [op.opnum for op in loop.operations
            ] == [rop.INT_ADD, rop.INT_SUB, rop.FINISH]
    assert len(loop.inputargs) == 2
    assert loop.operations[-1].descr
Example #27
0
def test_basic_parse():
    x = """
    [i0, i1]
    # a comment
    i2 = int_add(i0, i1)
    i3 = int_sub(i2, 3) # another comment
    finish() # (tricky)
    """
    loop = parse(x)
    assert len(loop.operations) == 3
    assert [op.opnum for op in loop.operations] == [rop.INT_ADD, rop.INT_SUB,
                                                    rop.FINISH]
    assert len(loop.inputargs) == 2
    assert loop.operations[-1].descr
Example #28
0
def main(argv):
    parts = split_logs_into_loops(py.path.local(argv[0]).read())
    for oplist in parts:
        loop = parse(oplist, no_namespace=True)
        num_ops = 0
        num_dmp = 0
        num_guards = 0
        for op in loop.operations:
            if op.opnum == rop.DEBUG_MERGE_POINT:
                num_dmp += 1
            else:
                num_ops += 1
            if op.is_guard():
                num_guards += 1
        print "Loop, length: %d, opcodes: %d, guards: %d" % (num_ops, num_dmp, num_guards)
Example #29
0
def main(argv):
    log = logparser.parse_log_file(argv[0])
    parts = logparser.extract_category(log, "jit-log-opt-")
    for i, oplist in enumerate(parts):
        loop = parse(oplist, no_namespace=True)
        num_ops = 0
        num_dmp = 0
        num_guards = 0
        for op in loop.operations:
            if op.opnum == rop.DEBUG_MERGE_POINT:
                num_dmp += 1
            else:
                num_ops += 1
            if op.is_guard():
                num_guards += 1
        print "Loop #%d, length: %d, opcodes: %d, guards: %d, %f" % (i, num_ops, num_dmp, num_guards, num_ops/num_dmp)
Example #30
0
def test_compile_new_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.cpu)
    metainterp.history.operations = loop.operations[:]
    metainterp.history.inputargs = loop.inputargs[:]
    #
    loop_tokens = []
    loop_token = compile_new_loop(metainterp, loop_tokens, [], 0)
    assert loop_tokens == [loop_token]
    assert loop_token.number == 1
    assert staticdata.globaldata.loopnumbering == 2
    #
    assert len(cpu.seen) == 1
    assert cpu.seen[0][2] == loop_token
    #
    del cpu.seen[:]
    metainterp = FakeMetaInterp()
    metainterp.staticdata = staticdata
    metainterp.cpu = cpu
    metainterp.history = History(metainterp.cpu)
    metainterp.history.operations = loop.operations[:]
    metainterp.history.inputargs = loop.inputargs[:]
    #
    loop_token_2 = compile_new_loop(metainterp, loop_tokens, [], 0)
    assert loop_token_2 is loop_token
    assert loop_tokens == [loop_token]
    assert len(cpu.seen) == 0
    assert staticdata.globaldata.loopnumbering == 2
Example #31
0
def main(argv):
    log = logparser.parse_log_file(argv[0])
    parts = logparser.extract_category(log, "jit-log-opt-")
    for i, oplist in enumerate(parts):
        loop = parse(oplist, no_namespace=True)
        num_ops = 0
        num_dmp = 0
        num_guards = 0
        for op in loop.operations:
            if op.opnum == rop.DEBUG_MERGE_POINT:
                num_dmp += 1
            else:
                num_ops += 1
            if op.is_guard():
                num_guards += 1
        print "Loop #%d, length: %d, opcodes: %d, guards: %d, %f" % (
            i, num_ops, num_dmp, num_guards, num_ops / num_dmp)
Example #32
0
def test_compile_new_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[:]
    metainterp.history.inputargs = loop.inputargs[:]
    #
    loop_tokens = []
    loop_token = compile_new_loop(metainterp, loop_tokens, [], 0)
    assert loop_tokens == [loop_token]
    assert loop_token.number == 1
    assert staticdata.globaldata.loopnumbering == 2
    #
    assert len(cpu.seen) == 1
    assert cpu.seen[0][2] == loop_token
    #
    del cpu.seen[:]
    metainterp = FakeMetaInterp()
    metainterp.staticdata = staticdata
    metainterp.cpu = cpu
    metainterp.history = History()
    metainterp.history.operations = loop.operations[:]
    metainterp.history.inputargs = loop.inputargs[:]
    #
    loop_token_2 = compile_new_loop(metainterp, loop_tokens, [], 0)
    assert loop_token_2 is loop_token
    assert loop_tokens == [loop_token]
    assert len(cpu.seen) == 0
    assert staticdata.globaldata.loopnumbering == 2    
Example #33
0
 def parse_loops(self, opslogfile):
     from pypy.jit.metainterp.test.oparser import parse, split_logs_into_loops
     assert opslogfile.check()
     logs = opslogfile.read()
     parts = split_logs_into_loops(logs)
     # skip entry bridges, they can contain random things
     self.loops = [parse(part, no_namespace=True) for part in parts
                       if "entry bridge" not in part]
     self.sliced_loops = [] # contains all bytecodes of all loops
     for loop in self.loops:
         for op in loop.operations:
             if op.getopname() == "debug_merge_point":
                 sliced_loop = BytecodeTrace()
                 sliced_loop.bytecode = op.args[0]._get_str().rsplit(" ", 1)[1]
                 self.sliced_loops.append(sliced_loop)
             else:
                 sliced_loop.append(op)
     self.check_0_op_bytecodes()
Example #34
0
 def parse_loops(self, opslogfile):
     from pypy.jit.metainterp.test.oparser import parse
     from pypy.tool import logparser
     assert opslogfile.check()
     log = logparser.parse_log_file(str(opslogfile))
     parts = logparser.extract_category(log, 'jit-log-opt-')
     # skip entry bridges, they can contain random things
     self.loops = [parse(part, no_namespace=True) for part in parts
                       if not from_entry_bridge(part, parts)]
     self.sliced_loops = [] # contains all bytecodes of all loops
     self.total_ops = 0
     for loop in self.loops:
         self.total_ops += len(loop.operations)
         for op in loop.operations:
             if op.getopname() == "debug_merge_point":
                 sliced_loop = BytecodeTrace()
                 sliced_loop.bytecode = op.args[0]._get_str().rsplit(" ", 1)[1]
                 self.sliced_loops.append(sliced_loop)
             else:
                 sliced_loop.append(op)
     self.check_0_op_bytecodes()
Example #35
0
 def parse_loops(self, opslogfile):
     from pypy.jit.metainterp.test.oparser import parse
     from pypy.tool import logparser
     assert opslogfile.check()
     log = logparser.parse_log_file(str(opslogfile))
     parts = logparser.extract_category(log, 'jit-log-opt-')
     # skip entry bridges, they can contain random things
     self.loops = [
         parse(part, no_namespace=True) for part in parts
         if not from_entry_bridge(part, parts)
     ]
     self.sliced_loops = []  # contains all bytecodes of all loops
     self.total_ops = 0
     for loop in self.loops:
         self.total_ops += len(loop.operations)
         for op in loop.operations:
             if op.getopname() == "debug_merge_point":
                 sliced_loop = BytecodeTrace()
                 sliced_loop.bytecode = op.args[0]._get_str().rsplit(
                     " ", 1)[1]
                 self.sliced_loops.append(sliced_loop)
             else:
                 sliced_loop.append(op)
     self.check_0_op_bytecodes()
Example #36
0
def test_parse_no_namespace():
    parts = split_logs_into_loops(examplelog)
    for part in parts:
        loop = parse(part, no_namespace=True)
Example #37
0
 def parse(self, s, boxkinds=None):
     return parse(s, self.cpu, self.namespace,
                  type_system=self.type_system,
                  boxkinds=boxkinds,
                  invent_fail_descr=self.invent_fail_descr)
Example #38
0
 def parse(self, s, boxkinds=None):
     return parse(s, self.cpu, self.namespace,
                  type_system=self.type_system,
                  boxkinds=boxkinds)
Example #39
0
def main(loopnum, loopfile):
    log = logparser.parse_log_file(loopfile)
    loops = logparser.extract_category(log, "jit-log-opt-")
    inp = loops[loopnum]
    loop = parse(inp, no_namespace=True)
    loop.show()
Example #40
0
def main(loopnum, loopfile):
    log = logparser.parse_log_file(loopfile)
    loops = logparser.extract_category(log, "jit-log-opt-")
    inp = loops[loopnum]
    loop = parse(inp, no_namespace=True)
    loop.show()
Example #41
0
 def parse(self, s, boxkinds=None):
     return parse(s,
                  self.cpu,
                  self.namespace,
                  type_system=self.type_system,
                  boxkinds=boxkinds)
Example #42
0
def test_parse_no_namespace():
    loop = parse(example_loop_log, no_namespace=True)
Example #43
0
def test_parse_no_namespace():
    loop = parse(example_loop_log, no_namespace=True)
Example #44
0
def test_descr_with_obj_print():
    x = '''
    [p0]
    setfield_gc(p0, 1, descr=<SomeDescr>)
    '''
    loop = parse(x)
Example #45
0
def main(loopnum, loopfile):
    data = py.path.local(loopfile).read()
    loops = split_logs_into_loops(data)
    inp = loops[loopnum]
    loop = parse(inp, no_namespace=True)
    loop.show()
Example #46
0
def test_descr_with_obj_print():
    x = '''
    [p0]
    setfield_gc(p0, 1, descr=<SomeDescr>)
    '''
    loop = parse(x)
Example #47
0
def test_parse_no_namespace():
    parts = split_logs_into_loops(examplelog)
    for part in parts:
        loop = parse(part, no_namespace=True)