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

Python llmemory.raw_malloc函数代码示例

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

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



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

示例1: test_simple_access

 def test_simple_access(self):
     AddressStack = get_address_stack()
     addr0 = raw_malloc(llmemory.sizeof(lltype.Signed))
     addr1 = raw_malloc(llmemory.sizeof(lltype.Signed))
     addr2 = raw_malloc(llmemory.sizeof(lltype.Signed))
     ll = AddressStack()
     ll.append(addr0)
     ll.append(addr1)
     ll.append(addr2)
     assert ll.non_empty()
     a = ll.pop()
     assert a == addr2
     assert ll.non_empty()
     a = ll.pop()
     assert a == addr1
     assert ll.non_empty()
     a = ll.pop()
     assert a == addr0
     assert not ll.non_empty()
     ll.append(addr0)
     ll.delete()
     ll = AddressStack()
     ll.append(addr0)
     ll.append(addr1)
     ll.append(addr2)
     ll.append(NULL)
     a = ll.pop()
     assert a == NULL
     ll.delete()
     raw_free(addr2)
     raw_free(addr1)
     raw_free(addr0)
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:32,代码来源:test_support.py


示例2: f

 def f():
     addr = llmemory.raw_malloc(100)
     addr.signed[0] = 12
     (addr + 10).signed[0] = 42
     (addr + 20).char[0] = "a"
     addr1 = llmemory.raw_malloc(100)
     llmemory.raw_memcopy(addr, addr1, 100)
     result = addr1.signed[0] == 12
     result = result and (addr1 + 10).signed[0] == 42
     result = result and (addr1 + 20).char[0] == "a"
     llmemory.raw_free(addr)
     llmemory.raw_free(addr1)
     return result
开发者ID:antoine1fr,项目名称:pygirl,代码行数:13,代码来源:test_lladdresses.py


示例3: malloc_fixedsize

 def malloc_fixedsize(self, typeid16, size, can_collect,
                      has_finalizer=False, contains_weakptr=False):
     if can_collect:
         self.maybe_collect()
     size_gc_header = self.gcheaderbuilder.size_gc_header
     try:
         tot_size = size_gc_header + size
         usage = raw_malloc_usage(tot_size)
         bytes_malloced = ovfcheck(self.bytes_malloced+usage)
         ovfcheck(self.heap_usage + bytes_malloced)
     except OverflowError:
         raise memoryError
     result = raw_malloc(tot_size)
     if not result:
         raise memoryError
     hdr = llmemory.cast_adr_to_ptr(result, self.HDRPTR)
     hdr.typeid16 = typeid16
     hdr.mark = False
     hdr.flags = '\x00'
     if has_finalizer:
         hdr.next = self.malloced_objects_with_finalizer
         self.malloced_objects_with_finalizer = hdr
     elif contains_weakptr:
         hdr.next = self.objects_with_weak_pointers
         self.objects_with_weak_pointers = hdr
     else:
         hdr.next = self.malloced_objects
         self.malloced_objects = hdr
     self.bytes_malloced = bytes_malloced
     result += size_gc_header
     #llop.debug_print(lltype.Void, 'malloc typeid', typeid16,
     #                 '->', llmemory.cast_adr_to_int(result))
     self.write_malloc_statistics(typeid16, tot_size, result, False)
     return llmemory.cast_adr_to_ptr(result, llmemory.GCREF)
开发者ID:alkorzt,项目名称:pypy,代码行数:34,代码来源:marksweep.py


示例4: malloc_varsize_clear

 def malloc_varsize_clear(self, typeid16, length, size, itemsize,
                          offset_to_length, can_collect):
     if can_collect:
         self.maybe_collect()
     size_gc_header = self.gcheaderbuilder.size_gc_header
     try:
         fixsize = size_gc_header + size
         varsize = ovfcheck(itemsize * length)
         tot_size = ovfcheck(fixsize + varsize)
         usage = raw_malloc_usage(tot_size)
         bytes_malloced = ovfcheck(self.bytes_malloced+usage)
         ovfcheck(self.heap_usage + bytes_malloced)
     except OverflowError:
         raise memoryError
     result = raw_malloc(tot_size)
     if not result:
         raise memoryError
     raw_memclear(result, tot_size)        
     (result + size_gc_header + offset_to_length).signed[0] = length
     hdr = llmemory.cast_adr_to_ptr(result, self.HDRPTR)
     hdr.typeid16 = typeid16
     hdr.mark = False
     hdr.flags = '\x00'
     hdr.next = self.malloced_objects
     self.malloced_objects = hdr
     self.bytes_malloced = bytes_malloced
         
     result += size_gc_header
     #llop.debug_print(lltype.Void, 'malloc_varsize length', length,
     #                 'typeid', typeid16,
     #                 '->', llmemory.cast_adr_to_int(result))
     self.write_malloc_statistics(typeid16, tot_size, result, True)
     return llmemory.cast_adr_to_ptr(result, llmemory.GCREF)
