00:04 MasterDuke joined 02:56 ilbot3 joined 06:37 bisectable6 joined, statisfiable6 joined 06:39 domidumont joined, brrt joined
brrt good * #moarvm 06:39
06:41 jsimonet joined 06:42 wictory[m] joined 06:43 FROGGS joined 06:46 domidumont joined 07:15 brrt1 joined 07:34 bloatable6 joined 07:41 domidumont joined 07:44 brrt joined
Geth MoarVM: 38eb2bdfc5 | (Bart Wiegmans)++ | src/jit/core_templates.expr
[JIT] Add ishash template

Note that the sizeof(ID) == 4, not 8, and so this would naively give rise to a CAST, which isn't implemented yet (although it could be).
07:46
08:13 AlexDaniel joined 08:14 reportable6 joined 08:16 zakharyas joined 08:18 reportable6 joined 08:19 zakharyas joined 08:20 reportable6 joined 08:28 robertle joined 08:38 reportable6 joined, releasable6 joined 08:39 nativecallable6 joined, squashable6 joined 08:48 squashable6 joined, reportable6 joined 09:20 brrt joined 09:30 zakharyas joined 09:35 coverable6 joined 10:01 AlexDaniel joined 12:02 brrt joined
brrt good * 12:11
MasterDuke brrt: that was a simple fix for ishash 12:13
brrt yeah
casting-while-loading is possible, but not yet implemented 12:14
i'd probably best disable that tile entirely
or implement it :-)
MasterDuke if it's implemented, could that template be shortened to what i tried first? 12:16
something like (flagval ...) instead of (if ... (const 0) (const 1)) 12:17
brrt oh, no, that needs some more 12:20
specifically, that needs to be recompiled to the (if .. ) form, because, flagval of ALL is not a thing, this is because ALL is a short-circuiting operator
i maybe should rewrite that to all: 12:21
and 'any:'
and implement my (COND) operator change
MasterDuke rewrite flagval?
brrt yeah, automatically convert (flagval (any ā€¦)) and (flagval (all ā€¦)) to an (if (flagval (any ..)) (const 1) (const 0)) expression 12:22
MasterDuke cool 12:23
Geth MoarVM/spesh-refactor-iffy: e886a98112 | (Bart Wiegmans)++ | src/spesh/optimize.c
[Spesh] remove object boolification from optimize_iffy

Optimiziing object boolification in optimize_iffy is the same as it would be in optimize_istrue_isfalse, so it makes more sense (to me) to have it performed there.
12:25
MoarVM/spesh-refactor-iffy: 97c75fd12b | (Bart Wiegmans)++ | src/spesh/optimize.c
[Spesh] Optimize known values for istrue

Original optimize_iffy tried to optimize for known object values, but we can make optimize_istrue_isfalse do the same thing. Doesn't seem to happen very often, though.
MoarVM/spesh-refactor-iffy: 221d43bb16 | (Bart Wiegmans)++ | src/spesh/optimize.c
[Spesh] optimize more cases of istrue known type

