Home - Summaries: (main) : (py3.11) : Everything - Nightly builds - Benchmarks - RPython - Builders - About

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