timotimo i wonder how come we've gotten faster at the rational benchmarks 00:04
rat_mul_div_cancel
it's interesting that we get improvements across the board 00:06
00:06 raiph joined
jnthn Could be that it inlines something now it hadn't used to 00:06
timotimo ah, good point 00:07
jnthn Time for some rest here :)
'night
01:07 FROGGS__ joined 03:10 raiph joined 06:06 FROGGS__ joined 07:10 ventica joined 08:35 ventica2 joined 10:11 brrt joined
brrt \o 10:11
i can't pretty well figure out how to build moar on windows-64 10:14
i do have the visual studio tools installed and Configure.pl does recognise the toolchain, but probe.pm crashes for some reason 10:16
brrt afk for a bit 10:19
10:25 carlin_ joined, tgt joined
carlin brrt: have you run vcvarsall.bat in the VC directory? 10:27
FROGGS either that or use the developer console 10:49
11:00 Ven joined
jnthn brrt: How does it crash? 11:41
12:25 raiph joined 12:27 Ven joined 12:42 tgt joined 13:10 brrt joined 13:12 brrt left 13:13 brrt_ joined
brrt_ oh, after a reboot it apparantly all works 13:14
jnthn Such Windows... :P
brrt yes, such windows indeed 13:16
or you know, not, apparantly i don't have winsock.h
jnthn ...what... 13:17
Try vcvars64.bat 13:18
brrt ok, how do i include that?
jnthn jsut run it
as a command
Should set uip various envvars
brrt uh, let's see
jnthn What are you running this all at, though? Normal command prompt? 13:19
There's a Visual Studio Command Prompt you are given normally
Which has stuff set up
brrt well, i tried the normal command prompt + finding some vcvars, but now i run via the visual studio command prompt
and i'm using the 'x64 cross compiler' because the
'regular' command prompt only has x86 support
apparantly MS is all hot on x86 again, mostly because pointers are half the size 13:20
jnthn wtf... 13:21
brrt that was my reaction as well
jnthn You don't have a native 64-bit one? 13:22
brrt i've installed just visual studio express 2013
and it contains the 'microsoft optimizing compiler for x64' but only as part of a 'cross compiler toolchain
well, the regular 'native' toolchain basically has the same problem: can't compile libuv (it seems) because I don't have the winsock headers 13:25
oh, i installed visual studio express for windows btw, not the for web version
jnthn Maybe missing Windows SDK, somehow? www.microsoft.com/en-us/download/de...px?id=8279 13:26
brrt probably
i'm downloading that now
i'm mildly pleasantly surprised by the whole windows system 13:30
jnthn ;) 13:31
FROGGS brrt: yes, windows 7+ in combination with visual studio is kinda pleasing :o)
brrt :-) 13:34
although i /still/ can't compile it
i'm going to restart and see if that does anything
carlin just keep restarting until it works 13:36
jnthn works on a Moar thing timo has been asking for for ages... :)
13:43 Juerd joined 14:25 Ven joined 14:31 lizmat joined 14:37 woolfy joined 14:44 brrt joined
dalek arVM: 50640b8 | jnthn++ | src/ (4 files):
Allow us to add temporaries when optimizing.

Some optimizations we wish to do will need an extra temporary register to store something in. This patch enables us to have such registers. It also provides an acquire/release model so we can re-use these temporaries, minimizing the number we need to add.
14:44
arVM: beca0b2 | jnthn++ | src/spesh/args.c:
Specialize unboxing of incoming object args.
15:18 daxim joined
timotimo i don't thoroughly understand the code you added; did we previously bail out if we would have had to unbox an int/num/str from a passed argument? 15:56
but now i understand how we do the temp register stuff :) 15:57
jnthn timotimo: yes, we bailed 16:01
timotimo: I've got code for the boxed case locally
timotimo cool :)
more spesh stuff
we don't have a bail-log-like thing for spesh, aye?
jnthn Well, it wasn't a total bail 16:02
More like "don't spesh the args at all" bail
timotimo ah
that's harder tolog of course
jnthn Yeah
The boxed case transform works, but something doesn't get the number of locals correct somewhere, somehow... 16:03
So we get SEGV at some point in GC marking
Well, dinner...bbiab
timotimo bon appetit :)
optimize_can_op is still commented; i wonder if we can figure out what's wrong with it by now 16:16
maybe having to bail a lot less will let us find the error more often
now that we have the SSA form, wouldn't it be easy-ish to figure out when a local is read for the very last time and then re-use the local, so that we get smaller frames as well as considering objects un-used (for GC purposes) earlier? 16:22
16:33 Ven joined
timotimo should i look into optimizing iffy when the type is known so it'll become an unbox_i/unbox_s/unbox_n/... plus an if_i/unless_i? 16:35
sounds strenuous :\ 16:36
feeling pretty drained from my ear infection adventures tbh :|
FROGGS :/ 16:37
jnthn timotimo: Yes, if_o and unless_o and istrue/isfalse can be optimized in taht kinda way 16:39
timotimo i suppose if i just take it slow, i'll be fine 16:40
which do you think is the juicier target?
jnthn if_o/unless_o are likely the easier ones 16:41
timotimo OK
jnthn uh
harder ones
but also more common
timotimo of course %)
jnthn some istrue you can do without an extra reg anyway 16:42
istrue_I for bigint spec for example
timotimo right, unbox_i for example should work
ah, there's already an istrue optimization in there
i can probably extend that to cover isfalse and put a negation in there in those cases 16:43
that ought to be simple-ish if i specify a register to put the result into and if it's isfalse, i just set that to an allocated temp register 16:44
actually, that part is already in there 16:45
but it just re-uses the existing register so far
jnthn grmbl 17:08
Fixed various places with badass umptions with regard to locals only growing if we inline, and it still gets the frame size wrong... 17:09
timotimo d'oh (:
:(
17:14 btyler joined
jnthn duh 17:17
I was asking for a temp reg of the wrong type 17:18
timotimo oops :)
jnthn hm, it can inline some things now it couldn't before also :) 17:21
japhb Started backlogging this channel ... I see you ran afoul of the bugs in the charrange benchmarks. Did you work those out already, or do I need to fix them? 17:25
timotimo "the bugs"? you know of them? 17:27
i didn't quite know what exactly happened there 17:28
the graph does look very weird
maybe it's just that the new implementation is just so ridiculously much better now than it was before
japhb timotimo: FROGGS committed without testing, because I convinced him to share his WIP, but I forgot to tell him to mark them disabled if he didn't think they would work. And I noticed the problem just before getting rather sick in a way that made computer use cause vertigo, so I didn't push a fix. 17:30
timotimo yikes
japhb So I'll look at it today and see what I can do.
timotimo did you see the graph? 17:31
17:31 raiph joined
timotimo i definitely like the performance scoring thingie 17:31
and the commandline comparison thingie is also much nicer than i thought
japhb No, I haven't seen the graph yet 17:32
link?
timotimo t.h8.lv/p6bench/2014-07-27-long-time-rakudo.html 17:33
japhb "commandline comparison thingie"?
timotimo the output you get with "compare" without a --format argument 17:34
with the scoring at the bottom
dalek arVM: 5835e19 | jnthn++ | src/ (3 files):
Cope with locals resizing without inlining.

