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
|