00:17 vendethiel joined 02:50 vendethiel joined 06:05 vendethiel joined 06:49 FROGGS joined 07:31 brrt joined
brrt why did nobody ever tell me about semantic 07:37
ok, i have a bit of a mess on my hand 07:40
when an exception is thrown (MVM_exception_throwobj), one of the following things can happen
07:44 zakharyas joined
brrt a): a handler is not found, so panic 07:44
b): a handler is found, and it is an invoked exception frame, in which case it is put on the tc->active_handlers stack, which is what we want 07:45
because the throwish_post magic captures this
c): a handler is found, and it is a goto exception, in which case we unwind (possibly no frames at all :-(), which is *not* caught by the throwish_post magic 07:46
in which case we continue on our merry way, not throwing an exception at all
fwiw, the case in which the goto is unwound to a JIT frame *is* in fact handled correctly 07:47
anyway, i need a reliable indicator to show that an exception has been thrown 07:52
and right now, i have nothing
but bbiab 07:53
actually, bb much later
08:25 Ven joined 08:51 Ven joined 09:13 lizmat joined 09:18 brrt joined
brrt \o 09:21
ok, long story short
i need some kind of giveaway that demonstrates unevoqually that something that was throwish actually did throw
... now how exactly should i do that 09:22
timotimo worst case we introduce a return value from the throw_obj and throw_cat functions?
brrt whats more, i need to ensure that resume works properly, which i don't think it will right now 09:23
because i use jit_entry_label for *marking* rather than resuming the flow
hmm
that's possible, yes
but in fact, throwish always throws
throw_cat and throw_obj should throw, else what they are doing 09:24
so we *could* get away with simply loading a reentry label and *always* trampolining to the interpreter
damnit timo, why do you find bugs in the JIT just now :-P
timotimo sorry ;) 09:25
brrt :-P 09:26
arnsholt brrt: Would absence of something work as evidence that a throw occur perhaps? 09:27
brrt hmm... what absence would we be talking about
arnsholt Print something after the throw, print something after the catch
brrt hmm 09:28
arnsholt (Or set a value, or whatever)
brrt well, my most awesome guess was this
add an integer counter to the threadcontext, num_throws or something
increment it each time when you throw
compare before and after a throwish op
09:28 vendethiel joined
brrt if nonequal, jump to the interpreter 09:29
... there is still the ugly matter of the within-frame-resume
arnsholt Yeah, if it's for actually fixing something, it's probably not ideal 09:31
My initial reading was that you wanted a test case 09:32
FROGGS brrt: do you get your hands on this? ex->body.resume_addr = *tc->interp_cur_op;
brrt no, i know why this happens arnsholt, but thanks :-) 09:33
09:57 zakharyas joined 10:02 vendethiel joined
brrt FROGGS: yes, and i'd need to store the jit entry label as well in a special jit_resume_label 10:10
because it is possible that the resume will happen *in the same frame* as the throw, and then i have not enough labels to store my position 10:11
yes, many confuse
i'll explain it in september :-P
the fix is, i think, to do this 10:23
* stop checking for the active handler, it isn't always actually set
* compare the stored FRAME register with the TC->cur_frame pointer, to see if we're still in the same frame; if not jumpout 10:24
* compare the jit_entry_label with the end-of-throwish-block label, if nonequal jump
* store a jit_resume_label in the frame, wherein we store the jit_entry_label at-time-of-throwing (if the exception can resume), and restore this in MVM_exception_resume 10:25
* treat MVM_exception_resume as throwish 10:26
seems.. legit?
10:29 vendethiel joined
brrt or c): always, always just trampoline 10:46
10:55 vendethiel joined 11:21 vendethiel joined 11:26 brrt joined
brrt *sighs* 11:35
FROGGS hmmm? 11:40
timotimo well, can you do it? and more importantly: will it be helpfl? 12:39
12:59 brrt joined 13:02 vendethiel joined
brrt timotimo: yes, i can do it. yes, it will help. no, it's not very simple :-) 13:03
especially if we want to resolve resuming as well
13:11 Ven joined 13:53 vendethiel joined
timotimo i'm sorry about causing all this trouble 14:14
maybe it's good to get you back into the jit before your big assignment? ;)
14:29 lizmat joined 14:34 brrt joined 14:41 vendethiel joined
brrt timotimo: not your fault, happy to work on it 14:58
just scary that such a bug would sit in here for so long
timotimo is it a bug?
i mean, we never jitted anything but "die" before 14:59
15:04 lizmat joined 15:32 brrt joined
brrt yes, it's a big 15:33
bug
is the spectest expected to hang, or not? 15:41
dalek arVM/jit_throw_ops: 57c9b89 | brrt++ | src/ (3 files):
Hopefully fix throwish ops

