00:04
i42 joined
00:52
i42 joined
01:36
fengc joined
05:53
domidumont joined
06:12
domidumont joined
07:18
zakharyas joined
08:04
domidumont joined
|
|||
jnthn | moarning o/ | 08:42 | |
nwc10 | good *, jnthn | ||
08:52
domidumont joined
09:32
patrickz joined
09:39
domidumont joined
09:42
domidumont joined
11:38
domidumont joined
|
|||
dalek | arVM: 882c50d | jnthn++ | / (10 files): Implement payload throw/handler support. To more effciently provide for implementing `return` using control exceptions instead of the lexotic mechanism. |
12:14 | |
13:36
domidumont joined
|
|||
dalek | arVM: 018a4ee | jnthn++ | src/core/exceptions.c: Implement callerlex throwing mode. Skips the current routine (and then any thunks) before looking for a lexical handler. Which is precisely what Perl 6 returns need. |
13:38 | |
nwc10 | jnthn: keep trying (you've still not tripped ASAN) | 13:46 | |
jnthn | :) | 13:47 | |
Just pushed the Rakudo patch also | |||
Didn't spectest it yet | |||
Just got a bit ahead of myself and decided to benchmark. Things came out *worse* on the loop benchmark. Looked at the callgrind output and realized...I didn't add the new ops to the JIT yet :) | |||
dalek | arVM: be612b2 | jnthn++ | src/ (4 files): Elimiante needing a NULL check. Faster and will make things easier to JIT. |
13:53 | |
arVM: dbdc82f | jnthn++ | src/gc/roots.c: GC mark last_payload. |
13:56 | ||
13:58
patrickz joined
|
|||
dalek | arVM: d221b2e | jnthn++ | src/jit/ (2 files): JIT lastexpayload. |
14:11 | |
jnthn | With that it's cheaper. :) | ||
(Than with the lexotic return thing) | 14:12 | ||
10,989,973,606 -> 10,687,951,433 CPU instructions, or around 2.7% improvement. | |||
m: say 10976016 - 10894440 | 14:14 | ||
camelia | rakudo-moar 069b78: OUTPUTĀ«81576ā¤Ā» | ||
jnthn | 81.5 KB smaller CORE.setting due to smaller code | 14:15 | |
m: say 5820016 - 5810008 | 14:16 | ||
camelia | rakudo-moar 069b78: OUTPUTĀ«10008ā¤Ā» | ||
jnthn | 10KB off the size of the compiler itself | ||
NQP got a bit bigger 'cus of the added ops etc. | |||
Oh, but only by 2KB | 14:17 | ||
14:18
domidumont joined
|
|||
nine | jnthn: will that mean that we can use explicit return again? | 14:22 | |
14:25
brrt joined
|
|||
timotimo | not bad | 14:27 | |
jnthn | nine: Why can't you now? :) | 14:32 | |
timotimo | because it's awfully slow and doesn't belong on hot paths :P | 14:33 | |
a lot of work has gone into the core setting for getting rid of returns by using ternaries and such | 14:34 | ||
jnthn | Ah, yeah, on hot paths that could be an issue | ||
I don't know without measuring, but this should work out a decent bit cheaper when I'm done | |||
timotimo | aye, i expect that, too | 14:35 | |
jnthn | Think is that the non-explicit return case will also get faster too :P | ||
*Thing | |||
timotimo | that's good news, too! | ||
jnthn turns return and return-rw into subs, and gets bizzare failure | 14:51 | ||
timotimo | hm, turn off the static optimizer for a bit? | 14:55 | |
jnthn | We're not even making it that far | 14:58 | |
jnthn makes sure a parallel "innocent" change he did in Moar isn't to blame :) | 14:59 | ||
nope | |||
timotimo | oh, hm | 15:01 | |
jnthn | Changing just return-rw is harmless | 15:03 | |
15:04
edehont joined
|
|||
jnthn | And it gets stranger still. We don't end up inside the return point at all during compilation | 15:06 | |
but...we call it loads once I make it a sub?! | 15:08 | ||
When it's a pointy we don't assign it until startup I guess, so code trying to use return at compile time would thus fail. Apparently we're relying on that :P | 15:10 | ||
Damn, it is that. We somehow during canonicalizing colonpair names relied on val always failing to get the right outcome | 15:23 | ||
japhb | That's ... an odd dependency | 15:25 | |
jnthn | Very | 15:28 | |
I mean, an infix:<<(<)>> would take a pass through val | 15:29 | ||
Since the << >> imply that | |||
japhb | Oh. Weird. | 15:30 | |
timotimo | if that always goes through val, maybe we should consider using [' '] instead for those cases to speed things up a bit in general? | 15:31 | |
jnthn | Quite possibly :) | 15:32 | |
Anyway, it seems that a failing val just returns the original string | |||
Ugh, this'll take some untangling. | 15:39 | ||
Good point for a break. :) | |||
timotimo | dance the untango | ||
jnthn reverts the "make return a sub" part and runs a spectest while he rests, to see what over fallout there may be | 15:40 | ||
15:59
brrt joined
16:07
patrickz joined
16:57
zakharyas joined
17:12
edehont joined
17:40
TimToady joined
20:53
sivoais joined
23:00
avar joined
|