Ejemplo n.º 1
0
 def test_new_obj(self):
     from pypy.jit.tl.tlc import interp_eval, InstanceObj, nil
     pool = ConstantPool()
     bytecode = compile("""
         NEW foo,bar
     """, pool)
     obj = interp_eval(bytecode, 0, [nil], pool)
     assert isinstance(obj, InstanceObj)
     assert len(obj.values) == 2
     assert sorted(obj.cls.attributes.keys()) == ['bar', 'foo']
Ejemplo n.º 2
0
def decode_pool(encpool):
    """
    encpool is encoded in this way:

    attr1,attr2,foo=3|attr1,bar=5|...
    attr1,attr2,foo,bar,hello,world,...
    """
    from pypy.jit.tl.tlc import ConstantPool
    if encpool == '':
        return None
    lines = encpool.split('\n')
    assert len(lines) == 2
    encdescrs = lines[0].split('|')
    classdescrs = [decode_descr(enc) for enc in encdescrs]
    strings = lines[1].split(',')
    pool = ConstantPool()
    pool.classdescrs = classdescrs
    pool.strings = strings
    return pool
Ejemplo n.º 3
0
 def test_obj_equality(self):
     from pypy.jit.tl.tlc import interp_eval, nil
     pool = ConstantPool()
     bytecode = compile(
         """
         NEW foo,bar
         NEW foo,bar
         EQ
     """, pool)
     res = interp_eval(bytecode, 0, [nil], pool)
     assert res.int_o() == 0
Ejemplo n.º 4
0
    def compile(self, filename):
        from pypy.jit.tl.tlc import interp_eval, IntObj
        pool = ConstantPool()
        path = py.path.local(__file__).join(filename)
        src = path.read()
        bytecode = compile(src, pool)

        def fn(n):
            obj = IntObj(n)
            res = interp_eval(bytecode, 0, [obj], pool)
            return res.int_o()

        return fn
Ejemplo n.º 5
0
 def test_call_without_return_value(self):
     from pypy.jit.tl.tlc import interp_eval, nil
     pool = ConstantPool()
     bytecode = compile(
         """
         CALL foo
         PUSH 42
         RETURN
     foo:
         RETURN
     """, pool)
     res = interp_eval(bytecode, 0, [nil], pool)
     assert res.int_o() == 42
Ejemplo n.º 6
0
 def test_getattr(self):
     from pypy.jit.tl.tlc import interp_eval, nil
     pool = ConstantPool()
     bytecode = compile(
         """
         NEW foo,bar
         PICK 0
         PUSH 42
         SETATTR bar
         GETATTR bar
     """, pool)
     res = interp_eval(bytecode, 0, [nil], pool)
     assert res.int_o() == 42
Ejemplo n.º 7
0
 def test_setattr(self):
     from pypy.jit.tl.tlc import interp_eval, nil
     pool = ConstantPool()
     bytecode = compile(
         """
         NEW foo,bar
         PICK 0
         PUSH 42
         SETATTR foo
     """, pool)
     obj = interp_eval(bytecode, 0, [nil], pool)
     assert obj.values[0].int_o() == 42
     assert obj.values[1] is nil
Ejemplo n.º 8
0
def test_constant_pool():
    pool = ConstantPool()
    bytecode = compile(
        """
        NEW foo,bar,meth=f
      f:
        RETURN
    """, pool)
    expected = test_tl.list2bytecode([NEW, 0, RETURN])
    assert expected == bytecode
    assert len(pool.classdescrs) == 1
    descr = pool.classdescrs[0]
    assert descr.attributes == ['foo', 'bar']
    assert descr.methods == [('meth', 2)]
Ejemplo n.º 9
0
def test_serialization():
    from pypy.jit.tl.tlopcode import serialize_program, decode_program
    pool = ConstantPool()
    bytecode = compile(
        """
        NEW foo,bar,meth=f
        SETATTR foobar
      f:
        RETURN
    """, pool)
    s = serialize_program(bytecode, pool)
    bytecode2, pool2 = decode_program(s)
    assert bytecode == bytecode2
    assert pool == pool2
Ejemplo n.º 10
0
 def test_obj_truth(self):
     from pypy.jit.tl.tlc import interp_eval, nil
     pool = ConstantPool()
     bytecode = compile(
         """
         NEW foo,bar
         BR_COND true
         PUSH 12
         PUSH 1
         BR_COND exit
     true:
         PUSH 42
     exit:
         RETURN
     """, pool)
     res = interp_eval(bytecode, 0, [nil], pool)
     assert res.int_o() == 42
Ejemplo n.º 11
0
 def test_method(self):
     from pypy.jit.tl.tlc import interp_eval, nil
     pool = ConstantPool()
     bytecode = compile(
         """
         NEW foo,meth=meth
         PICK 0
         PUSH 42
         SETATTR foo
         SEND meth/0
         RETURN
     meth:
         PUSHARG
         GETATTR foo
         RETURN
     """, pool)
     res = interp_eval(bytecode, 0, [nil], pool)
     assert res.int_o() == 42