• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python typesystem.deref函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中pypy.jit.metainterp.typesystem.deref函数的典型用法代码示例。如果您正苦于以下问题:Python deref函数的具体用法?Python deref怎么用?Python deref使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了deref函数的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: effectinfo_from_writeanalyze

def effectinfo_from_writeanalyze(effects, cpu,
                                 extraeffect=EffectInfo.EF_CAN_RAISE,
                                 oopspecindex=EffectInfo.OS_NONE,
                                 can_invalidate=False):
    from pypy.translator.backendopt.writeanalyze import top_set
    if effects is top_set or extraeffect == EffectInfo.EF_RANDOM_EFFECTS:
        readonly_descrs_fields = None
        readonly_descrs_arrays = None
        write_descrs_fields = None
        write_descrs_arrays = None
        extraeffect = EffectInfo.EF_RANDOM_EFFECTS
    else:
        readonly_descrs_fields = []
        readonly_descrs_arrays = []
        write_descrs_fields = []
        write_descrs_arrays = []

        def add_struct(descrs_fields, (_, T, fieldname)):
            T = deref(T)
            if consider_struct(T, fieldname):
                descr = cpu.fielddescrof(T, fieldname)
                descrs_fields.append(descr)

        def add_array(descrs_arrays, (_, T)):
            ARRAY = deref(T)
            if consider_array(ARRAY):
                descr = cpu.arraydescrof(ARRAY)
                descrs_arrays.append(descr)
开发者ID:Sherlockhlt,项目名称:pypy,代码行数:28,代码来源:effectinfo.py


示例2: builtin_func_for_spec

def builtin_func_for_spec(rtyper, oopspec_name, ll_args, ll_res):
    key = (oopspec_name, tuple(ll_args), ll_res)
    try:
        return rtyper._builtin_func_for_spec_cache[key]
    except (KeyError, AttributeError):
        pass
    args_s = [annmodel.lltype_to_annotation(v) for v in ll_args]
    if "." not in oopspec_name:  # 'newxxx' operations
        LIST_OR_DICT = ll_res
    else:
        LIST_OR_DICT = ll_args[0]
    s_result = annmodel.lltype_to_annotation(ll_res)
    impl = setup_extra_builtin(rtyper, oopspec_name, len(args_s))
    if getattr(impl, "need_result_type", False):
        bk = rtyper.annotator.bookkeeper
        args_s.insert(0, annmodel.SomePBC([bk.getdesc(deref(ll_res))]))
    #
    mixlevelann = MixLevelHelperAnnotator(rtyper)
    c_func = mixlevelann.constfunc(impl, args_s, s_result)
    mixlevelann.finish()
    #
    if not hasattr(rtyper, "_builtin_func_for_spec_cache"):
        rtyper._builtin_func_for_spec_cache = {}
    rtyper._builtin_func_for_spec_cache[key] = (c_func, LIST_OR_DICT)
    #
    return c_func, LIST_OR_DICT
开发者ID:alkorzt,项目名称:pypy,代码行数:26,代码来源:support.py


示例3: test_immutable_subclass_2

 def test_immutable_subclass_2(self):
     from pypy.jit.metainterp.typesystem import deref
     class A(object):
         pass
     class B(A):
         _immutable_ = True
     def f():
         A()
         B().v = 123
         return B()
     t, typer, graph = self.gengraph(f, [])
     B_TYPE = deref(graph.getreturnvar().concretetype)
     assert B_TYPE._hints["immutable"]
开发者ID:ieure,项目名称:pypy,代码行数:13,代码来源:test_rclass.py


示例4: test_immutable_subclass_void

 def test_immutable_subclass_void(self):
     from pypy.jit.metainterp.typesystem import deref
     class A(object):
         pass
     class B(A):
         _immutable_ = True
     def myfunc():
         pass
     def f():
         A().f = myfunc    # it's ok to add Void attributes to A
         B().v = 123       # even though only B is declared _immutable_
         return B()
     t, typer, graph = self.gengraph(f, [])
     B_TYPE = deref(graph.getreturnvar().concretetype)
     assert B_TYPE._hints["immutable"]
开发者ID:ieure,项目名称:pypy,代码行数:15,代码来源:test_rclass.py


示例5: effectinfo_from_writeanalyze

def effectinfo_from_writeanalyze(effects, cpu,
                                 forces_virtual_or_virtualizable=False):
    from pypy.translator.backendopt.writeanalyze import top_set
    if effects is top_set:
        return None
    readonly_descrs_fields = []
    # readonly_descrs_arrays = [] --- not enabled for now
    write_descrs_fields = []
    write_descrs_arrays = []

    def add_struct(descrs_fields, (_, T, fieldname)):
        T = deref(T)
        if consider_struct(T, fieldname):
            descr = cpu.fielddescrof(T, fieldname)
            descrs_fields.append(descr)