Before this patch, we used to check the active handler stack of the interpreter to see if we've entered an exception handler after executing a 'throwish' opcode in the JIT. However, because we also have 'goto exceptions', that's not really a very good check. A better check is to compare the current frame with the JIT frame.
Because we may resume (yay for delimited continuations) a thrown exception, even that is not enough, though. So I rigged the exception c1b4bae | brrt++ | src/jit/graph.c: Fix copy-pasto
15:46
brrt timotimo: please check that out when you have time 15:47
15:50 vendethiel joined
timotimo oh! 16:13
it's already here? 16:14
i was expecting it'd take a week or so ;)
well, nqp doesn't hang any more when building 16:16
so that's awesome :)
for send-more-money-loops to have THROW fully jitted, i'll have to jit newexception, setexceptionpayload, and setexceptiontype
but this is way cool. brrt++ :)
16:21 vendethiel joined 16:48 brrt joined 16:50 jepeway joined
brrt well, you're welcome :-) 16:50
spectest is flaky, but has been flaky for some time 16:51
i'm most interested in resume, by the way
timotimo mhh 16:52
i don't have code exercising resume
brrt i'm fairly sure the spectest does 16:55
timotimo hopefully enough :) 16:56
the nqp tests are happy at least
the spec test run i have looks good, too 16:58
grocery shopping & 17:00
brrt see you 17:01
17:09 Peter_R joined 17:21 brrt joined 17:32 FROGGS joined
timotimo crap, did i forget to fix this? 17:38
i was so sure i had done all those ops and stuff correctly in graph.c :(
brrt it happens :-) 17:57
damn procasync test
timotimo yes :(
i wonder why newexception doesn't turn into a sp_fastcreate? 17:58
brrt possibly because nobody wrote that opt yet
timotimo ah, it's an opt that lives in the REPR
then i won't have to implement newexception in the jit :P 18:03
brrt right 18:06
timotimo and of course bindexcategory and bindexpayload become primitive set operations 18:07
brrt if you can, that'd be nice 18:12
timotimo but first there will be a dinner <3 18:14
brrt i can't actually trigger the code path
damnit!
oh, nice :-)
timotimo you mean resume in a jitted context?
brrt yes 18:28
timotimo hm 18:35
we spesh on the way out of a frame, no?
hm, but in the case of resume, we do leave the frame afterwards 18:36
brrt yes 18:37
i'm working on resume as we speak
dalek arVM/jit_throw_ops: 7a25969 | brrt++ | src/ (4 files):
Add resume to JIT
18:42
[Coke] Updating your resume! awesome. 18:44
brrt on the topic of which
a grand total of 0 recruiters / hiring people know what a JIT is, have heard of GSoC, or even of perl6 18:45
in fact the word of 'perl' induces some kind of automated 'inenoise' reaction
[Coke] in my area, I'm lucky when a recruiter has -heard- of perl.
timotimo oh god 18:46
[Coke] I could never get long term perl work in this area, though. maybe a 2 week "come in and fix this old script we can't comprehend".
brrt right 18:47
timotimo brrt: guess what i can wow recruiters with from my work with perl6 18:48
brrt and... they are wowed?
18:57 Ven joined
timotimo um 18:59
it was a what question
brrt oh, i see 19:01
my top 3 guesses 19:02
wordpress
php
joomla
oh, and mysql
timotimo i didn't ... what?
brrt you asked me to guess what you can use to wow recruiters in your area
my guesses are: wordpress, joomla, mysql and php
timotimo oh 19:03
no, i mean
what from my perl6 work can i use to wow recruiters
brrt oooh....
timotimo i'm having a hard time here :)
brrt i would be very surprised if anything
timotimo well, damn. 19:05
how am i supposed to make money so i can live?
brrt government handouts 19:06
timotimo not very much of those in germany
brrt or wordpress sites
whichever you like best
timotimo i'm currently on a much better programme
which is momernvent handouts
brrt and what movement would that be?
timotimo momernvent 19:07
[Coke] I'm guessing it's a play on government, but with "mom".
timotimo yeah
brrt aaaah
timotimo momernvent is much better than corrupternment 19:09
the netherworld must be a great place to live 19:10
brrt afk for tonight 19:17
timotimo hmm 19:18
19:21 mj41 joined
japhb timotimo: "Optimized Rakudo compiler at all levels of abstraction stack (compiler, intermediate language, VM)" ... "Created tracing and analysis tools for debugging and optimizing compiler code specialization engine" ... There are lots of things to be proud of here. 19:40
One recommendation I've seen for Europeans trying to get hired (or promoted) at an English-speaking tech company, is that if you don't feel like you're being rather boorish and bragging like an American, you're probably being too understated. 19:42
(I'm reminded of a medical rule of thumb they used to use around here: If you *don't* think Campbell's Tomato Soup is too salty right from the start, your daily sodium intake is probably *way* too high.) 19:44
timotimo japhb: i didn't create anything that traces :P 19:45
and nothing for debugging and optimizing compiler code specialization engine :P
japhb timotimo: That's my point. Apparently (this is second- or third-hand, BTW), Europeans have a cultural bias against claiming credit for something unless they did it totally themselves. Unlike Americans, who claim credit for the piece they worked on. 19:46
timotimo: Weren't you the one who created the graphs of the instructions and BB and such?
timotimo i made something that turns the spesh dump into a graphviz image
when a recruiter reads that, they'll read VM and say "oh, have you worked with Xen?" 19:47
japhb timotimo: How is that different from what I said? :-)
timotimo nobody used it for debugging and/or optimizing yet
japhb First of all, I think that's wrong, because *you* have. 19:48
Second, there's a difference between *what you accomplished* and *the impact it had*.
Both are important, but you *can* claim the first even if the second is yet to come.
timotimo well, there's like a hundred people in the community ... :P
i think my one line fix to VLC that puts cd audio files into the playlist with a leading 0 for the title so that it doesn't sort wrong had more of an impact than my work in p6 :) 19:49
japhb Do you feel like every one has to use your tool before it is A) important, B) useful, and C) a technical accomplishment?
timotimo wow, both A, B *and* C? 19:50
japhb Sure, that's one of those "Bill: $10,000; hitting machine with hammer: $1, knowing where to hit it: $9,999" type things.
The number of people in the Rakudo/NQP/MoarVM *optimization* community is rather smaller than 100 people, I might add. 19:51
timotimo you're suggesting someone pays me USD10k? :) 19:52
japhb If you helped brrt, or jnthn, or FROGGS, or lizmat, or hoelzro, or who all, that's really important, even if not *all* of them were able to use it.
Also, you haven't yet been in the work force for half your life. We're not expecting that your entire resume consist of fundamental new theorems and nation-impacting applications .... ;-) 19:53
timotimo i'm pretty sure the only use others had for my graphing tool was me posting pictures up on the internets :P 19:54
japhb timotimo: I was saying that a one line fix with impact has that kind of structure. It's not that the fix was itself complex ... but knowing how to do it in one line shows a deeper understanding of the code base.
timotimo: Before assuming that your contributions aren't valuable, *ask*. :-)
timotimo but but but, that was the first time i looked at the vlc code base :P 19:55
japhb (To the Xen comment previously: You can say "JIT VM" to disambiguate.) 19:56
timotimo: Which means that you're skilled at zooming in on a large codebase and finding the correct place to make an obscure fix. That's a SKILL, my friend.
timotimo oh lord, you're smearing so much honey all over my beard :P 19:57
(quite a nice beard, if i may say so myself; not voluminous or imposing, but pretty)
japhb I'm just pointing out that you're not lacking marketable skills, just confidence (and perhaps a bit of braggadacio)
Don't let a weak resume get you thrown out with all the people who *don't* have skills. Let the resume get you in the door, then have confidence in the work you *did* do, and the ability to explain it and why it is valuable. 19:59
timotimo i can hardly believe anyone would consider what you've been praising here "skills" that others would be able to not have somehow
i mean it's so obvious to me how it'd be done and i'm having a hard time imagining i'm "just that good" 20:00
oh well 20:08
hoelzro timotimo: you might be able to work with Mozilla on Rust, or something like that 20:17
20:43 vendethiel joined
japhb timotimo: (Sorry, was AFK for a while ...) It's not that I'm saying no one else could have those skills. I'm saying that if you don't claim them, interviewers will assume *you don't*. 21:23
Because trust me, it's *amazing* how low the skillset of some interviewees goes.
And there is a certain value to actually having *worked* in particular problem spaces, and seen first hand what works and what doesn't. Experience matters. 21:25
You can learn a ton of theory in college, but it's just not the same thing as actually working on a real project trying to make real improvements.
(I'm reminded of an algorithmic bound based on the inverse Ackerman function, where everyone agrees there's really not a huge point to improving the bound much, because for problem sets *smaller than the entire universe*, inverse Ackerman is bounded by a small constant. Sometimes a better theory isn't any better than a well-founded practical result.) 21:27
timotimo hmm 21:30
where did i get the idea that i have to be exceptionally good at something in order for someone to want to pay me
japhb Also, remember that you're hanging out with jnthn and TimToady. Around here, being exceptional is not exactly a low bar. 21:31
timotimo mhm 21:32
FROGGS .oO( it is a low baz )
gnight 21:40
japhb o/ 21:41
timotimo jobs are weird
21:42 lizmat joined
japhb But valuable. :-) 21:48
timotimo some are valuable, some are soul-crushing 21:57
well, i'm beginning to babble nonsense, or have been for a while perhaps. i shall be going to sleep early tonight 21:59
22:07 FROGGS joined 22:09 vendethiel joined
japhb A wise choice. :-) 22:21
23:42 vendethiel joined