00:57 patrickz_ joined 00:59 evalable6 joined 02:58 ilbot3 joined 05:06 wander joined 06:04 releasable6 joined, greppable6 joined 06:05 squashable6 joined 06:29 BinGOs joined 07:18 domidumont joined 07:23 domidumont joined 07:27 geospeck joined 07:35 reportable6 joined 08:09 brrt joined 08:25 lizmat joined
brrt good * #moarvm 08:26
09:01 lizmat joined 09:29 brrt joined 09:50 geospeck joined
jnthn morning o/ 09:56
yoleaux 09:38Z <lizmat> jnthn: is there a reason we don't have a nqp::split_s that generates a list_s rather than a list ?
09:40Z <lizmat> jnthn: is there a reason why we don't have a Failure.throw method ?
lizmat jnthn: morning!
nwc10 good *, jnthn
jnthn No split_s simply because at a Perl 6 and NQP level, we expect boxed strings, so may as well just get an appropriate result back right away 09:58
dogbert2 good morning jnthn, nwc10, lizmat and brrt 09:59
lizmat well, I can point at some situations where a list_s would have been nice, e.g. in Str.split
jnthn Str.split is meant to return Str though? 10:00
Well, a bunch of 'em, but still
lizmat yes, it is, but if you're using multiple needles
lizmat checks her reasoning again 10:02
hmmm.... must have been a brainfart I wrote down last night while being offline on the ferry 10:04
second question: re Failure.throw
is there a reason for it not existing ? 10:05
jnthn Lack of need (thus far)? :)
If you want to throw Failures returned into a given lexical scope, there's use fatal, which saves the boilerplate of checking if the thing is a Failure 10:06
brrt good * lizmat, jnthn, nwc10, dogbert2 10:07
jnthn .sink is a letter shorter and also does the job
lizmat no, it's more for internal usage: try something, if it is a Failure, throw the exception of the Failure now
jnthn And that can't be solved by use fatal?
lizmat hmmm.. use fatal in core setting ? 10:08
jnthn Every single try block implicitly has a "use fatal" at the top of it 10:09
And we have a lot of try blocks in the setting ;)
lizmat true
anyways, it looks to me that there are several cases of Failure.throw in the setting, and the only reason that works is that FALLBACK throws 10:10
jnthn hehe :)
I was thinking, won't it already do that anyway :) 10:11
lizmat I know that .sink is one char less, but this is more about readability
jnthn True, otoh, .exception.throw is readable also
But since .throw already works from FALLBACK... :) 10:12
lizmat meh
by that reasoning we could also remove Failure.CALL-ME and Failure.STORE 10:13
jnthn True :) 10:15
Actually it's easier to argue from an introspection angle that an explicit .throw is far more justified than either of those two 10:16
(Since .throw is something you can do on a Failure, while CALL-ME and STORE are things you *can't* do :)) 10:20
lizmat ok
jnthn Anyway, sounds like it's just making explicit something that's already happening 10:21
So no real objections
Other than "there's usually a better way"
dogbert2 are there any easy optimization wins left in MoarVM or will things get horribly difficult from now on? 10:22
lizmat from what I understand, there's a lot of grunt work laying around re JITting stuff 10:23
dogbert2 interesting 10:24
lizmat brrt would know more 10:28
dogbert2 perhaps he's optimizing/JITing as we speak :) 10:29
jnthn There's still plenty of wins to be had; it depends how one defines "easy" :)
dogbert2 say "easier" than the thing you did last week :) 10:30
evalable6 (exit code 1) ===SORRY!=== Error while compiling /tmp/EEl3Ls_Vhi
Two terā€¦
dogbert2, Full output: gist.github.com/2cabbe83d8814e05a3...b1ef208500
dogbert2 heh
jnthn There's easier than that, surely :) 10:33
lizmat jnthn: a Failure.STORE is needed because Failure is Nil and there's a Nil.STORE 10:38
jnthn Ah, ok :) 10:41
brrt hey, yes, many things left to do 11:57
i haven't had much time last few weeks
timotimo brrt: there was a spesh bisect script, wasn't there? i couldn't find one in tools/ and jit-bisect doesn't seem to support spesh limits 12:47
brrt there wasn't a spesh bisect script yet, no
so
seems like a plan to make one
timotimo that'd be nice 12:48
i've got a patch that makes PHI nodes have no more duplicate entries for reads, but it causes -e "say 'hi'" to die with "No exception handler located for catch" :\
brrt well
timotimo looks like that happens at the very end of command_eval, maybe
brrt lemmethink
can we force the spesh limit on the basic block as well? 12:49
anyway
timotimo i don't think we can, but it'd be good enough if it just gave me the frame 12:50
brrt okay
i'll whip something up
timotimo i'm glad, especially since it'd have to be in perl5 which i don't write :)
12:51 Util joined
timotimo i'm now assuming that the problem comes from usage counts not being messed up by wrong phi nodes 12:52
and something gets thrown out as unused code even though it shouldn't have been
12:52 lizmat joined
timotimo also, can't compile nqp with spesh on because it hangs :\ 12:55
found the right spesh limit for t/nqp/003-if-else.t to hang 13:00
it's 34
13:03 geospeck joined
timotimo aha, here's a difference 13:14
now let's see if the difference makes much sense
yeah, it kicks out a sub_i instruction, that can definitely cause a loop to hang 13:16
brrt aha 13:17
13:17 scovit joined
brrt well, if you debug it before i get to finish the script :-P 13:17
13:58 geospeck joined 15:42 geospeck joined 15:52 geospeck joined 16:06 brrt joined 16:23 geospeck joined 16:26 brrt joined 16:28 brrt1 joined
japhb brrt1: ... then you have the script for next time. :-) 16:43
brrt1 :-) 16:45
Geth MoarVM: 0eefa189ae | (Bart Wiegmans)++ | tools/jit-bisect.pl
[Spesh] extend jit-bisect.pl to use MVM_SPESH_LIMIT

