02:03
retupmoca joined
02:47
ilbot3 joined
03:16
xiaomiao joined
03:30
khagan joined
03:44
vendethiel joined
07:28
vendethiel joined
07:41
FROGGS joined
07:58
Ven joined
07:59
Ven joined
08:01
Ven_ joined
08:04
xiaomiao left
08:23
vendethiel joined
|
|||
nwc10 | nine: No idea if this is interesting: morepypy.blogspot.co.at/2016/02/c-a...pdate.html | 08:28 | |
08:29
zakharyas joined
|
|||
nine | nwc10: thanks! Definitely interesting. I wonder why they used to have 4 dictionaries. I seem to get by just fine with a single array | 08:39 | |
09:16
vendethiel joined
09:20
Redaa joined
09:32
Ven joined
10:18
brrt joined
10:45
domidumont joined
11:08
vendethiel joined
11:29
Ven joined
11:55
vendethiel joined
|
|||
dalek | arVM: 24b3867 | (Gerd Pokorra)++ | src/ (3 files): Fix the build when not bundling libtommath. |
12:04 | |
brrt | hey #moarvm | 12:25 | |
nwc10 | hi brrt | 12:26 | |
brrt | i was looking this morning at reinstatint the little 'affordances' in the expr jit that used to be in th per-node compilation code, and that are now partially in the tile-list generation code | ||
reinstating | |||
anyway, i came across COPY, which is basically a register-forcing op | 12:27 | ||
jnthn | o/ brrt | ||
brrt | \o jnthn | ||
moritz | \o * | ||
brrt | the thing is,COPY is ultimately a hint to the register allocator | 12:28 | |
but, the register allocator, is currently still inline | |||
ok, that answers stuff | |||
it does not belong in the tiling | |||
or rather, it belongs as a 'marker' pseudotile | |||
not as a 'doing' pseudotile | |||
ugh, not well thought out | 12:29 | ||
not enough brainspace :-( | 12:32 | ||
12:53
Ven_ joined
13:15
Ven joined
13:30
Ven joined
13:47
brrt joined
13:51
vendethiel joined
|
|||
timotimo | oh, what, that's gerd! | 14:12 | |
or is that not_gerd? | |||
great to see them commit again in any case! | |||
FROGGS | timotimo: not_gerd is gerdr on github | 14:18 | |
timotimo | ah, so it's gerd rather than not_gerd | 14:19 | |
thanks | |||
jnthn | Yeah, patch arrived in my mail this morning :) | 14:20 | |
FROGGS | I still wonder what happened to not_gerd | ||
timotimo | me, too | 14:21 | |
jnthn three, don't know anything there :( | 14:23 | ||
timotimo | also, zoffix seems to be sick or something, and has been gone for many moons | 14:24 | |
jnthn | Yeah...sounds very un-fun | ||
moritz | timotimo: I think he moved, and will regain Internet connection at home in early March | 14:27 | |
and yes, sick before that | |||
jnthn | Ah, so maybe not still sick now... | 14:29 | |
Fingers crossed :) | |||
timotimo | oh | ||
OK | |||
14:32
Ven joined
|
|||
FROGGS | he popped in yesterday or the day before that | 14:36 | |
14:50
vendethiel joined
14:56
Ven joined
15:08
kjs_ joined
15:32
vendethiel joined
17:09
vendethiel joined
17:29
ilbot3 joined
|
|||
flussence | .oO( there's so many awesome people here that at any given time we're always upset one or another isn't around... #perlworldproblems ) |
17:56 | |
18:08
domidumont joined
18:48
FROGGS joined
|
|||
FROGGS | o/ | 18:48 | |
20:03
vendethiel joined
|
|||
FROGGS | jnthn: I think my CArray-in-CPPStruct bug is triggered by a gc run | 20:08 | |
timotimo | ah, so potentially need for a "copy_to" to exist, or be fixed? | 20:10 | |
FROGGS | copy_to would throw here... | 20:13 | |
why would I need it? | |||
timotimo | i don't know | 20:14 | |
isn't that what the gc uses to move stuff around? | |||
i could be wrong, of course | 20:15 | ||
FROGGS | MVM_exception_throw_adhoc(tc, "cloning a CPPStruct is NYI"); | 20:17 | |
timotimo | OK | 20:18 | |
FROGGS | I believe copy_to copies the data to another container | ||
timotimo | it's important to be wrong every now and again | ||
FROGGS | hehe | ||
timotimo | so that people don't rely on everything you blurt out as "accurate" | ||
FROGGS | hmmm, what about jnthn then? | ||
he's probably the only entity thats never wrong on the internet :o) | 20:19 | ||
timotimo | don't forget TimToady's rules | 20:45 | |
FROGGS | troo | 20:46 | |
jnthn | FROGGS: Yeah, copy_to isn't used for copying done by the GC... | 20:55 | |
FROGGS: What symptoms? | |||
The copy is done purely based on the size field in the object header. | 20:56 | ||
FROGGS | things in body->child_objs vanish when I call a C++ method that mutates the C++ mem | 20:57 | |
jnthn | Which *could* be being got wrong, but it's unlikey you'd not see the issue until a GC run then, because you'd have an over-short object. | ||
So it'd be scribbled on by the next allocation. | |||
More common is gc_mark fails to tell the GC about stuff | |||
FROGGS | m: use nqp; nqp::forcegc(); | ||
camelia | rakudo-moar 531495: OUTPUTĀ«===SORRY!===ā¤No registered operation handler for 'forcegc'ā¤Ā» | ||
FROGGS | jnthn: I dont see gc_mark being called at all | 20:58 | |
m: use nqp; nqp::force_gc(); | |||
camelia | ( no output ) | ||
FROGGS | will try that instead of the method call | ||
nice: *** Error in `/home/froggs/dev/nqp/install/bin/moar': free(): invalid pointer: 0x0000000005497808 *** | 20:59 | ||
now gc_mark is called btw | |||
timotimo | whoops, that looks ungood :) | ||
probably something wrote over the thing that you were trying to free there | 21:00 | ||
FROGGS | in MVM_gc_collect_free_nursery_uncopied | ||
#8 gc_free (tc=<optimized out>, obj=0x7ffff67a1078) at src/6model/reprs/CArray.c:132 | |||
timotimo | yeah, that'll be the part that tries to free the object when it's no longer needed | 21:03 | |
i.e. free every pointer that would have been mallocd at some point | 21:04 | ||
FROGGS | but it should not free a CArray at that point, since both CArrays that exist are referenced by the enclosing CPPStruct | 21:05 | |
jnthn | What keeps them alive? | 21:07 | |
FROGGS | this? gist.github.com/FROGGS/94c223c9d26...y-diff-L99 | 21:08 | |
jnthn | MVM_gc_root_temp_push(tc, (MVMCollectable **)&body); | 21:10 | |
That looks dubious | |||
What is body? | |||
FROGGS | MVMCPPStructBody *body | ||
jnthn | Ah | ||
FROGGS | yeah, I thought about that already | ||
jnthn | You can't do that. | ||
You can only root the collectable object iself. | 21:11 | ||
FROGGS | does it actually hurt? | ||
jnthn | *itself | ||
Yes | |||
FROGGS | ohh | ||
jnthn | It'll cause the GC to look at junk memory | ||
And, also, to not update the pointer ;) | |||
FROGGS | okay, I removed it but that wasnt it | ||
jnthn | Yeah, but you're right body will be an issue | 21:12 | |
It will become out of date. | |||
(If you allocate) | |||
Should must be updated | |||
So as not to be hated | |||
...OK, the last line as just to keep rhyming | |||
FROGGS | *g* | 21:13 | |
jnthn | But yeah, body will need to be recalculated from the pointer that is rooted. | ||
FROGGS | same for repr_data I guess | ||
jnthn | No, because repr_data is just a malloc'd piece of memory | ||
Whereas body is a pointer into the middle of a piece of GC-managed memory | |||
If you're seeing stuff being zeroed that's very likely it | 21:14 | ||
Because the old body pointer will be in the middle of a cleared out nursery, most likely | |||
FROGGS | I mean this: MVM_gc_root_temp_push(tc, (MVMCollectable **)&repr_data); | ||
that's still wrong, no? | |||
jnthn | That looks really wrong too :) | ||
FROGGS | k :o) | ||
jnthn | Speicherabzug!! | 21:15 | |
FROGGS | \m/ | ||
jnthn | Makes "Segmentation fault" sound really boring :P | ||
FROGGS | yes, German is slightly less boring than English :o) | 21:18 | |
jnthn wonders what it'd be in Czech... :) | |||
FROGGS | sadly the behaviour does not change | 21:19 | |
jnthn | What did you change to update body? | 21:21 | |
FROGGS | body = OBJECT_BODY(root); | ||
jnthn | Yeah, should be enough | ||
root is in an MVMROOT equivalent, yes? | 21:22 | ||
FROGGS | root is from: static void initialize(MVMThreadContext *tc, MVMSTable *st, MVMObject *root, void *data) { | ||
and I temp_root_push it | |||
jnthn | Yeah, that should be sufficient... | 21:31 | |
hmm | |||
FROGGS | is an STable collectable? | 21:35 | |
jnthn | Yes | ||
FROGGS | gnight | 21:47 |