01:04 vendethiel joined 01:48 ilbot3 joined 02:39 colomon joined 03:00 prammer joined 03:14 prammer joined 05:28 ilbot3 joined 05:39 pyrimidine joined 06:16 FROGGS joined 06:52 colomon joined 07:40 brrt joined
brrt \o 07:49
FROGGS o/
nwc10 o/
brrt you're all very awake today
FROGGS I just pretend that I am :/ 07:50
brrt that's also a good strategy 07:51
08:02 zakharyas joined
brrt hmmm 08:16
this... sucks 08:17
i plug a hole here, it reappears there
FROGGS is this about rats or abotu programming? 08:26
about*
brrt programming 08:28
nwc10 at least it's not about coffee
FROGGS well, in some way every cup has at least one hole 08:29
nwc10 I claimed that the problem with my beer glass was that it had a hole, and hence the beer escaped
and Joseph (who doesn't exist) observed that topologically, it doesn't
and he's right
(Next time, I need to find a glass with a handle) 08:30
FROGGS O.o
===SORRY!=== ===CONFUSED===
nwc10 FROGGS: "picture" of Josef on vienna.yapceurope.org/ye2007/team.html confirms the doubtfulness of his existence 08:31
FROGGS *g* 08:36
brrt lol 08:37
09:22 vendethiel joined 09:28 brrt joined
jnthn brrt: I was pondering write barrier JIT a bit 09:29
brrt aye
i'm listening
nwc10 \o/ jnthn bootstrapped!
jnthn brrt: And we know a few things about them that let us cheat quite hard and have better code, maybe...
brrt ok, i'm listening
nwc10 was worried about holes in the coffee system
brrt summer has failed to bootstrap here 09:30
jnthn We know (a) hitting is rare, and (b) yes it's a C function we call if we miss, but it never will trigger a GC so we don't need to spill to correct MoarVM registers
nwc10 brrt: it has here: www.bbc.com/weather/2761369
(and the previous weeks, but we were in the UK avoiding it)
brrt wat, 36C
nwc10 it does that here. 09:31
there isn't a nearby sea to keep things cool.
jnthn So we could in theory emit write barriers as checking if we'd hit it, and if so pushing the object in question to the stack, pushing our current PC to the stack, jumping to a single handler at the end of the JITted machine code that saves all callee-save registers unconditionally and calls the write-barrier funtion 09:32
nwc10 be more worried that the temperature drops no lower than 27ā°C overnight
jnthn *function
(And then we always emit that code at the "tail") 09:33
We know we can get away with it since we'll never need the MoarVM register bank to be in good shape. 09:34
And we can not worry about wasting time saving too much as it should be relatively uncommon.
jnthn hopes this isn't a really dumb suggestion for some reason he's not seeing yet :) 09:35
brrt no, it's a good idea 09:38
however, it'd mean 'upping' the write barrier in the expr ir from macro to full node 09:39
but, i like it 09:40
jnthn Explain the "upping"?
brrt a write barrier would have to be a primitive node, as far as i can tell 09:42
rather than a macro for a tree
nwc10 it's just occurred to me - how is the *implementation* of Rakudo doing, by this criteria? www.wired.com/2012/06/beard-gallery/
brrt i'm working on it, nwc10 09:43
nwc10 my thought was promted by
brrt jnthn also has a significant contribution in that regard
nwc10 09:40 < masak> so now I simply don't see the point.
and wondering if masak needs more moustache. And then remembering that he has a beard 09:44
brrt www.wired.com/wiredenterprise/wp-co...al-two.png 09:46
aha, i've got it 10:01
pfew
jnthn brrt: The bug you were hutning? 10:03
*hunting
brrt yes
it seems
long story short
an IF (expression IF, not statement if, that's called WHEN) tries to spill registers before starting 10:04
the THEN and ELSE parts will *invalidate* registers before doing so
eh, after
basically, after you've reached the end of the IF, you can't really be sure whether you took THEN or ELSE, right 10:05
they're just basic blocks in that regard 10:06
(i'm pondering adding a 'basic block' abstraction into the tree, to be used for register allocation) 10:07
anyway, the values used in the THEN and ELSE statement may refer to those computed in the IF statement
hence, the spill should come after the condition, not before the IF 10:08
not sure if making sense, but there it is
jnthn yeah, makes sense. 10:11
dalek MoarVM/even-moar-jit: b78261f | brrt++ | src/jit/ (2 files): 10:22
MoarVM/even-moar-jit: Emit spill should come after IF condition
MoarVM/even-moar-jit:
MoarVM/even-moar-jit: The condition part of an IF expression is always taken, and may
MoarVM/even-moar-jit: be the first time a value is computed. Thus, values need to be
MoarVM/even-moar-jit: spilled there because they may be invalidated elsewhere.
MoarVM/even-moar-jit:
MoarVM/even-moar-jit: In general the logic of 'invalidation' and 'spilling' is much
MoarVM/even-moar-jit: to simplistic, because the value may also be computed during
MoarVM/even-moar-jit: traversal to any other node, and if invalidated the traverser
MoarVM/even-moar-jit: is not willing to revisit it. (Thus, the value may be lost an
MoarVM/even-moar-jit: incomputable).
brrt i'd argue that 90% of my work this week is of the building-to-throw-away type 10:23
it's .. understandable on a high level that this should be so, but at the same time quite frustrating
jnthn You may still come out ahead 10:25
In so far as when you replace this with the clever thing, you'll know any bugs are in *it*, not elsewhere in the stack.
brrt yeah, that's the plan :-) 10:26
also gathering knowledge on whats actually needed in our case
10:29 cognominal joined
brrt lunch & 10:38
10:39 xiaomiao joined
[Coke] (picture of josef) Holy crap, it's Leo! 13:04
nwc10 [Coke]: I'm not sure what Leo's doing in his spare time these days 13:06
timotimo i'm increasingly feeling the need/interest for building a web app for spesh log analysis 13:28
i wonder if the spesh log should grow a second mode where it outputs json or if should just output json by default
nwc10 to output well-formed JSON you'd need to add a closing ']' at program exit time? 13:37
timotimo i'm actually thinking of evil invalid json with "stanzas" 13:38
but AFAIK you wouldn't attach to the spesh output during a live program anyway 13:39
nwc10 there seem to be some de-facto standards: en.wikipedia.org/wiki/JSON_Streaming
timotimo ah, neato 13:42
"send json objects formatted without newlines" - nope. nope. nope.
i want to retain *some* readability for hoomans
that jq tool that's mentioned in the article seems helpful in that regard 13:45
if you want to grep stuff, schwartzian it through jq
masak newlines tend to clog up the tubes. they're very tall, vertically.
they get stuck easily in bends. 13:46
timotimo that's no good, then
what about | characters?
how do pipes fit into tubes?
worst case they just let all the rest flow through themselves and hardly move forward at all 13:47
your code ends up missing all | characters and a day later they all arrive as one long pipe inside the tube
13:53 FROGGS joined 14:37 brrt joined 15:13 JimmyZ_ joined 17:13 FROGGS joined 20:35 raiph joined
timotimo ah, i just stumbled upon why prefix:<!> with a native int won't turn into good code ... 22:11
box_i boxes the native int into an object that has the boolification mode BIGINT
so i can build a mode for the bigint boolification that checks for KNOWN_BOX_SOURCE 22:12
22:19 TEttinger joined, vendethiel joined
timotimo jnthn: under what circumstances can we throw out a bindlex_no? we have one that binds &?ROUTINE for pretty much every routine-level piece of code 23:02
23:49 raiph joined 23:52 xiaomiao joined, vendethiel joined