def test_free(): h = Heap() addr1, block1, c1ptr = allocate_raw(h, 5) addr2, block2, c2ptr = allocate_raw(h, 5) assert len(h._arenas) == 1 h.free(block2) addr3, block2, c2ptr = allocate_raw(h, 5) # Blocks get merged when free'd so that align blocks assert addr3 == addr2
def execute(context, plan, symbols): """ Takes a list of of instructions from the Pipeline and then allocates the necessary memory needed for the intermediates are temporaries """ h = Heap() ret = None for instruction in plan: ops = [symbols[sym] for sym in symbols] dds = [op.asbuflist() for op in ops] dss = [op.datashape() for op in ops] if instruction.lhs: h.allocate(instruction.lhs.size()) ret = instruction(dds, dss) else: instruction(dds, dss) h.finalize() return ret
def test_iopro(): # this is kind of stupid right now because it does a copy, # but Tight IOPro integration will be a priority... h = Heap() s = StringIO(','.join(letters)) data = iopro.genfromtxt(s, dtype='c', delimiter=",") addr, block = allocate_numpy(h, data.dtype, data.shape) block[:] = data[:] assert not block.flags['OWNDATA'] assert block.ctypes.data == addr assert len(h._arenas) == 1 assert block.nbytes < h._lengths[0] finalize(h)
def test_malloc(): h = Heap() _, block, _ = allocate_raw(h, 1000)