Ejemplo n.º 1
0
def test_reprkeys_dont_clash():
    stup1 = annmodel.SomeTuple((annmodel.SomeFloat(), annmodel.SomeInteger()))
    stup2 = annmodel.SomeTuple((annmodel.SomeString(), annmodel.SomeInteger()))
    rtyper = RPythonTyper(annrpython.RPythonAnnotator(None))
    key1 = rtyper.makekey(stup1)
    key2 = rtyper.makekey(stup2)
    assert key1 != key2
Ejemplo n.º 2
0
 def next(self):
     s_key = self.d.read_key()
     s_value = self.d.read_value()
     if (isinstance(s_key, model.SomeImpossibleValue)
             or isinstance(s_value, model.SomeImpossibleValue)):
         return model.s_ImpossibleValue
     return model.SomeTuple((s_key, s_value))
Ejemplo n.º 3
0
def test_runtime_type_info():
    S = GcStruct('s', ('x', Signed))
    attachRuntimeTypeInfo(S)
    def ll_example(p):
        return (runtime_type_info(p),
                runtime_type_info(p) == getRuntimeTypeInfo(S))

    assert ll_example(malloc(S)) == (getRuntimeTypeInfo(S), True)
    s, t = ll_rtype(ll_example, [annmodel.SomePtr(Ptr(S))])
    assert s == annmodel.SomeTuple([annmodel.SomePtr(Ptr(RuntimeTypeInfo)),
                                    annmodel.SomeBool()])
Ejemplo n.º 4
0
 def _get_rmarshall_support_(self):     # for rlib.rmarshal
     # reduce and recreate stat_result objects from 10-tuples
     # (we ignore the extra values here for simplicity and portability)
     def stat_result_reduce(st):
         return (st[0], st[1], st[2], st[3], st[4],
                 st[5], st[6], st[7], st[8], st[9])
     def stat_result_recreate(tup):
         return make_stat_result(tup + extra_zeroes)
     s_reduced = annmodel.SomeTuple([annmodel.lltype_to_annotation(TYPE)
                                    for name, TYPE in PORTABLE_STAT_FIELDS])
     extra_zeroes = (0,) * (len(STAT_FIELDS) - len(PORTABLE_STAT_FIELDS))
     return s_reduced, stat_result_reduce, stat_result_recreate
Ejemplo n.º 5
0
    def install_marshaller((tag, s_tuple)):
        def dump_tuple(buf, x):
            buf.append(TYPE_TUPLE)
            w_long(buf, len(x))
            for i, itemdumper in unroll_item_dumpers:
                itemdumper(buf, x[i])

        itemdumpers = [get_marshaller(s_item) for s_item in s_tuple.items]
        unroll_item_dumpers = unrolling_iterable(enumerate(itemdumpers))
        dumper_annotations = [
            get_dumper_annotation(itemdumper) for itemdumper in itemdumpers
        ]
        s_general_tuple = annmodel.SomeTuple(dumper_annotations)
        add_dumper(s_general_tuple, dump_tuple)
Ejemplo n.º 6
0
    def __init__(self, rtyper):
        self.rtyper = rtyper
        if rtyper.type_system.name == "lltypesystem":
            self.stat_fields = ll_os_stat.STAT_FIELDS
        else:
            self.stat_fields = ll_os_stat.PORTABLE_STAT_FIELDS

        self.stat_field_indexes = {}
        for i, (name, TYPE) in enumerate(self.stat_fields):
            self.stat_field_indexes[name] = i

        self.s_tuple = annmodel.SomeTuple([
            annmodel.lltype_to_annotation(TYPE)
            for name, TYPE in self.stat_fields
        ])
        self.r_tuple = rtyper.getrepr(self.s_tuple)
        self.lowleveltype = self.r_tuple.lowleveltype
Ejemplo n.º 7
0
 def consider_op_newtuple(self, *args):
     return annmodel.SomeTuple(items=args)
Ejemplo n.º 8
0
 def compute_result_annotation(self, s_gcobject, s_pool):
     from pypy.annotation import model as annmodel
     return annmodel.SomeTuple(
         [s_gcobject, annmodel.SomeExternalObject(GcPool)])
Ejemplo n.º 9
0
                else:
                    FUNCTYPE = ootype.StaticMethod(ARGS, RESULT)
                    sm = ootype._static_meth(FUNCTYPE,
                                             _name=func.__name__,
                                             _callable=func)
                    cfunc = hop.inputconst(FUNCTYPE, sm)
                args_v = hop.inputargs(*hop.args_r)
                return hop.genop('direct_call', [cfunc] + args_v, hop.r_result)


# annotations
from pypy.annotation import model as annmodel

s_ConstOrVar = annmodel.SomePtr(CONSTORVAR)
s_Link = annmodel.SomePtr(LINK)
s_LinkPair = annmodel.SomeTuple([s_Link, s_Link])
s_Block = annmodel.SomePtr(BLOCK)
s_Graph = annmodel.SomePtr(GRAPH)

setannotation(newblock, s_Block)
setannotation(newgraph, s_ConstOrVar)
setannotation(getstartblock, s_Block)
setannotation(geninputarg, s_ConstOrVar)
setannotation(getinputarg, s_ConstOrVar)
setannotation(genop, s_ConstOrVar)
setannotation(gengetsubstruct, s_ConstOrVar)
setannotation(gengetarraysubstruct, s_ConstOrVar)
setannotation(gensetfield, None)
setannotation(gengetfield, s_ConstOrVar)
setannotation(gensetarrayitem, None)
setannotation(gengetarrayitem, s_ConstOrVar)