These were implemented for optimize_iffy but not for optimize_istrue_isfalse, even though they are the same kind of boolification.
MasterDuke brrt: btw, is this irclog.perlgeek.de/moarvm/2018-02-07#i_15790891 still what's needed to be done for sp_findmeth? 12:31
brrt lemmecheck 12:33
oh, yes
and the main reason we can't do the invoksih check internally is that then, we don't respect the flushing in the expr template builder
i.e. you could 'hardcode' an invokish check by (guard ā€¦ control_throwish_pre control_invokish) 12:34
and that would *work*, but in the invokish code, we need to ensure that the values in memory are consistent with what the interpreter believes should be in there
i.e.values need 'flushing' 12:35
MasterDuke ah, sounds a little more complicated
brrt currently, if the expr template builder finds a invokish op (at the MoarVM level), it adds the guard itself and executes the flushing
but that won't happen if we don't mark it as invokish and do it ourselves
MasterDuke is the problem with prepargs similar? 12:48
13:45 quotable6 joined 13:49 zakharyas joined 13:51 zakharyas joined
brrt no, prepargs just plain shouldn't be expr-jitted 13:59
MasterDuke brrt: ah, then maybe this comment should be removed/changed somehow? github.com/MoarVM/MoarVM/blob/mast...pr#L89-L93 14:06
brrt no, that is still correct :-)
should maybe be clarified 14:07
MasterDuke the way it reads to me right now is that the prepargs template could be uncommented if templates for arg_* and invoke_* are written, not that it shouldn't be done at all 14:08
brrt ah, yeah 14:09
MasterDuke also, i was trying to think of a good way to organize core_templates.expr. some sort of logical grouping? alphabetically? same order as interp.c? 14:10
brrt hmm 14:11
same order maybe
MasterDuke that's where i was leaning also 14:12
brrt: can i CAST from any representation to another? 14:33
coerce_in is just `(MVMnum64)GET_REG(cur_op, 2).i64`
brrt no, floating point support is NYI 14:37
pending an answer whether I can access floating point (XMM0) registers as easily as the regular register set
cast is only from smaller to larger numbers
MasterDuke ok 14:42
15:29 Kaiepi joined 15:54 AlexDaniel joined 16:11 brrt joined
brrt i'm seeing an error in my patch to iffy 16:13
16:18 brrt1 joined 16:19 brrt joined
Geth MoarVM: MasterDuke17++ created pull request #816:
More templates to the eleventeenth power
16:33
16:37 FROGGS joined 16:50 Kaiepi joined
timotimo MasterDuke: travis seems really rather unhappy about your templates 16:56
MasterDuke `P6opaque: no such attribute '$!clone_callback' on type NQPMu in a NQPMu when trying to bind a value at gen/moar/stage2/NQP.nqp:434 (src/vm/moar/stage0/nqp.moarvm:create_code)` 17:00
never seen that before
17:00 zakharyas joined
MasterDuke works locally on both my laptop and desktop 17:01
17:05 zakharyas joined
timotimo it's probably just exploding on the almost first frame it jits 17:08
MasterDuke ugh, rebuilt moarvm and still nqp and rakudo build fine for me 17:20
timotimo: you mind trying out that branch on your machine? 17:21
17:26 dogbert17 joined 17:47 geospeck joined 18:00 geospeck joined 18:05 geospeck left
MasterDuke .tell brrt travis and appveyor are showing `P6opaque: no such attribute '$!clone_callback' on type NQPMu in a NQPMu when trying to bind a value at gen/moar/stage2/NQP.nqp:434 (src/vm/moar/stage0/nqp.moarvm:create_code)` for github.com/MoarVM/MoarVM/pull/816 18:08
yoleaux MasterDuke: I'll pass your message to brrt.
MasterDuke .tell brrt but i don't get that locally. any thoughts?
yoleaux MasterDuke: I'll pass your message to brrt.
18:12 domidumont joined
timotimo fwiw, it also doesn't crash for me 18:31
MasterDuke huh 18:36
that's good i guess? 18:37
timotimo super weird
nine samcv: haha, I correctly guessed that you submitted your PR to nom instead of master :) Though before I read the commit summaries, I was quite shocked by how many commits there were ;) 19:34
samcv ;)
19:35 releasable6 joined 20:11 domidumont joined 20:20 brrt joined 20:21 Kaiepi joined 20:31 FROGGS joined
brrt . 20:32
yoleaux 18:08Z <MasterDuke> brrt: travis and appveyor are showing `P6opaque: no such attribute '$!clone_callback' on type NQPMu in a NQPMu when trying to bind a value at gen/moar/stage2/NQP.nqp:434 (src/vm/moar/stage0/nqp.moarvm:create_code)` for github.com/MoarVM/MoarVM/pull/816
18:08Z <MasterDuke> brrt: but i don't get that locally. any thoughts?
brrt haven't tried myself
ideally, though, we would bisect that to the breaking template, and then to the breaking frame :-) 20:40
MasterDuke brrt: can we have travis do that somehow? 20:41
brrt dunno 20:42
but i suspect if we know the env that travis runs it in, we'll be able to replicate
MasterDuke ubuntu 14.04, gcc 4.8.4 20:43
i have gcc 7.2.0 locally
but there is 4.8.5 in the repos, i could try installing and testing with that 20:45
brrt oh, that's old 20:47
anyway, just a nitpick
(flagval (nz ...))
that's just the result of whatever was in nz
MasterDuke huh, a moar built with 4.8.5 just compiled nqp fine locally 20:48
so you mean i could drop the flagval?
brrt and the nz 20:49
i think
MasterDuke huh. then could these (e.g., `(template: gt_i (flagval (gt $1 $2)))`) be simplified? 20:50
brrt no, that one couldn't 20:51
MasterDuke and rakudo built fine also
brrt you're still not ubuntu 14.04 though 20:52
the flagval of nz is just the value itself, i mean
MasterDuke wait, why not gt?
brrt gt_i returns an integer
that is its return value 20:53
hence the flagval is needed
the result of (call) to MVM_string_equal is always already an integer :-)
(i see that you have (flagval (zr ...)) so that would be spelled (not ...) 20:54
anyway, doesn't matter that much
MasterDuke ok, good to knwo 20:56
brrt the real reason is that, according to the expr jit type system, gt, lt, le, eq etc, but also 'all' and 'any' return a 'flag' 20:57
which means in practice that they ought to be useable by a conditional operation (like conditional jumps) 20:58
and on x86-64 that they update the 'rflags' register in a predictable way
so they don't return a 'true' value per se
MasterDuke nz and zr do too (at least according to github.com/MoarVM/MoarVM/blob/mast...erview.org ) 20:59
brrt that's why flagval exists, to convert the result into an integer value
MasterDuke btw, any ideas for finding the problem other than spinning up an ubuntu 14.04 vm and if it break in there, running jit-bisect? 21:01
brrt nope, not mee 21:10
me
we can either replicate it or we can't
but we'd probably best not merge it until we can replicate it
21:51 mst joined
MasterDuke yeah, it'll throw off all subsequent travis results 22:10
if nobody has any better ideas soon i'll try and spin up a vm and test there
samcv how do I GC mark an item in a struct? 22:16
See jnthn's comment here github.com/MoarVM/MoarVM/pull/815#...3675573R40
brrt uhm, i'm guessing that means add it to the worklist in the associated REPR's gc_mark function 22:18
samcv hmm i'm not sure where that would be 22:19
lizmat and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2018/03/12/...less-gems/ 22:23
brrt samcv: 6model/reprs/Decoder.c (I'm guessing really) 22:24
lizmat++
22:31 notable6 joined
brrt heh, commenting out the optimize_isconcrete in optimize_istrue_isfalse unbreaks rakudo 22:41
Geth MoarVM/spesh-refactor-iffy: 0b0db780ab | (Bart Wiegmans)++ | src/spesh/optimize.c
[Spesh] unbreak rakudo by not optimizing isconcrete in istrue

This can reduce the isconcrete to a constant value, which is cool, but which seems to break rakudo CORE.setting building under conditions:
MVM_SPESH_OSR_DISABLE=1 MVM_SPESH_INLINE_DISABLE=1 ... (7 more lines)
22:46
brrt that's enough for a day
22:50 nativecallable6 joined, coverable6 joined, greppable6 joined, quotable6 joined 23:15 bisectable6 joined 23:16 squashable6 joined, greppable6 joined, quotable6 joined, greppable6 joined, quotable6 joined, greppable6 joined, quotable6 joined 23:32 brrt joined