开发者ID:alkorzt,项目名称:pypy,代码行数:33,代码来源:marksweep.py


示例5: f

 def f():
     adr = llmemory.raw_malloc(sizeofs)
     s = llmemory.cast_adr_to_ptr(adr, STRUCTPTR)
     s.y = 5 # does not crash
     result = (adr + offsety).signed[0] * 10 + int(offsety < sizeofs)
     llmemory.raw_free(adr)
     return result
开发者ID:AishwaryaKM,项目名称:python-tutorial,代码行数:7,代码来源:test_symbolic.py


示例6: f

 def f():
     addr = raw_malloc(INT_SIZE*100)
     ll = AddressStack()
     ll.append(addr)
     ll.append(addr + INT_SIZE*1)
     ll.append(addr + INT_SIZE*2)
     a = ll.pop()
     res = (a - INT_SIZE*2 == addr)
     a = ll.pop()
     res = res and (a - INT_SIZE*1 == addr)
     res = res and ll.non_empty()
     a = ll.pop()
     res = res and a == addr
     res = res and not ll.non_empty()
     ll.append(addr)
     for i in range(300):
         ll.append(addr + INT_SIZE*i)
     for i in range(299, -1, -1):
         a = ll.pop()
         res = res and (a - INT_SIZE*i == addr)
     for i in range(300):
         ll.append(addr + INT_SIZE*i)
     for i in range(299, -1, -1):
         a = ll.pop()
         res = res and (a - INT_SIZE*i == addr)
     ll.delete()
     ll = AddressStack()
     ll.append(addr)
     ll.append(addr + INT_SIZE*1)
     ll.append(addr + INT_SIZE*2)
     ll.delete()
     raw_free(addr)
     return res
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:33,代码来源:test_support.py


示例7: _emergency_initial_block

 def _emergency_initial_block(self, requested_size):
     # xxx before the GC is fully setup, we might get there.  Hopefully
     # we will only allocate a couple of strings, e.g. in read_from_env().
     # Just allocate them raw and leak them.
     debug_start("gc-initial-block")
     debug_print("leaking", requested_size, "bytes")
     debug_stop("gc-initial-block")
     return llmemory.raw_malloc(requested_size)
开发者ID:junion,项目名称:butlerbot-unstable,代码行数:8,代码来源:markcompact.py


示例8: do_malloc_fixedsize_clear

 def do_malloc_fixedsize_clear(self, RESTYPE, type_id, size, can_collect,
                               has_finalizer, contains_weakptr):
     assert can_collect
     assert not contains_weakptr
     p = llmemory.raw_malloc(size)
     p = llmemory.cast_adr_to_ptr(p, RESTYPE)
     flags = int(has_finalizer) << 16
     tid = llop.combine_ushort(lltype.Signed, type_id, flags)
     self.record.append(("fixedsize", repr(size), tid, p))
     return p
开发者ID:enyst,项目名称:plexnet,代码行数:10,代码来源:test_gc.py


示例9: test_remove

 def test_remove(self):
     AddressStack = get_address_stack()
     addrs = [raw_malloc(llmemory.sizeof(lltype.Signed))
              for i in range(2200)]
     ll = AddressStack()
     for i in range(2200):
         ll.append(addrs[i])
     ll.remove(addrs[-400])
     expected = range(2200)
     del expected[-400]
     expected.reverse()
     for i in expected:
         a = ll.pop()
         assert a == addrs[i]
     assert not ll.non_empty()
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:15,代码来源:test_support.py


示例10: test_big_access

 def test_big_access(self):
     import random
     AddressDeque = get_address_deque(10)
     deque = AddressDeque()
     expected = []
     for i in range(3000):
         assert deque.non_empty() == (len(expected) > 0)
         r = random.random()
         if r < 0.51 and expected:
             x = deque.popleft()
             y = expected.pop(0)
             assert x == y
         else:
             x = raw_malloc(llmemory.sizeof(lltype.Signed))
             deque.append(x)
             expected.append(x)
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:16,代码来源:test_support.py