开发者ID:alkorzt,项目名称:pypy,代码行数:15,代码来源:effectinfo.py


示例6: effectinfo_from_writeanalyze

def effectinfo_from_writeanalyze(effects, cpu,
                                 extraeffect=EffectInfo.EF_CAN_RAISE,
                                 oopspecindex=EffectInfo.OS_NONE,
                                 can_invalidate=False):
    from pypy.translator.backendopt.writeanalyze import top_set
    if effects is top_set:
        return None
    readonly_descrs_fields = []
    # readonly_descrs_arrays = [] --- not enabled for now
    write_descrs_fields = []
    write_descrs_arrays = []

    def add_struct(descrs_fields, (_, T, fieldname)):
        T = deref(T)
        if consider_struct(T, fieldname):
            descr = cpu.fielddescrof(T, fieldname)
            descrs_fields.append(descr)
开发者ID:ieure,项目名称:pypy,代码行数:17,代码来源:effectinfo.py


示例7: test_immutable_fields

    def test_immutable_fields(self):
        from pypy.jit.metainterp.typesystem import deref
        class A(object):
            _immutable_fields_ = ["x", "y[*]"]

            def __init__(self, x, y):
                self.x = x
                self.y = y

        def f():
            return A(3, [])
        t, typer, graph = self.gengraph(f, [])
        A_TYPE = deref(graph.getreturnvar().concretetype)
        accessor = A_TYPE._hints["immutable_fields"]
        assert accessor.fields == {"inst_x": IR_IMMUTABLE,
                                   "inst_y": IR_IMMUTABLE_ARRAY} or \
               accessor.fields == {"ox": IR_IMMUTABLE,
                                   "oy": IR_IMMUTABLE_ARRAY} # for ootype
开发者ID:ieure,项目名称:pypy,代码行数:18,代码来源:test_rclass.py


示例8: test_immutable_ok_inheritance_2

 def test_immutable_ok_inheritance_2(self):
     from pypy.jit.metainterp.typesystem import deref
     class A(object):
         _immutable_fields_ = ['v']
     class B(A):
         _immutable_ = True
     def f():
         A().v = 123
         B().w = 456
         return B()
     t, typer, graph = self.gengraph(f, [])
     B_TYPE = deref(graph.getreturnvar().concretetype)
     assert B_TYPE._hints["immutable"]
     try:
         A_TYPE = B_TYPE.super
     except AttributeError:
         A_TYPE = B_TYPE._superclass  # for ootype
     accessor = A_TYPE._hints["immutable_fields"]
     assert accessor.fields == {"inst_v": IR_IMMUTABLE} or \
            accessor.fields == {"ov": IR_IMMUTABLE} # for ootype
开发者ID:ieure,项目名称:pypy,代码行数:20,代码来源:test_rclass.py


示例9: add_struct

    from pypy.translator.backendopt.writeanalyze import top_set
    if effects is top_set:
        return None
    readonly_descrs_fields = []
    # readonly_descrs_arrays = [] --- not enabled for now
    write_descrs_fields = []
    write_descrs_arrays = []

    def add_struct(descrs_fields, (_, T, fieldname)):
        T = deref(T)
        if consider_struct(T, fieldname):
            descr = cpu.fielddescrof(T, fieldname)
            descrs_fields.append(descr)

    def add_array(descrs_arrays, (_, T)):
        ARRAY = deref(T)
        if consider_array(ARRAY):
            descr = cpu.arraydescrof(ARRAY)
            descrs_arrays.append(descr)

    for tup in effects:
        if tup[0] == "struct":
            add_struct(write_descrs_fields, tup)
        elif tup[0] == "readstruct":
            tupw = ("struct",) + tup[1:]
            if tupw not in effects:
                add_struct(readonly_descrs_fields, tup)
        elif tup[0] == "array":
            add_array(write_descrs_arrays, tup)
        elif tup[0] == "readarray":
            pass
开发者ID:alkorzt,项目名称:pypy,代码行数:31,代码来源:effectinfo.py


