02:47
ilbot3 joined
05:31
vendethiel joined
06:46
virtualsue joined
07:06
virtualsue joined
07:11
domidumont joined
07:17
domidumont joined
08:06
Ven joined
08:08
FROGGS joined
08:15
Ven joined
08:37
zakharyas joined
09:27
leont joined
09:35
brrt joined
10:15
kjs_ joined
|
|||
dalek | arVM: cc59c5e | (Jimmy Zhuo)++ | src/core/interp.c: re-order op |
11:00 | |
arVM: bc36ad6 | (Francois Perrad)++ | src/core/args.c: remove useless curly brackets |
11:08 | ||
arVM: ae463e0 | (Francois Perrad)++ | src/core/callsite.c: remove unreachable code |
|||
arVM: 2f4d271 | (Francois Perrad)++ | src/core/exceptions.c: remove duplicated include |
|||
arVM: 5345c2f | (Francois Perrad)++ | src/core/validation.c: comment FALLTHROUGH in uppercase is understood by many lint tools |
|||
MoarVM: bddcf29 | (Francois Perrad)++ | src/core/bytecodedump.c: | |||
MoarVM: add parentheses around parameters in macro | |||
11:44
FROGGS joined
11:48
zakharyas joined
|
|||
JimmyZ | jnthn: I found haveat_s op not used, Do you think it need to be DEPRECATED? | 12:43 | |
jnthn | No. Stop deprecating stuff. | 12:44 | |
What's the point? | |||
brrt | \o jnthn | 12:47 | |
jnthn | o/ brrt | 12:48 | |
JimmyZ | it looks like doing something like index_s | ||
brrt | long time no see here? :-) | 12:49 | |
jnthn | brrt: Indeed. :) Hope you're doing fine?> | ||
JimmyZ: iirc, it's checking if the string in question exists at the specified index. | |||
So, a bit different. | |||
timotimo | so it's like eqat? | ||
brrt | i'm very busy with my thesis still.. eating all my time :-) but it's going well | 12:50 | |
jnthn | Yes...so how does it different from eqat? :) | ||
timotimo | i hope your time is tasty | ||
brrt | :-D | ||
its been caffeinated, for one thing | |||
timotimo | :) | 12:51 | |
brrt | i do have lots of notes on how to proceed with the jit | ||
maybe i should write them up in a gist, then others can look at them too | |||
timotimo | well, to be honest, i wouldn't be able to contribute much | 12:52 | |
so if writing it down is only a time sink, it's not helpful from my POV | |||
if it makes things easier for you, though, that's a whole 'nother story | |||
brrt | you can add comments? :-) | ||
hmmm | |||
jnthn will be doing more optimization-y stuff, so could be in a position to help, and could use such a doc. | |||
brrt | do you think the even-moar-jit work has become too complex? | 12:53 | |
ok, i'll make it one of them days... | |||
would be very helpful if you could take a look :-) | |||
(you = plural you, fwiw) | |||
jnthn | :) | 12:54 | |
I wonder a bit if even-moar-jit has suffered from not cheating enough to Get Something Working that can then be incrementally improved. | 12:55 | ||
Good code-gen is relatively complex, so I can imagine that's an amount of necesary complexity in there. | 12:56 | ||
*there's | |||
brrt | hmm.... i could kind of agree on that | ||
although the current version is quite cheating | |||
i.e., doesn't do anything conditionally and all that | |||
personally, i kind of think the whole issue of internal-basic-blocks caught me by surprise | 12:57 | ||
like, if something conditionally calls a c function, then that invalidates all variables that live in registers | |||
i really have / had no proper way to deal with that, and dealing with it inline in the register allocator routines itself, i never got that to work properly | 12:58 | ||
jnthn | Where did we end up with on that? A JIT graph that was low level enough that it captured all kinds of basic blocks may be a way to go... | ||
brrt | that is kind of my next step, yes | 13:06 | |
we have lots and lots of moarvm-level nodes which end up into multiple low-level basic blocks | 13:07 | ||
anytime there is an if (some_check) { do_this(); } else result=NULL;, that's three basic blocks right there | |||
jnthn | Indeed | 13:08 | |
brrt | if i have if (some_check) { do_this(); result=1; } else result = 0; that is four | ||
jnthn | This is why spesh tries to re-write various things to ops that don't have such indirections. | 13:09 | |
brrt | now what is interesting, or annoying, is that i first have to linearise instructions into a sequence before i can define the basic blocks, because otherwise a subtree (which may be refered to by different parents) may belong to multiple basic blocks.... | 13:10 | |
e.g. (let ((foo (bar baz)) (if (nz foo) (bar foo) (bar (null))) - now foo is shared by the first and second bb; | |||
hence, my graph becomes: bb(0): foo = bar(baz); bb(1): if zr foo goto bb(3); bb(2): result=bar(foo); goto bb(4); bb(3): result = bar(null()); bb(4): unify_results(); | 13:12 | ||
maybe this can be solved in some more clever way by a more clever tree representation... | 13:13 | ||
timotimo | a tree where a node can have multiple parents? preposterous! heresy! | 13:16 | |
brrt | i know.... | 13:17 | |
it's bad enough :-$ | |||
timotimo | i have no clue, honestly | 13:20 | |
jnthn | Well, it's a graph rather than a tree by this point. | 13:21 | |
timotimo | mhm | 13:22 | |
i say if it makes the implementation make more sense, do it. even if classic compsci training would tell you "that's not proper!" | |||
brrt | yeah, it's a graph alright. the question is, whether i want to rename it :-P | 13:35 | |
timotimo | let's just go with "goobledygook" for now and just continue coding :P | 13:36 | |
brrt | right, it is irrelevant :-) | 13:38 | |
timotimo | well, hopefully it is :) | ||
names are good for communication between humans; if it's just the three of us plus a few people like nwc10 helping out by running automated tools or looking over the code manually at a fine-grained level, it doesn't make a big difference | 13:39 | ||
since everybody is "in on the joke" | |||
long-term, we probably want to have cleaner terminology | |||
... incoherent ranting again | 13:42 | ||
i don't know why, but i feel extremely exhausted | 13:43 | ||
jnthn also, though he knows why :) | 13:44 | ||
timotimo | i'm not feeling up to debugging "Internal error: Unwound entire stack and missed handler" any more in my gtk_cairo_shooter example script ... | 13:47 | |
i put a say statement at the beginning of everything in my "user" code that is callback related and none of that triggers | 13:48 | ||
perhaps it's argument binding or something | |||
but could we install a default exception handler that gets run when that internal error occurs? | |||
so that we at least can has backtrace? | 13:49 | ||
actually ... i suppose we can just print the backtrace from inside moar when we get to that error. any good reason why we don't do that already? | |||
oh, heh. | 13:52 | ||
remove_one_frame(tc, 1) fails, so we don't actually have anything backtrace-like at that point? or something? | |||
13:57
Ven joined
14:57
domidumont joined
15:29
virtualsue joined
16:10
zakharyas joined
16:23
zakharyas joined
17:10
zakharyas joined
17:40
leont joined
18:02
virtualsue joined
18:08
kjs_ joined
18:13
virtualsue joined
18:24
kjs_ joined
18:26
zakharyas joined
18:36
kjs_ joined
19:10
kjs_ joined
21:49
vendethiel joined
22:26
leont joined
22:31
virtualsue joined
22:44
zakharyas joined
|