github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
samcv AlexDaniel: yeah it's on the list 00:17
will do that now 00:18
AlexDaniel: done 00:21
Geth MoarVM/template-compiler-refactor: b48454011c | (Bart Wiegmans)++ | tools/expr-template-compiler.pl
[JIT] Tighten scope rules

  - Reintroduce lexical scope for let declarations
  - Forbid redeclarations (even inner-scope shadowing), because this is
   currently unhygienic
  - We do allow right-to-left references to declarations in the same let
   scope
... (9 more lines)
06:24
Geth MoarVM: d0e3e0e255 | (Stefan Seifert)++ | src/spesh/facts.c
Truncated known values are also known at spesh time
06:44
brrt \o 06:54
samcv++ for the release
now I'm planning to do some PR cleanup
samcv .tell brrt nice! 07:40
yoleaux samcv: I'll pass your message to brrt.
brrt \o 11:30
yoleaux 07:40Z <samcv> brrt: nice!
Geth MoarVM: 652056de03 | (Bart Wiegmans)++ | src/moar.c
[FSA] Fix use-after-free in cleanup

If we cleanup the main thread (with it's per-thread FSA free list) after cleaning up the FSA itself, that corresponds to a use-after-free, and we should not.
11:33
MoarVM: b217a11526 | (Bart Wiegmans)++ | 8 files
[Spesh] Destroy inlinee after inlining

After we've inlined a graph the inliner claims ownership over the memory of the inlinee. With this patch, we destroy the original graph, which should simplify lifetime management. The memory region list is merged with the inliners graph so that the memory allocated for the inlinee nodes is not freed.
MoarVM: 96b88ebad7 | (Bart Wiegmans)++ | 2 files
[Spesh] Leak fixes

Many allocated things either come from a spesh candidate or from malloc (or realloc). Or they are assigned to a spesh candidate. So the only way to really know if they are shared with a spesh candidate
  (or static frame) is by checking if they are pointer-equal.
ASAN leaksanitizer is finally clean now for me.
brrt I'm of half a mind to implement a 'link' phase in the expr compiler, that would make macro's hygienic
(although I'd have to implement it prior to the macro expansion) 11:35
lizmat is it ok for me to bump Moar / NQP to get the latest goodies ? 13:49
lizmat and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2018/09/03/...y-returns/ 15:37
brrt lizmat: you could, but the list of in-progress PRs is still pretty large 15:43
also, lizmat++ #weekly
lizmat brrt: I have no idea on what can be merged and in which order :-( 15:46
MasterDuke brrt: did you see my recent reply to your comment on github.com/MoarVM/MoarVM/pull/926 ?
brrt I did 15:52
and I replied to it as well :-)
MasterDuke ah, thanks
brrt we'll get to them in due course
MasterDuke brrt: btw, i don't know enough about the jits to know which of timotimo++'s suggestions to implement (in the same PR). do you have a recommendation? 15:55
brrt I'm not 100% sure what timotimo means there, either 16:12
timotimo i thought that ensure_decoder is inlined everywhere in the interpreter 16:16
but we would do a full call into it
brrt ah, i see 16:19
we could do a macro for it 16:20
timotimo right, a piece into emit.dasc 16:22
that could do it, too
BBL 16:25
Geth MoarVM: c49fc88a38 | (Stefan Seifert)++ | 2 files
Fix rw args of JITed calls to JITed native calls

getarg_* are used to read (possibly modified) values back from the args buffer. This is currently done only for native calls (after a nativeinvoke). However the JIT does not emit any code for the corresponding arg_* ops for a nativeinvoke. Instead the values are read directly from the WORK registers and the arg_* ops are only used to mark those registers. This means that there's nothing in the args buffer to read from.
So instead, turn the getarg_* ops into plain set ops and take the value from the original WORK register.
16:34
MasterDuke i might be able to write the template macro, but not somthing for emit.dasc 16:59
brrt: are string literals now supported in templates? 17:00
brrt I think they are, yes 17:49
hmm, my last change to the let declaration binding may require me to change macro application as well.. 17:50
MasterDuke brrt: do i need to use any special syntax for them? 18:40
brrt I think they are supposed to be const_ptr's. 18:41
so something like (const_ptr "foo bar") should work
MasterDuke: also note that the new expression template compiler is a bit more strict than the old one, so there may be things that work now and won't in the future 18:44
MasterDuke brrt: ok, it was just merged, right? 18:45
ugh, "won't in the future", i should read a little more closely... 18:46
brrt we're nearly there :-) 18:47
I merged the spesh leak fixes one 18:50
MasterDuke right. should --full-cleanup work fine now? 18:51
brrt it ought to not crash 18:56
it will still leak
well, hmm
no, that's wrong
it will actually crash
:-) 18:57
you need the fork-safety branch for it not to crash 19:01
MasterDuke brrt: ah, looking forward to that one 19:19
lizmat Q: how difficult would it to make an nqp::ifnull_s() op like nqp::ifnull , but checking for nqp::null_s ? 21:58
it would allow simplification of a lot of methods in Encoding::Decoder::Builtin
also: how difficult would it be to not have nqp::join not choke on nqp::null_s 's in a list_s ? 22:06
*to have
dogbert11 Building 2018.08 on RPi wasn't a fun experience. SEGV's when building nqp and Rakudo. Only way to finish the build was by setting MVM_SPESH_DISABLE=1 22:29
lizmat I'm pretty sure some people here would find the segv's interesting reading material 22:30
in any case, maybe make an issue ?
dogbert11 lizmat it works with spesh enabled but only up to MVM_SPESH_LIMIT=2, if I set it to >2 it SEGV's 22:32
SEGV's always look like this 22:34
Program received signal SIGSEGV, Segmentation fault.
0x76b69bac in MVM_gc_collect_free_nursery_uncopied (tc=tc@entry=0x22668, limit=0x76852ff4) at src/gc/collect.c:607
anyway, I'll make an issue tomorrow
MasterDuke lizmat: ifnull is done in nqp, github.com/perl6/nqp/blob/master/s...nqp#L1009, maybe ifnull_s wouldn't be too hard 22:42