示例10: __init__

    def __init__(self, warmrunnerdesc, VTYPEPTR):
        self.warmrunnerdesc = warmrunnerdesc
        cpu = warmrunnerdesc.cpu
        if cpu.ts.name == 'ootype':
            import py
            py.test.skip("ootype: fix virtualizables")
        self.cpu = cpu
        self.BoxArray = cpu.ts.BoxRef
        #
        while 'virtualizable2_accessor' not in deref(VTYPEPTR)._hints:
            VTYPEPTR = cpu.ts.get_superclass(VTYPEPTR)
        self.VTYPEPTR = VTYPEPTR
        self.VTYPE = VTYPE = deref(VTYPEPTR)
        self.vable_token_descr = cpu.fielddescrof(VTYPE, 'vable_token')
        #
        accessor = VTYPE._hints['virtualizable2_accessor']
        all_fields = accessor.fields
        static_fields = []
        array_fields = []
        for name, tp in all_fields.iteritems():
            if tp == IR_IMMUTABLE_ARRAY:
                array_fields.append(name)
            elif tp == IR_IMMUTABLE:
                static_fields.append(name)
            else:
                raise Exception("unknown type: %s" % tp)
        self.static_fields = static_fields
        self.array_fields = array_fields
        #
        FIELDTYPES = [fieldType(VTYPE, name) for name in static_fields]
        ARRAYITEMTYPES = []
        for name in array_fields:
            ARRAYPTR = fieldType(VTYPE, name)
            ARRAY = deref(ARRAYPTR)
            assert isinstance(ARRAYPTR, (lltype.Ptr, ootype.Array))
            assert isinstance(ARRAY, (lltype.GcArray, ootype.Array))
            ARRAYITEMTYPES.append(arrayItem(ARRAY))
        self.array_descrs = [cpu.arraydescrof(deref(fieldType(VTYPE, name)))
                             for name in array_fields]
        #
        self.num_static_extra_boxes = len(static_fields)
        self.num_arrays = len(array_fields)
        self.static_field_to_extra_box = dict(
            [(name, i) for (i, name) in enumerate(static_fields)])
        self.array_field_counter = dict(
            [(name, i) for (i, name) in enumerate(array_fields)])
        self.static_extra_types = [history.getkind(TYPE)
                                   for TYPE in FIELDTYPES]
        self.arrayitem_extra_types = [history.getkind(ITEM)
                                      for ITEM in ARRAYITEMTYPES]
        self.static_field_descrs = [cpu.fielddescrof(VTYPE, name)
                                    for name in static_fields]
        self.array_field_descrs = [cpu.fielddescrof(VTYPE, name)
                                   for name in array_fields]
        self.static_field_by_descrs = dict(
            [(descr, i) for (i, descr) in enumerate(self.static_field_descrs)])
        self.array_field_by_descrs = dict(
            [(descr, i) for (i, descr) in enumerate(self.array_field_descrs)])
        #
        getlength = cpu.ts.getlength
        getarrayitem = cpu.ts.getarrayitem
        setarrayitem = cpu.ts.setarrayitem
        #
        def read_boxes(cpu, virtualizable):
            assert lltype.typeOf(virtualizable) == llmemory.GCREF
            virtualizable = cast_gcref_to_vtype(virtualizable)
            boxes = []
            for _, fieldname in unroll_static_fields:
                x = getattr(virtualizable, fieldname)
                boxes.append(wrap(cpu, x))
            for _, fieldname in unroll_array_fields:
                lst = getattr(virtualizable, fieldname)
                for i in range(getlength(lst)):
                    boxes.append(wrap(cpu, getarrayitem(lst, i)))
            return boxes
        #
        def write_boxes(virtualizable, boxes):
            virtualizable = cast_gcref_to_vtype(virtualizable)
            i = 0
            for FIELDTYPE, fieldname in unroll_static_fields:
                x = unwrap(FIELDTYPE, boxes[i])
                setattr(virtualizable, fieldname, x)
                i = i + 1
            for ARRAYITEMTYPE, fieldname in unroll_array_fields:
                lst = getattr(virtualizable, fieldname)
                for j in range(getlength(lst)):
                    x = unwrap(ARRAYITEMTYPE, boxes[i])
                    setarrayitem(lst, j, x)
                    i = i + 1
            assert len(boxes) == i + 1
        #
        def write_from_resume_data_partial(virtualizable, reader, numb):
            virtualizable = cast_gcref_to_vtype(virtualizable)
            # Load values from the reader (see resume.py) described by
            # the list of numbers 'nums', and write them in their proper
            # place in the 'virtualizable'.  This works from the end of
            # the list and returns the index in 'nums' of the start of
            # the virtualizable data found, allowing the caller to do
            # further processing with the start of the list.
            i = len(numb.nums) - 1
#.........这里部分代码省略.........
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:101,代码来源:virtualizable.py


