00:57 btyler joined 01:13 FROGGS_ joined 01:38 woosley joined 02:50 daxim joined
japhb brrt: I've actually been begging for a way to reinterpret 32 or 64 bits between integer and floating point forms (as a fast way of converting floats to and from network-serialized form), so if you get that as a side effect, I won't complain. :-) 02:58
Also, on Intel processors (since the 8087 days), the floating point registers are 80 bits wide ("long double" form) to prevent (or rather, reduce the probability of) certain types of precision losses during extended calculations. 03:02
You *can* store the long doubles to RAM, but generally they're just used internally to a single calculation and then the result stored in 64-bit double form. 03:03
You would need to store the extended form to RAM if you had to spill registers during the middle of a calculation when the programmer was expecting to stay in high-precision form. 03:05
03:16 daxim joined 03:48 benabik joined 05:52 cognominal joined 06:53 FROGGS_ joined 07:03 zakharyas joined
jnthn moarning o- 07:08
nwc10 good *
jnthn eww, what keyboard layout...
nwc10 You're not in Sweden? 07:09
jnthn yeah...it was the Swedish one :)
nwc10 oh, so your keyboard has flipped layout? PEIK, not PEBKAC? 07:10
FROGGS_ moarning oß 07:12
jnthn No, just me not remembering I'm on a machine where they put images on taht default that way
oh joy, my presentation gadget has a flat battery
yay, new batteries. :) 07:14
It may be a good idea to bump NQP_REVISION and MOAR_REVISION, btw 07:17
So we get some testing on latest
Also, if anybould could check Panda builds OK on non-Windows on latest of everything that'd be great.
(I tried it yesterday on almost-HEAD on Windows and modulo a Panda patch we need on Windows, it worked well) 07:18
(Panda patch is backend-independent.)
jnthn is teaching for the day but has evening tuits :)
FROGGS_ \o/ 07:19
I can check panda later
jnthn ok 07:29
teaching &
08:00 krunen joined 09:23 oetiker joined
lizmat am going to bump revisions now, ok? 09:51
revisions bumped 10:12
10:45 jnthn joined 10:52 odc joined 11:27 brrt joined
brrt \o #moarvm 11:27
lizmat brrt o/ 11:36
brrt how's it there? still in france?
lizmat no, back in Echt for now 11:37
brrt really? (ha ha) 11:38
well, how was france, then? :-) 11:39
lizmat apart from the bombing of a bar, nothing much happened while we were away
well, the same more or less
tadzik bombing of a bar? :o
lizmat we've been to the Cite des Sciences many times already
two motorgangs are disputing the territory here 11:40
they've been thrown out of Germany, and are now trying to set up "shop" here
brrt annoying 11:41
lizmat yeah, but as long as they're not gunning each other down with machine guns, it's just that
spurious S17 errors did not seem to have disappeared :-( 12:02
*do
FROGGS_ perhaps somebody needs to fix 'em? 12:11
that is usually what somebody does with errors :o)
lizmat wish I had the know-how to 12:12
not something I can do about it at the rakudo level :-(
brrt what are the s17 crashes about? 12:14
locking, right?
brrt finds concurrency fun 12:15
lizmat afaik, from talking with jnthn, some kind of memory corruption that happens under stress
brrt things we should have something like the go race detector 12:18
nwc10 brrt: have you played with helgrind? Does it acchieve that?
brrt have never, no 12:20
my debug toolbox is basically gdb and since recently, valgind
(and printf, of course :-)) 12:21
13:11 jnap joined 13:23 flaviusb joined
jnthn wonders what nice JIT commits brrt++ will land today :) 13:35
lizmat: Thanks for the bump.
brrt is a bit preoccupied in fact :-)
i was thinking of doing the branching stuff today 13:36
or at least
the labeling-of-basic blocks
lizmat FWIW, spectest CPU usage seems to have gone down from ~1544 to ~1483 13:37
timotimo that could be inline landing? 13:39
13:42 FROGGS_ joined
brrt conditional branches, fwiw, are awkward 13:42
FROGGS_ lizmat: you are right of course # META6.json 13:43
err, ww
moritz are there non-conditional branches?
brrt in that moarvm expects you to put the result of a compare into a register - ok - and then to use the boolean result of said register to jump
and that is all possible
but the 'normal' way to do it is to compare, and then jump directly on basis of the flags register 13:44
that said, its not particularly hard to do it as i described, just very roundabout
jnthn brrt: Sounds like a make-it-work-now, peephole-it-later situation 13:47
timotimo agreed
brrt agreed as well
but awkward :-) 13:48
moritz - a nonconditional branch is a goto :-)
otherwise we'd have to call them goto and branch, now we just call them branch
on the otherhand, qualifiying with '(un)conditional' isn't exactly succinct terminology either 13:49
FROGGS_ what's a pee phole? 13:51
nwc10 a "peep hole" with 2 characters transposed? 13:52
FROGGS_ meh
timotimo it's a type of optimizer that looks at a few opcodes in isolation 13:53
it looks at the opcode stream "through a little peep hole" so to speak
comparable to a "sliding window"
jnthn a...pee phole? :P 13:54
None of the mental images are good :P 13:55
timotimo a pee pole sounds even less good 13:56
brrt wishes people had picked another name
lizmat Tea See Pee, I Pee
what can I say, the level is rising :-)
timotimo my initials are TCP :3
brrt its actually called a peephole optimizer - the optimizer runs over the bytecode in a small 'window', and tries to find things to optimize
and most of the usable algorithms have to do multiple passes 13:57
13:58 btyler joined
timotimo yeah, single-pass optimization is kinda hard 13:58
brrt and its not actually very easy to use it with the current version of the jit graph because it treats (for now) things like compare will be handled by primitives (i.e., not looked at on graph construction level) 13:59
i.e. 'jit graph should be a real graph!' 'i know but i'll need register selection' - that discussion, again :-) 14:00
timotimo well, it would be easy to remember the "origin" instruction for each register/version and traverse that like a linked list when we find a conditional branch op 14:01
brrt yes, certainly
def-use analysis, made more easy by the SSA form
timotimo aye
brrt block labeling is first, though 14:02
timotimo jnthn: what exactly forces the attribute access in cursors to be pessimal? that we access them late-bound by name? 14:03
14:05 oetiker joined
jnthn no, that we use ::?CLASS 14:06
timotimo mhm 14:08
is that constant-per-callsite per chance?
jnthn constant per invocant type 14:16
decommutebeer & 15:00
lizmat beer on the train! 15:03
lizmat recalls being on the commuter train to Antwerp
everybody ODing on coffee in the morning 15:04
and ODing on beer in the evening on the way home :-)
.oO( happy hour for sure )
brrt lizmat - from roosendaal? 15:39
lizmat yup
in the blue "hondekop"
brrt has been on the roosendaal train quite a few times himself 15:40
but not on a blue train, actually
red trains ride there nowadays
lizmat yeah :-( 15:42
brrt (slowly) 15:45
16:25 brrt joined 16:28 brrt left 17:03 jnap joined 17:04 flaviusb left
jnthn No, it wsa beer at the pub by the station, before the train 17:25
17:28 jnap joined
lizmat ah, using RPN then :-) 17:29
jnthn Reverse Polish Notation? :)
oh :)
lizmat hehe 17:30
not &beerdecummute but decommutebeer&
18:02 vendethiel joined
dalek arVM/moar-jit: bd6ecce | (Bart Wiegmans)++ | / (7 files):
Add comparison operators before adding branching
18:50
18:50 brrt joined
brrt is becoming fond of asm 18:53
brrt chuckles at the following comment: github.com/LuaDist/luajit/blob/mas...dasc#L6243 19:02
rurban_ brrt: do you really need to add pseudo frames? They are only used for exceptions 19:04
brrt pseudo frames?
thats not my code, btw :-)
rurban_ yeah, just to walk up the stack frame to find someone who can catch the exception 19:05
sure. I do not support exceptions with native stack frames. way too fragile
brrt i... don't think that i do?
rurban_ I hope not.
brrt stack management is fragile per se :-) 19:06
rurban_ You can try to support dwarf2/dwarf3/llvm vs gcc, elf vs mach vs windows, mingw dwarf2 vs sjlj and many more
brrt yes... i suppose i can 19:07
rurban_ I hope not :)
brrt however, i'm already more than glad if i can support two different x64 ABI's :-D
rurban_ If you really need it, better call the assembler manually to produce those frames 19:08
brrt hmm but dynasm runs at runtime
rurban_ win64 vs amd64 is easy, just 2 different registers 19:09
brrt win64 also has more callee-save register (rsi and rdi)
and fewer register arguments
but i agree
its doable
rurban_ yeah, my perl5 Jit compiles some crazy frames to .c and then .o and then gets the dwarf at run-time. just for debugging, gdb support, to get the symbol names. 19:10
brrt hmmm
rurban_ newer gdb's have better jit support already
brrt the moar-jit project works at a bit of a lower level, though
ultimately, gdb support would be good, i agree 19:11
rurban_ you might need it later, when you want to step through it. single-step is a bit troubling
brrt then again, not as good - imho - as the generation of Very Fast Code :-)
i use bytecode dumps that i dissassemble offline 19:12
rurban_ so with these dwarf frames you can add the lines and even variable names and types
brrt or
i trap MVM_enter_jit in gdb and disassemble on-line
that is pretty neat
brrt should have that too :-)
although i can promise it won't be a priority anytime soon :-) 19:13
(and of course, i know the bytecode generation routines well enough to recoginse seperate fragments by hand, but that won't be true of anyone else) 19:14
jnthn The easy way to deal with exceptions initially is just deopt.
rurban_ I only implemented it when I could't properly debug mine anymore. And I'll probably such a think to the new (=old) parrot jit also.
brrt jnthn, i think / but i'm not sure - rurban_ means stack-unwinding exceptions, and since we don't have a deep c stack, walking isn't a problem, either 19:18
i'll have the interpreter handle the frame walking / handler selection part 19:19
jnthn *nod*
Yeah, well, we basically never recurse on the C stack even if the code we're running does.
If the handler is in a caller, it's thus really easy to drop back to the interp. The only tricky one is when the handler is in the current frame, and you kinda need a deopt record to know where to fall back to, 'cus it can't just be inferred from the return addr or so. 19:21
Control exceptions in the same frame will want to become gotos at some point, I imagine.
But maybe that wants doing in spesh rather than the JIT per se.
brrt they can be equivalent to gotos
goto's don't hurt me :-) 19:22
jnthn Well, we only need to do the full-blown thing if there's a CONTROL or so somewhere, but that's the uncommon case. :)
brrt i suppose so. i'm nowhere near exceptions now, though 19:25
jnthn aye :) 19:26
19:55 jnap joined
dalek arVM: 462402b | jnthn++ | src/spesh/args.c:
Missing NULL check in arg guard handling.

Fixes a SEGV reported by Mouq++.
20:25
lizmat enough reason to bump? 20:26
jnthn: ^^^ 20:29
jnthn lizmat: Well, figure I'll test Panda builds fine on this latest just in case I need to fix something there 20:30
I know there was a SEGV in that earlier on.
But I didn't reproduce it the other day
Gonna check it out now, anyways...
lizmat jnthn++ 20:31
jnthn Oh, do you have a Panda commit bit?
lizmat no sure 20:32
I might need one soon :-) 20:33
jnthn I asked on #perl6
Just a patch I have that wants applying
lizmat nope, don't have a commit bit 20:35
guess I should ask tadzik for one 20:36
jnthn Looks like (with that Windows patch) Panda builds fine here. 20:51
So yeah, can bump.
lizmat ok, will do 20:55
21:41 donaldh joined 22:07 brrt left