In a few places we assumed only inlining could do this. That's not true any more, however, now that we have the ability to add extra temporaries.
17:37
arVM: 3827560 | jnthn++ | src/spesh/args.c:
Specialize boxing of args also.
japhb Oh, yes. That's a rather unappreciated feature, methinks. :-)
timotimo jnthn: should i be putting any energy/thought into making frames re-use their "registers" if they can? 17:39
17:40 woolfy joined
jnthn timotimo: I'm worried that will be rather fragile 17:40
timotimo fair enough
i suppose the jit will be doing a good job with that anyway when we have proper register allocation?
jnthn Well, also we're relatively good about register use in initial code-gen anyway 17:42
timotimo oh? i didn't know that
i thought we were just throwing them around like they cost nothing at all :)
jnthn No; we release them as soon as we don't need them 17:43
timotimo okay, so that's already pretty good
jnthn If you look at any sizable piece of code in spesh you'll see there's a lot of versions per variable.
And many of them come from the fact that it's re-using relatively well during code-gen.
japhb Gah, system acting weird, looks like I'll be rebooting. :-(
timotimo i haven't looked at non-spesh'd code dumps in a long time, i think 17:44
i think it's time for a nap :S 17:46
jnthn Hope you'll be feeling better soon. 17:47
timotimo me, too :)
this is mostly about catching up on sleep, as i had none last night
and then it'll be time to take another round of meds, so i'll probably feel all right tonight :)
jnthn :) 17:48
carlin does it matter that moar segfaults doing open('a_directory').lines on OpenBSD, since it's not supposed to be valid anyway? 17:51
here's a backtrace anyway: gist.github.com/carbin/bb85811a95404d87861a 17:52
17:54 woolfy left
jnthn It really shouldn't SEGV 17:54
18:06 woolfy joined, woolfy left 18:08 japhb joined 18:13 raiph joined
dalek arVM: 0e1d782 | jnthn++ | src/spesh/args.c:
Specialize boxing of named args.
18:14
arVM: 78cdd80 | jnthn++ | src/spesh/args.c:
Specialize unboxing of named args.
18:33
jnthn Well, that nails all the permutations. :)
18:58 colomon joined
[Coke] ff 18:58
18:59 Ven joined
timotimo and now we inline all the frames forever? :) 19:24
jnthn Well, it stops things like need to box/unbox from keeping us from inlining at least. 19:28
Why the heck is infix:<eq>'s proto use the slow path binder... 19:31
timotimo how can you find that out? 19:32
jnthn oh...it's on a bind error 19:34
Well, I was looking into the palindrome RC thing
timotimo ah, ok 19:35
jnthn To see why it deopted a lot
And found it spent a load of time in the slow-path binder
oh 19:38
It's junction fallback
And unbase has an optimizable (so far) Junction 19:39
timotimo last time i looked, i didn't even understand what unbase is supposed to do
ah, if we rewrite that to the form with | between " " strings, it would turn into a sequence of || operators 19:41
would you like to do that?
or like me to do that, i suppose
jnthn That's an option, yeah.
Well, there's another option
Which is to realize any is being given a Parcel of literals.
timotimo mhm
jnthn Which would be a more general improvement 19:42
timotimo yes, it would
jnthn Anyway, I just looked at ff.p6, one of our slowest benchmarks
And step does this:
for ^$!height X ^$!width -> $i, $j {
19:42 brrt joined
jnthn And on the inside 19:42
brrt \o #moarvm
jnthn any(@!neighbors[$i][$j]) === Burning
timotimo o/ brrt
jnthn At some point
hi brrt 19:43
brrt btw, it may be obvious now, but i'm not on a holiday after all :-)
timotimo aaw :(
brrt Ā­it's ok :-)
jnthn I couldn't tell if it was that or you just missed hacking while on holiday :) 19:44
timotimo jnthn: is there something about that that could be optimized?
brrt well, both would've been plausible, but I wouldn't have had the computer with me 19:45
fwiw, I can now finally build moar \o/
(on windows, that is)
timotimo for ^number X ^othernumber -> $a, $b could surely be turned into a loop in a loop, if we're careful with redo/continue/last/...
jnthn timotimo: That ain't my point
carlin brrt: how many restarts did it require? :p
brrt the secret is installing visual studio for windows desktop rather than any visual studio for windows
jnthn My point is that every step does 100+ runs through the slow binder
brrt too many :-)
timotimo your point is "damnit! why are junctions so slow!"
jnthn Well, my point is that this might be *why* Junctions are so slow 19:46
timotimo can we somehow get junctions to not go through the slow binder?
jnthn Well, I am starting to wonder why they do it every single time
timotimo spesh could know there's a junction there that ought to be autothreaded and not go through the binder instead 19:47
jnthn We should be installing a junction dispatcher in the multi cache that skips all of this...I thought, anyway.
timotimo that would certainly improve this specific kind of problem
jnthn oh, but wait...
Hmmm
That'll never happen, will it. 19:48
'cus we auto-thread on the proto
timotimo doesn't know :\ 19:49
jnthn So we never end up multi-dispatching on a Junction itself
19:49 brrt left 19:50 brrt joined
timotimo it's kinda bad our primitive for checking if something is in a list is going through junctions 19:51
brrt anyway, now i'm wondering how to make moarvm run nqp
19:51 raiph joined
jnthn brrt: git clone nqp, and then perl Configure.pl --backend=moar --prefix=c:\path\to\moar\install 19:52
brrt aha, i see
timotimo maybe we could have a simple implementation of any that takes list, operator, comparison and does the comparison directly
that could maybe even be in-lined
20:24 ilbot3 joined 20:41 zakharyas joined 20:52 ventica2 joined
brrt windows debugger is weird 20:52
21:09 ggoebel111118 joined
brrt afk 21:23
timotimo hah,i hoped by napping i'd see another cool piece of work done by jnthn %) 22:25
jnthn does have something in the works 22:27
timotimo nap driven development ... 22:30
carlin like coding in your sleep
dalek arVM: 0513b67 | jnthn++ | lib/MAST/Nodes.nqp:
Some MAST::Nodes optimizations.

Provide a way to construct MAST::[Ext]Op faster when we already have an array of operands, and sprinkle a few native types.
22:46
[Coke] the uniq.t spec test failures are a segv. 23:11
jnthn Hmm 23:14
Odd...passes here. :S
If we're lucky somebody with ASAN might provide a useful report.
[Coke] I can get you a backtrace, but it's about 100 lines to get a reproducable segv 23:17
running moar thru lldb is a pita 23:34
timotimo jnthn: running benchmarks with the new changes now :) 23:35
[Coke] oh, wait, it's easy as pie: 23:38
gist.github.com/coke/42dc068d6845f5b5a240
timotimo Failed to run command: install/bin/perl6 --optimize=3 -e "\c[2694536175]" ~~ /<[\c0..\c[2694536175]]>/ 23:44
haha
unicode doesn't actually have enough characters yet %)