示例11: __init__

 def __init__(self, warmrunnerdesc):
     self.warmrunnerdesc = warmrunnerdesc
     jitdriver = warmrunnerdesc.jitdriver
     cpu = warmrunnerdesc.cpu
     self.cpu = cpu
     self.VABLERTI = cpu.ts.get_VABLERTI()
     self.null_vable_rti = cpu.ts.nullptr(deref(self.VABLERTI))
     self.BoxArray = cpu.ts.BoxRef
     #
     assert len(jitdriver.virtualizables) == 1    # for now
     [vname] = jitdriver.virtualizables
     index = len(jitdriver.greens) + jitdriver.reds.index(vname)
     self.index_of_virtualizable = index
     VTYPEPTR = warmrunnerdesc.JIT_ENTER_FUNCTYPE.ARGS[index]
     while 'virtualizable2_accessor' not in deref(VTYPEPTR)._hints:
         VTYPEPTR = cpu.ts.get_superclass(VTYPEPTR)
     self.VTYPEPTR = VTYPEPTR
     self.VTYPE = VTYPE = deref(VTYPEPTR)
     self.null_vable = cpu.ts.nullptr(VTYPE)
     #
     accessor = VTYPE._hints['virtualizable2_accessor']
     all_fields = accessor.fields
     static_fields = []
     array_fields = []
     for name, suffix in all_fields.iteritems():
         if suffix == '[*]':
             array_fields.append(name)
         else:
             static_fields.append(name)
     self.static_fields = static_fields
     self.array_fields = array_fields
     #
     FIELDTYPES = [fieldType(VTYPE, name) for name in static_fields]
     ARRAYITEMTYPES = []
     for name in array_fields:
         ARRAYPTR = fieldType(VTYPE, name)
         ARRAY = deref(ARRAYPTR)
         assert isinstance(ARRAYPTR, (lltype.Ptr, ootype.Array))
         assert isinstance(ARRAY, (lltype.GcArray, ootype.Array))
         ARRAYITEMTYPES.append(arrayItem(ARRAY))
     self.array_descrs = [cpu.arraydescrof(deref(fieldType(VTYPE, name)))
                          for name in array_fields]
     #
     self.num_static_extra_boxes = len(static_fields)
     self.num_arrays = len(array_fields)
     self.static_field_to_extra_box = dict(
         [(name, i) for (i, name) in enumerate(static_fields)])
     self.array_field_counter = dict(
         [(name, i) for (i, name) in enumerate(array_fields)])
     self.static_extra_types = [history.getkind(TYPE)
                                for TYPE in FIELDTYPES]
     self.arrayitem_extra_types = [history.getkind(ITEM)
                                   for ITEM in ARRAYITEMTYPES]
     self.static_field_descrs = [cpu.fielddescrof(VTYPE, name)
                                 for name in static_fields]
     self.array_field_descrs = [cpu.fielddescrof(VTYPE, name)
                                for name in array_fields]
     #
     getlength = cpu.ts.getlength
     getarrayitem = cpu.ts.getarrayitem
     setarrayitem = cpu.ts.setarrayitem
     #
     def read_boxes(cpu, virtualizable):
         boxes = []
         for _, fieldname in unroll_static_fields:
             x = getattr(virtualizable, fieldname)
             boxes.append(wrap(cpu, x))
         for _, fieldname in unroll_array_fields:
             lst = getattr(virtualizable, fieldname)
             for i in range(getlength(lst)):
                 boxes.append(wrap(cpu, getarrayitem(lst, i)))
         return boxes
     #
     def write_boxes(virtualizable, boxes):
         i = 0
         for FIELDTYPE, fieldname in unroll_static_fields:
             x = unwrap(FIELDTYPE, boxes[i])
             setattr(virtualizable, fieldname, x)
             i = i + 1
         for ARRAYITEMTYPE, fieldname in unroll_array_fields:
             lst = getattr(virtualizable, fieldname)
             for j in range(getlength(lst)):
                 x = unwrap(ARRAYITEMTYPE, boxes[i])
                 setarrayitem(lst, j, x)
                 i = i + 1
         assert len(boxes) == i + 1
     #
     def check_boxes(virtualizable, boxes):
         # for debugging
         i = 0
         for FIELDTYPE, fieldname in unroll_static_fields:
             x = unwrap(FIELDTYPE, boxes[i])
             assert getattr(virtualizable, fieldname) == x
             i = i + 1
         for ARRAYITEMTYPE, fieldname in unroll_array_fields:
             lst = getattr(virtualizable, fieldname)
             for j in range(getlength(lst)):
                 x = unwrap(ARRAYITEMTYPE, boxes[i])
                 assert getarrayitem(lst, j) == x
                 i = i + 1
#.........这里部分代码省略.........
开发者ID:enyst,项目名称:plexnet,代码行数:101,代码来源:virtualizable.py



注:本文中的pypy.jit.metainterp.typesystem.deref函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python warmspot.get_stats函数代码示例发布时间:2022-05-27
下一篇:
Python resoperation.ResOperation类代码示例发布时间:2022-05-27
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap