def __init__(self, cpu, translate_support_code=False): self.cpu = cpu self.verbose = False self.rtyper = cpu.rtyper self.malloc_func_addr = 0 self.malloc_array_func_addr = 0 self.malloc_str_func_addr = 0 self.malloc_unicode_func_addr = 0 self.fail_boxes_int = NonmovableGrowableArraySigned() self.fail_boxes_ptr = NonmovableGrowableArrayGCREF() self.fail_boxes_float = NonmovableGrowableArrayFloat()
def test_nonmovable_growable_array(): ar = NonmovableGrowableArraySigned() adr = ar.get_addr_for_num(10) rffi.cast(rffi.CArrayPtr(lltype.Signed), adr)[0] = 42 assert ar.getitem(10) == 42 ar.setitem(42, 38) adr = ar.get_addr_for_num(42) assert rffi.cast(rffi.CArrayPtr(lltype.Signed), adr)[0] == 38 adr = ar.get_addr_for_num(CHUNK_SIZE + 10) rffi.cast(rffi.CArrayPtr(lltype.Signed), adr)[0] = 42 assert ar.getitem(CHUNK_SIZE + 10) == 42 ar.setitem(CHUNK_SIZE + 42, 38) adr = ar.get_addr_for_num(CHUNK_SIZE + 42) assert rffi.cast(rffi.CArrayPtr(lltype.Signed), adr)[0] == 38 adr = ar.get_addr_for_num(3 * CHUNK_SIZE + 10) rffi.cast(rffi.CArrayPtr(lltype.Signed), adr)[0] = 42 assert ar.getitem(3 * CHUNK_SIZE + 10) == 42 ar.setitem(3 * CHUNK_SIZE + 42, 38) adr = ar.get_addr_for_num(3 * CHUNK_SIZE + 42) assert rffi.cast(rffi.CArrayPtr(lltype.Signed), adr)[0] == 38 ar.setitem(8 * CHUNK_SIZE, 13) assert ar.getitem(8 * CHUNK_SIZE) == 13