示例11: test_foreach

    def test_foreach(self):
        AddressStack = get_address_stack()
        addrs = [raw_malloc(llmemory.sizeof(lltype.Signed))
                 for i in range(3000)]
        ll = AddressStack()
        for i in range(3000):
            ll.append(addrs[i])

        seen = []

        def callback(addr, fortytwo):
            assert fortytwo == 42
            seen.append(addr)

        ll.foreach(callback, 42)
        assert seen == addrs or seen[::-1] == addrs   # order not guaranteed
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:16,代码来源:test_support.py


示例12: build_stack_root_iterator

    def build_stack_root_iterator(self):
        xxx
        from pypy.rlib.rstack import stack_capture
        sizeofaddr = llmemory.sizeof(llmemory.Address)
        gcdata = self.gcdata
        captured_frame_holder = llmemory.raw_malloc(sizeofaddr)
        captured_frame_holder.address[0] = llmemory.NULL

        class StackRootIterator:
            _alloc_flavor_ = 'raw'

            def setup_root_stack():
                pass
            setup_root_stack = staticmethod(setup_root_stack)

            need_root_stack = False

            def __init__(self):
                # XXX what should be done with the stack_capture()d frames
                # when we are finished?  what about moving GCs?
                frame = llmemory.cast_ptr_to_adr(stack_capture())
                self.static_current = gcdata.static_root_start
                captured_frame_holder.address[0] = frame
                self.finished = False

            def pop(self):
                while self.static_current != gcdata.static_root_end:
                    result = self.static_current
                    self.static_current += sizeofaddr
                    if result.address[0].address[0] != llmemory.NULL:
                        return result.address[0]
                if not self.finished:
                    self.finished = True
                    return captured_frame_holder
                return llmemory.NULL

        return StackRootIterator
开发者ID:antoine1fr,项目名称:pygirl,代码行数:37,代码来源:stacklessframework.py


示例13: __init__

 def __init__(self):
     self.addr = llmemory.raw_malloc(SIZE)
开发者ID:antoine1fr,项目名称:pygirl,代码行数:2,代码来源:test_malloc.py


示例14: allocate_external_object

 def allocate_external_object(self, totalsize):
     # XXX maybe we should use arena_malloc() above a certain size?
     # If so, we'd also use arena_reset() in malloc_varsize_marknsweep().
     return llmemory.raw_malloc(totalsize)
开发者ID:ieure,项目名称:pypy,代码行数:4,代码来源:hybrid.py


示例15: op_raw_malloc

 def op_raw_malloc(self, size):
     assert lltype.typeOf(size) == lltype.Signed
     return llmemory.raw_malloc(size)
开发者ID:AishwaryaKM,项目名称:python-tutorial,代码行数:3,代码来源:llinterp.py


示例16: allocate_stack

 def allocate_stack(self):
     result = llmemory.raw_malloc(self.rootstacksize)
     if result:
         llmemory.raw_memclear(result, self.rootstacksize)
     return result
开发者ID:AishwaryaKM,项目名称:python-tutorial,代码行数:5,代码来源:framework.py


示例17: complex_struct

 def complex_struct():
     adr = llmemory.raw_malloc(sizeofsbase)
     s = llmemory.cast_adr_to_ptr(adr, SBASEPTR)
     s.b.s2.a = 42
     return (adr + offset_toa).signed[0]
开发者ID:antoine1fr,项目名称:pygirl,代码行数:5,代码来源:test_symbolic.py


示例18: _malloc

 def _malloc(self, type_id, size):
     tid = llop.combine_ushort(lltype.Signed, type_id, 0)
     x = llmemory.raw_malloc(self.gcheaderbuilder.size_gc_header + size)
     x += self.gcheaderbuilder.size_gc_header
     return x, tid
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:5,代码来源:test_gc.py


示例19: setup_root_walker

 def setup_root_walker(self):
     stackbase = llmemory.raw_malloc(self.rootstacksize)
     ll_assert(bool(stackbase), "could not allocate root stack")
     llmemory.raw_memclear(stackbase, self.rootstacksize)
     self.gcdata.root_stack_top  = stackbase
     self.gcdata.root_stack_base = stackbase
开发者ID:antoine1fr,项目名称:pygirl,代码行数:6,代码来源:framework.py


示例20: llimpl_arena_malloc

def llimpl_arena_malloc(nbytes, zero):
    addr = llmemory.raw_malloc(nbytes)
    if zero and bool(addr):
        clear_large_memory_chunk(addr, nbytes)
    return addr
开发者ID:alkorzt,项目名称:pypy,代码行数:5,代码来源:llarena.py



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
Python llmemory.raw_malloc_usage函数代码示例发布时间:2022-05-27
下一篇:
Python llmemory.offsetof函数代码示例发布时间: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