Currently no per-basic block granularity, but it should probably help find tricky spesh bugs. Tries to find which combination of inline / osr / JIT disabled still shows the bug.
16:47
17:36 domidumont joined 17:37 domidumont joined
patrickz_ I have a very minimal p6 program using nativecall that fails with a "Bus error". Is the segfaulty nature enough hint to assume it's a MoarVM and not a rakudo bug? 19:30
timotimo not necessarily. is this on a non-x86 system?
bus error is often alignment-related
patrickz_ RPi.
armhf 19:31
timotimo i bet that one's rather susceptible
can you find out where exactly it explodes with gdb or something?
patrickz_ it worked in 2017.08 and failed in 2017.09 onwards
I'll give it a try, hang on
gist.github.com/patzim/631553c16b6...af2714cffc 19:33
timotimo aha, now here's something interesting
patrickz_ My gdb-foo isn't the best. Can I squeeze more out of it?
timotimo can you recompile moarvm to include debug info?
patrickz_ how do I do that (link to docs is fine ;-) 19:34
timotimo how did you build rakudo?
patrickz_ rakudobrew
I'm fine checking it out again
timotimo OK, i believe that lets you do it with a switch
maybe --configure-opts=--moar-option=--debug=3 --configure-opts=--moar-option=--optimize=0 19:35
19:36 unicodable6 joined, bisectable6 joined, committable6 joined
patrickz_ Can I just `./Configure.pl --debug` in ~/.rakudobrew/moar-2017.11/nqp/MoarVM ? 19:37
timotimo almost
you'll have to make sure you pass the right --prefix
you can find that in the Makefile in the first ~30 lines
patrickz_ got it 19:38
timotimo then you'll just need to "make install" in that folder and everything should be finished 19:39
patrickz_ that'll take some time. It's a pi...
timotimo but use --debug=3 and --optimize=0
patrickz_ aww...
timotimo without optimize=0 it'll still not be possible to get the values of the variables you find in there
patrickz_ ./Configure.pl --debug=3 --optimize=0 --prefix=/home/pi/.rakudobrew/moar-2017.11/install --make-install ? 19:40
timotimo not sure if it has --make-install, but yeah, that sounds good
patrickz_ thanks for taking me through this btw! 19:41
timotimo no prob, but i might be AFK for a bit soon :S 19:42
"bt full" can be insightful
patrickz_ updated the gist 19:46
timotimo haha, that feeling when you think "these pointers are fare too short to be correct" 19:47
a "list" would be good to have (so i don't have to check out the right source version) 19:48
patrickz_ list?
timotimo yeah, that's the gdb command
patrickz_ it's there 19:49
timotimo 62 }
that's the line where it explodes
patrickz_ :-P
timotimo cool.
patrickz_ irony?
timotimo yeah; debugging is always fun ;( 19:50
can you also paste the perl6 code?
patrickz_ it's there 19:52
three files :-/
it does need the extra module and NativeCall to fail
timotimo huh, weird, i would have expected double or so to be involved
ok, i'm not sure if it'll work, but can you try "call MVM_dump_backtrace(tc)" in gdb?
patrickz_ done 19:53
timotimo huh, this is happening during compilation actually
patrickz_ Is it worth it finding the commit that causes this? I could try putting a git bisect together... 19:59
20:33 benchable6 joined 20:51 timo joined
timotimo sorry, the server my irc runs on shut down 20:52
patrickz np. Waiting for a build anyways... ;-) 20:58
timotimo i imagine it'd take ages to bisect this :\ 20:59
patrickz moarvm rebilds quite fast actualy 21:00
timotimo right, but along the way between one rakudo version and the next, you'll need to build newer moarvms to fit changes made 21:01
patrickz actually I thought I'd get away with only bisecting moarvm, not rakudo.. 21:05
timotimo not terribly likely to work out all that well
patrickz ages... :-/ 21:10
patrickz is off to bed... 21:16
timotimo good night!
22:52 dogbert17 joined
lizmat and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2017/12/04/...ieventing/ 22:57