コード例 #1
0
    def __init__(self, annotator):
        self.annotator = annotator
        self.lowlevel_ann_policy = LowLevelAnnotatorPolicy(self)
        self.type_system = LowLevelTypeSystem()
        self.reprs = {}
        self._reprs_must_call_setup = []
        self._seen_reprs_must_call_setup = {}
        self._dict_traits = {}
        self.rootclass_repr = RootClassRepr(self)
        self.rootclass_repr.setup()
        self.instance_reprs = {}
        self.type_for_typeptr = {}
        self.pbc_reprs = {}
        self.classes_with_wrapper = {}
        self.wrapper_context = None  # or add an extra arg to convertvar?
        self.classdef_to_pytypeobject = {}
        self.concrete_calltables = {}
        self.cache_dummy_values = {}
        self.lltype2vtable = {}
        self.typererrors = []
        self.typererror_count = 0
        # make the primitive_to_repr constant mapping
        self.primitive_to_repr = {}
        self.isinstance_helpers = {}
        self.exceptiondata = ExceptionData(self)
        self.custom_trace_funcs = []

        try:
            self.seed = int(os.getenv('RTYPERSEED'))
            s = 'Using %d as seed for block shuffling' % self.seed
            self.log.info(s)
        except:
            self.seed = 0
        self.order = None
コード例 #2
0
def test_llop_interp():
    from rpython.rtyper.annlowlevel import LowLevelAnnotatorPolicy

    def llf(x, y):
        return llop.int_add(lltype.Signed, x, y)

    res = interpret(llf, [5, 7], policy=LowLevelAnnotatorPolicy())
    assert res == 12
コード例 #3
0
def test_ptr():
    policy = LowLevelAnnotatorPolicy()
    @signature(types.ptr(rstr.STR), returns=types.none())
    def f(buf):
        pass
    argtype = getsig(f, policy=policy)[0]
    assert isinstance(argtype, SomePtr)
    assert argtype.ll_ptrtype.TO == rstr.STR

    def g():
        f(rstr.mallocstr(10))
    getsig(g, policy=policy)
コード例 #4
0
ファイル: test_rbuiltin.py プロジェクト: zielmicha/pypy
    def test_cast_primitive(self):
        def llf(u):
            return lltype.cast_primitive(lltype.Signed, u)

        res = self.interpret(llf, [r_uint(-1)],
                             policy=LowLevelAnnotatorPolicy())
        assert res == -1
        res = self.interpret(llf, ['x'], policy=LowLevelAnnotatorPolicy())
        assert res == ord('x')

        def llf(v):
            return lltype.cast_primitive(lltype.Unsigned, v)

        res = self.interpret(llf, [-1], policy=LowLevelAnnotatorPolicy())
        assert res == r_uint(-1)
        res = self.interpret(llf, [u'x'], policy=LowLevelAnnotatorPolicy())
        assert res == ord(u'x')
        res = self.interpret(llf, [1.0], policy=LowLevelAnnotatorPolicy())
        assert res == r_uint(1)

        def llf(v):
            return lltype.cast_primitive(lltype.Char, v)

        res = self.interpret(llf, [ord('x')], policy=LowLevelAnnotatorPolicy())
        assert res == 'x'

        def llf(v):
            return lltype.cast_primitive(lltype.UniChar, v)

        res = self.interpret(llf, [ord('x')], policy=LowLevelAnnotatorPolicy())
        assert res == u'x'

        def llf(v):
            return lltype.cast_primitive(rffi.SHORT, v)

        res = self.interpret(llf, [123], policy=LowLevelAnnotatorPolicy())
        assert res == 123

        def llf(v):
            return lltype.cast_primitive(lltype.Signed, v)

        res = self.interpret(llf, [rffi.r_short(123)],
                             policy=LowLevelAnnotatorPolicy())
        assert res == 123
コード例 #5
0
def test_llop_with_voids_interp():
    from rpython.rtyper.annlowlevel import LowLevelAnnotatorPolicy
    S = lltype.GcStruct('S', ('x', lltype.Signed), ('y', lltype.Signed))
    name_y = void('y')

    def llf():
        s = lltype.malloc(S)
        llop.bare_setfield(lltype.Void, s, void('x'), 3)
        llop.bare_setfield(lltype.Void, s, name_y, 2)
        return s.x + s.y

    res = interpret(llf, [], policy=LowLevelAnnotatorPolicy())
    assert res == 5
コード例 #6
0
def test_adtmeths():
    policy = LowLevelAnnotatorPolicy()

    def h_newstruct():
        return lltype.malloc(S)

    S = lltype.GcStruct('s', ('x', lltype.Signed),
                        adtmeths={"h_newstruct": h_newstruct})

    def f():
        return S.h_newstruct()

    s = interpret(f, [], policy=policy)

    assert lltype.typeOf(s) == lltype.Ptr(S)

    def h_alloc(n):
        return lltype.malloc(A, n)

    def h_length(a):
        return len(a)

    A = lltype.GcArray(lltype.Signed,
                       adtmeths={
                           "h_alloc": h_alloc,
                           "h_length": h_length,
                           'flag': True
                       })

    def f():
        return A.h_alloc(10)

    a = interpret(f, [], policy=policy)

    assert lltype.typeOf(a) == lltype.Ptr(A)
    assert len(a) == 10

    def f():
        a = A.h_alloc(10)
        return a.h_length()

    res = interpret(f, [], policy=policy)
    assert res == 10

    def f():
        return A.flag

    res = interpret(f, [], policy=policy)
    assert res
コード例 #7
0
 def specialize__ll_and_arg(pol, *args):
     from rpython.rtyper.annlowlevel import LowLevelAnnotatorPolicy
     return LowLevelAnnotatorPolicy.specialize__ll_and_arg(*args)
コード例 #8
0
 def specialize__ll(pol, *args):
     from rpython.rtyper.annlowlevel import LowLevelAnnotatorPolicy
     return LowLevelAnnotatorPolicy.default_specialize(*args)
コード例 #9
0
ファイル: policy.py プロジェクト: abhinavthomas/pypy
 def specialize__ll_and_arg(pol, *args):
     from rpython.rtyper.annlowlevel import LowLevelAnnotatorPolicy
     return LowLevelAnnotatorPolicy.specialize__ll_and_arg(*args)
コード例 #10
0
ファイル: policy.py プロジェクト: abhinavthomas/pypy
 def specialize__ll(pol, *args):
     from rpython.rtyper.annlowlevel import LowLevelAnnotatorPolicy
     return LowLevelAnnotatorPolicy.default_specialize(*args)