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
|