I don't think they can move... value_obj is only used from its assignment to before an allocation. Same goes for base_obj.
Am 15.12.2013 21:50, schrieb Nicholas Clark: > On Sun, Dec 15, 2013 at 05:56:40PM +0000, Nicholas Clark wrote: > >> With this, all NQP tests pass I can build the Rakudo setting, with a nursery >> size of 2048K. >> >> I have now written a script that will attempt to repeatedly recompile that >> far, each time dropping the nursery size by 1K, until something breaks. >> I shall nice it appropriately, and if it still going tomorrow, try again >> with a larger decrement, until something does fail. > Hit at 2047. > > (gdb) where > #0 0x00007ffff7a3360b in mp_copy (a=0x7fffffffd2e0, b=0x7ffff6a91ba8) > at 3rdparty/libtommath/bn_mp_copy.c:30 > #1 0x00007ffff7a2f111 in MVM_bigint_radix (tc=0x6023f0, radix=10, > str=0x7ffff6a983c0, offset=1, flag=2, type=0x1588110) > at src/math/bigintops.c:396 > #2 0x00007ffff79a35ff in MVM_interp_run (tc=0x6023f0, > initial_invoke=0x7ffff7a2fac3 <toplevel_initial_invoke>, > invoke_data=0x6676c0) at src/core/interp.c:1891 > #3 0x00007ffff7a2fbf0 in MVM_vm_run_file (instance=0x602010, > filename=0x7fffffffe7c0 "perl6.moarvm") at src/moar.c:157 > #4 0x0000000000400d2e in main (argc=9, argv=0x7fffffffe4d8) at src/main.c:137 > > b is in fromspace > > Lines 367 onwards of bigintops.c: > > value_obj = MVM_repr_alloc_init(tc, type); > MVM_repr_push_o(tc, result, value_obj); > > value = get_bigint(tc, value_obj); > > base_obj = MVM_repr_alloc_init(tc, type); > MVM_repr_push_o(tc, result, base_obj); > > base = get_bigint(tc, base_obj); > > > > I think that value_obj is getting moved. > I presume that base_obj could get moved too. > > I don't know for sure what the right fix is. > > I see this a few lines earlier, so I assume that something similar is needed > for both value_obj and base_obj, but I'm not sure what the corresponding > unwinding code is: > > /* initialize the object */ > result = MVM_repr_alloc_init(tc, tc->instance->boot_types.BOOTArray); > MVM_gc_root_temp_push(tc, (MVMCollectable **)&result); > > > Nicholas Clark