memory/test/test_hybrid_gc_smallheap.py::TestHybridGCSmallHeap::()::test_llinterp_tuples
self = <rpython.memory.test.test_hybrid_gc_smallheap.TestHybridGCSmallHeap object at 0x7f1819c594d0>
def test_llinterp_tuples(self):
#curr = simulator.current_size
def malloc_a_lot():
i = 0
while i < 10:
i += 1
a = (1, 2, i)
b = [a] * 10
j = 0
while j < 20:
j += 1
b.append((1, j, i))
> self.interpret(malloc_a_lot, [])
memory/test/gc_test_base.py:76:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
memory/test/gc_test_base.py:47: in interpret
return interp.eval_graph(graph, values)
rtyper/llinterp.py:97: in eval_graph
retval = llframe.eval()
rtyper/llinterp.py:295: in eval
nextblock, args = self.eval_block(nextblock)
rtyper/llinterp.py:319: in eval_block
self.eval_operation(op)
rtyper/llinterp.py:422: in eval_operation
retval = ophandler(*vals)
rtyper/llinterp.py:720: in op_malloc
track_allocation=track_allocation)
memory/gcwrapper.py:74: in malloc
addr = self.gc.malloc(typeid, n, zero=zero)
memory/gc/base.py:200: in malloc
contains_weakptr)
memory/gc/generation.py:191: in malloc_fixedsize_clear
result = self.collect_nursery()
memory/gc/generation.py:356: in collect_nursery
self.collect_oldrefs_to_nursery()
memory/gc/generation.py:408: in collect_oldrefs_to_nursery
self.trace_and_drag_out_of_nursery(obj)
memory/gc/generation.py:450: in trace_and_drag_out_of_nursery
self.trace(obj, self.make_callback('_trace_drag_out'), self, None)
memory/gc/base.py:279: in trace
callback(item, arg1, arg2)
memory/gc/base.py:254: in callback
meth(pointer, arg2)
memory/gc/generation.py:454: in _trace_drag_out
pointer.address[0] = self.copy(pointer.address[0])
rtyper/lltypesystem/llmemory.py:685: in __setitem__
self.write_into_ptr(ptr, value)
rtyper/lltypesystem/llmemory.py:725: in write_into_ptr
value = cast_adr_to_ptr(value, TARGETTYPE)
rtyper/lltypesystem/llmemory.py:758: in cast_adr_to_ptr
return adr._cast_to_ptr(EXPECTED_TYPE)
rtyper/lltypesystem/llmemory.py:541: in _cast_to_ptr
return cast_any_ptr(EXPECTED_TYPE, addr.ptr)
rtyper/lltypesystem/llmemory.py:1052: in cast_any_ptr
return lltype.cast_pointer(EXPECTED_TYPE, ptr)
rtyper/lltypesystem/lltype.py:968: in cast_pointer
return ptr._cast_to(PTRTYPE)
rtyper/lltypesystem/lltype.py:1423: in _cast_to
down_or_up = castable(PTRTYPE, CURTYPE)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
PTRTYPE = <* GcStruct tuple3 { item0, item1, item2 }>
CURTYPE = <* GcStruct tuple3 { item0, item1, item2 }>
def castable(PTRTYPE, CURTYPE):
if CURTYPE.TO._gckind != PTRTYPE.TO._gckind:
raise TypeError("cast_pointer() cannot change the gc status: %s to %s"
% (CURTYPE, PTRTYPE))
if CURTYPE == PTRTYPE:
return 0
if (not isinstance(CURTYPE.TO, Struct) or
not isinstance(PTRTYPE.TO, Struct)):
raise InvalidCast(CURTYPE, PTRTYPE)
CURSTRUC = CURTYPE.TO
PTRSTRUC = PTRTYPE.TO
d = _castdepth(CURSTRUC, PTRSTRUC)
if d >= 0:
return d
u = _castdepth(PTRSTRUC, CURSTRUC)
if u == -1:
> raise InvalidCast(CURTYPE, PTRTYPE)
E InvalidCast: (<* GcStruct tuple3 { item0, item1, item2 }>, <* GcStruct tuple3 { item0, item1, item2 }>)
rtyper/lltypesystem/lltype.py:960: InvalidCast
---------- Captured stderr call ----------
[rtyper] specializing: 100 / 151 blocks (66%)
[rtyper] -=- specialized 151 blocks -=-
[rtyper] -=- specialized 4 more blocks -=-
[c58b2d747a0b080] {gc-set-nursery-size
nursery_size = 96
largest_young_fixedsize = 47
largest_young_var_basesize = 23
nursery_scale = 0
[c58b2d747a1b080] {gc-collect
.----------- Full collection ------------------
| used before collection: 0 bytes
| [hybrid] made nonmoving: 0 bytes in 0 objs
| [hyb] gen 2 nonmoving now alive: 0 bytes in 0 objs
| [hyb] gen 2 nonmoving freed: 0 bytes in 0 objs
| used after collection: 0 bytes
| freed: 0 bytes
| size of each semispace: 384 bytes
| fraction of semispace now used: 0.0 %
| number of semispace_collects: 1
`----------------------------------------------
[c58b2d747b2e480] gc-collect}
[c58b2d747b33300] gc-set-nursery-size}
[c58b2d747e97d00] {gc-minor
--- minor collect ---
nursery: <arenaaddr <Arena #4 [384 bytes]> + 0> to <arenaaddr <Arena #4 [384 bytes]> + 96>
collect_oldrefs_to_nursery 0
survived (fraction of the size): 0.583333333333
[c58b2d747ffc200] gc-minor}
[c58b2d7484b6180] {gc-minor
--- minor collect ---
nursery: <arenaaddr <Arena #4 [384 bytes]> + 0> to <arenaaddr <Arena #4 [384 bytes]> + 96>
[llinterp:error] AN ERROR OCCURED: (<* GcStruct tuple3 { item0, item1, item2 }>, <* GcStruct tuple3 { item0, item1, item2 }>)
[llinterp:traceback] malloc_a_lot() rpython.memory.test.gc_test_base
[llinterp:traceback] j_1 = int_add(v172, (1))
[llinterp:traceback] v173 = same_as(b_1)
[llinterp:traceback] E v174 = malloc((GcStruct tuple3), ({'flavor': 'gc'}))
[llinterp:traceback] v175 = setfield(v174, ('item0'), (1))
[llinterp:traceback] v176 = setfield(v174, ('item1'), j_1)
[llinterp:traceback] v177 = setfield(v174, ('item2'), i_9)
[llinterp:traceback] v178 = direct_call((<* fn ll_append__listP...le3Ptr>), v173, v174)
[llinterp:traceback] v255 = int_lt(j_1, (20))
[llinterp:traceback] v256 = same_as(v255)
builder: rpython-linux-x86-64 build #894
test: memory/test/test_hybrid_gc_smallheap/py/TestHybridGCSmallHeap/()/test_llinterp_tuples