00:41 TimToady joined 01:48 colomon joined 01:57 colomon joined 02:41 vendethiel joined 02:48 ilbot3 joined 03:16 colomon joined
konobi seen brrt? 05:07
07:13 FROGGS joined 07:41 domidumont joined 07:46 domidumont joined 08:35 zakharyas joined
timotimo last seen on friday 10:02
10:23 pmurias joined
pmurias when does the MoarVM gc collection activate? 10:23
timotimo when the nursery fills up and a new allocation can't fit into the rest 10:24
individual threads check the "does another thread want to start GCing right now?" state every now and then, too, so that they can join in 10:25
pmurias MVMROOT(tc, obj, block) adds makes the gc see the object while the block is executed? 10:28
timotimo yes 10:32
and "seeing" the object also includes making sure the pointer gets updated on the C stack when the object gets moved by the GC
so you're not looking at out-of-date pointers when an allocation has happened
10:37 pmurias joined
pmurias timotimo: thanks 10:40
timotimo: what's the convention for MVMROOTing arguments to functions that implement ops?
At github.com/MoarVM/MoarVM/blob/mast...ops.c#L986 the arguments are just wrapped in a MVMROOT for one call 10:41
if I'm not doing an allocation it's ok to have untracked objects?
timotimo correct
only allocations can move objects
and if you don't need a pointer any more after an allocation you can let it become invalid; that'll only ever confuse people who are looking at stuff in gdb 10:43
that's an example you might see in bigint ops 10:44
because the bigint body itself (well, the mp_int pointer actually) is allocated by malloc rather than in gc managed memory, you can grab the mp_int out of a big int and the big int object itself will become uninteresting
pmurias MVM_repr_alloc_init(tc, tc->instance->VMString) can do a GC allocation? 10:47
timotimo yes, it will 10:52
you have a patch for us? 10:54
pmurias timotimo: just looking at suspicious things in the way nqp::join and string concatenation works 10:56
timotimo oh
pmurias timotimo: In github.com/MoarVM/MoarVM/blob/mast...ops.c#L406 collapse_strands is called without result being wrapped in MVMROOT 10:57
collapse_strands can call MVM_repr_alloc_init, and result seems to be used when it's used else where 10:59
timotimo ah, yes, that does seem wrong
can you patch it?
good catch! :)
pmurias I can patch it
timotimo i wonder why you're just now the first person to encounter it 11:01
pmurias I'm concatentating (and joining) bazillions of short strings while emitting javascript 11:02
timotimo yeah, but i think the profiler also does that when it emits the final .json
hm. though i'm not 100% sure about that 11:03
i think we changed it to write to the file dierctly?
directly*
pmurias if nqp::join is used it reduces strands
timotimo mhm 11:04
pmurias I'll go afk for a bit to get some late breakfeast and prepare a PR 11:05
timotimo okay. i may be AFK for a bit now
unknown how long that bit's gonna be ...
11:07 brrt joined
lizmat will be monitoring email to merge PR :-) 11:10
timotimo thanks 11:11
brrt konobi: ping 11:20
lizmat: what PR are we discussing? 11:21
lizmat the PR that pmurias will make to fix the nqp::join GC issue 11:22
FROGGS I think the PR is valid except for the libuv change... 12:16
lizmat FROGGS: Travis thinks it's ok? 12:19
lizmat refrains from merging until this is cleared up 12:20
FROGGS lizmat: yes, but why is the libuv submodule touched? this seems to be unintentional
lizmat perhaps pmurias can explain :-) 12:21
FROGGS I commented 12:25
pmurias FROGGS: looking on that, it seems to be accidental 12:29
brrt lemmesee the PR? 12:33
FROGGS brrt: github.com/MoarVM/MoarVM/pull/327 12:40
pmurias I mmade a fresh pull request without the accidental libuv submodule change 12:42
sorry, for that change :/ 12:43
github.com/MoarVM/MoarVM/pull/328
brrt nw :-) 12:49
looks good to me, i guess 12:50
dalek arVM: 45b7c8a | (Pawel Murias)++ | src/strings/ops.c:
Fix a gc bug in string concatenation.

Add a MVMROOT that's needed when concatenating strings that consist of a large amount of strands.
12:52
arVM: 27ccded | FROGGS++ | src/strings/ops.c:
Merge pull request #328 from pmurias/fix-str-concat-bug-fixed

Fix a gc bug in string concatenation.
pmurias not sure if that's the bug that's been harasing me, as I don't have a reliable way to reproduce it
FROGGS pmurias++
your patch is definitely valid because collapse_strands allocs and result is used afterwards 12:53
allocate_strands and copy_strands do not alloc so these are fine
nwc10 is this the only place where collapse_strands() is being used with a missing MVMROOT ? 12:54
I guess one answer is "what do you think?" 12:55
but I don't have time right now to go digging
FROGGS nwc10: yes 12:56
nwc10: it is only used three times, one was already covered by an MVMROOT, and the patch covers the other two
nwc10 cool, thanks for being damn thorough 12:57
please remind me to buy you a beer in Nuremberg
FROGGS *g* 13:04
will do :o)
13:09 virtualsue joined 13:25 domidumont joined 13:35 domidumont joined 13:48 pmurias joined 13:54 zakharyas joined 13:55 pmurias joined 14:02 pmurias_ joined 14:19 zakharyas joined 14:44 pmurias_ joined
brrt gist.github.com/bdw/348619578ffa46d60aca <- my proposal for presenting at FOSDEM 15:01
the tl;dr is that assembly language is not nearly as scary as one might renember 15:03
timotimo oh, we'll have an Inline::ASM? :) 15:04
brrt one day maybe 15:05
i'm talking about using assembly for nativecall
timotimo ah, so you're going to show emit_x64.dasc?
oh, OK
brrt that will probably be a bit more scary than i intend to bring across
just the basics :-) to show that this stuff isn't nearly as scary as one might think 15:06
that gdb just works too
timotimo ah, nice
brrt my running example was actually going to be roman numerals 15:07
timotimo i forgot the magic incantation again to look at the disassembled files moar writes out when oyu have that one env var set ...
could we get that into a comment in the code or a doc/ file?
brrt MVM_BYTECODE_DIR=.
i think that is in the docs
timotimo the name of the env var, sure
brrt oh, you mean the objdump incantation
sure
timotimo objdump, yeah
i had to think hard to remember it's objdump, too ... :P 15:08
virtualsue brrt: looking forward to your talk
brrt yeah, dunno if it'll be accepted :-)
timotimo i'd accept it 15:09
brrt any chance you'll be at FOSDEM this year? 15:22
timotimo not me 15:23
brrt aw... shame
another commonality between perl and asm: both are easily obfuscated
16:12 colomon_ joined 16:36 pmurias joined 17:38 colomon_ joined, pmurias joined
konobi boop 17:52
timotimo loop 17:54
18:05 kjs_ joined, pmurias joined 18:37 vendethiel joined 18:38 domidumont joined 19:12 kjs_ joined 19:16 FROGGS joined 19:50 leont joined 20:24 kjs_ joined 20:29 patrickz joined 20:40 zakharyas joined
dalek arVM: 99571b9 | (Nova Patch)++ | README.markdown:
[readme] declare the supported Unicode version

This is important to clearly display to users and I had a hard time finding it.
I found it in commit 7575ca4b and docs/ChangeLog for 2015.07.
21:17
arVM: 70cf598 | lizmat++ | README.markdown:
Merge pull request #329 from patch/unicode-version

  [readme] declare the supported Unicode version
22:11 colomon joined 22:43 virtualsue joined 23:21 colomon joined