japhb wishes jnthn's brane good sleep | 00:07 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | squashable6: next | 00:37 | |||||||||||||||||||||||||||||||||||||
squashable6 | AlexDaniel, ⚠🍕 Next SQUASHathon in 1 day and ≈9 hours (2017-12-02 UTC-12⌁UTC+14). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: jstuder-gh++ created pull request #1283: Issue 1238: Fix Hash clone not retaining all attributes |
06:13 | |||||||||||||||||||||||||||||||||||||
synopsebot | RAKUDO#1283 [open]: github.com/rakudo/rakudo/pull/1283 Issue 1238: Fix Hash clone not retaining all attributes | ||||||||||||||||||||||||||||||||||||||
[Tux] |
|
08:25 | |||||||||||||||||||||||||||||||||||||
lizmat | commute& | 10:11 | |||||||||||||||||||||||||||||||||||||
DrForr | Heh. '+v dalek' and I'm watching the BBC Doctor Who proms. | 10:19 | |||||||||||||||||||||||||||||||||||||
SmokeMachine | m: say <abc xyz>.classify( *.contains: any 'a'..'f' ) # shouldn't return {False => [abc abc abc xyz xyz xyz xyz xyz xyz], True => [abc abc abc]}? | 13:12 | |||||||||||||||||||||||||||||||||||||
camelia | {False => [abc xyz xyz xyz xyz xyz xyz], True => [abc]} | ||||||||||||||||||||||||||||||||||||||
SmokeMachine | that doesn't make sense in my mind... | ||||||||||||||||||||||||||||||||||||||
timotimo | SmokeMachine: the result of the contains is another junction, and that gets autothreaded into what classify does, causing big confusion | 13:42 | |||||||||||||||||||||||||||||||||||||
if the implementation were correct, it'd have to return something like {any(True, True, True) => [abc], any(False, False, False) => [xyz]} | 13:43 | ||||||||||||||||||||||||||||||||||||||
SmokeMachine | that makes sense, but we are testing that it should be exactly this response... | ||||||||||||||||||||||||||||||||||||||
timotimo | m: say <abc xyz>.classify( *.contains(any 'a'..'f').so ) | 13:44 | |||||||||||||||||||||||||||||||||||||
camelia | {False => [xyz], True => [abc]} | ||||||||||||||||||||||||||||||||||||||
timotimo | we have a spec test for that? | ||||||||||||||||||||||||||||||||||||||
how old is it? | |||||||||||||||||||||||||||||||||||||||
SmokeMachine | yes... | 13:45 | |||||||||||||||||||||||||||||||||||||
github.com/perl6/roast/blob/fca87f...ify.t#L121 | |||||||||||||||||||||||||||||||||||||||
timotimo | RT #127803 | 13:46 | |||||||||||||||||||||||||||||||||||||
synopsebot | RT#127803 [resolved]: rt.perl.org/Ticket/Display.html?id=127803 [BUG] Error using .classify with Junction - ERR: P6opaque: no such attribute '$!reified' | ||||||||||||||||||||||||||||||||||||||
timotimo | ah | ||||||||||||||||||||||||||||||||||||||
it's supposed to mirror hash assignment, i expect | |||||||||||||||||||||||||||||||||||||||
m: my %result{Any}; %result{"abc".contains(any "a".."f")} = "abc"; say %result | 13:47 | ||||||||||||||||||||||||||||||||||||||
camelia | {False => abc, True => abc} | ||||||||||||||||||||||||||||||||||||||
timotimo | m: my %result{Any}; %result{"abc".contains(any "a".."f")} X= "abc"; say %result | ||||||||||||||||||||||||||||||||||||||
camelia | Cannot modify an immutable Any ((Any)) in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
timotimo | m: my %result{Any}; %result{"abc".contains(any "a".."f")}>>.push("abc"); say %result | ||||||||||||||||||||||||||||||||||||||
camelia | Cannot modify an immutable Any ((Any)) in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
timotimo | except hash assignment doesn't create arrays | 13:48 | |||||||||||||||||||||||||||||||||||||
SmokeMachine | so, the right answer shouldn't be {False => [abc abc abc xyz xyz xyz xyz xyz xyz], True => [abc abc abc]}? | ||||||||||||||||||||||||||||||||||||||
the way I think, abc contains the letter (True) in 3 possibilities of 'a'..'f' (a, b and c) and doesn't contains in another 3 (False) (d, e and f)... | 13:49 | ||||||||||||||||||||||||||||||||||||||
timotimo | m: my %result{Mu}; %result.classify-list(*..contains(any "a".."f"), <abc xyz>); say %result.perl | 13:50 | |||||||||||||||||||||||||||||||||||||
camelia | 5===SORRY!5=== Error while compiling <tmp> Undeclared routine: contains used at line 1. Did you mean 'cotanh'? |
||||||||||||||||||||||||||||||||||||||
timotimo | m: my %result{Mu}; %result.classify-list(*.contains(any "a".."f"), <abc xyz>); say %result.perl | ||||||||||||||||||||||||||||||||||||||
camelia | (my Any %{Mu} = Bool::False => $["abc", "xyz", "xyz", "xyz", "xyz", "xyz", "xyz"], Bool::True => $["abc"]) | ||||||||||||||||||||||||||||||||||||||
timotimo | now this is interesting | ||||||||||||||||||||||||||||||||||||||
m: my %result{Mu}; %result.classify-list(*.contains(any "a".."f"), <xyz abc>); say %result.perl | 13:51 | ||||||||||||||||||||||||||||||||||||||
camelia | (my Any %{Mu} = Bool::False => $["xyz", "abc", "abc", "abc"], Bool::True => $["abc"]) | ||||||||||||||||||||||||||||||||||||||
timotimo | that is definitely wrong | ||||||||||||||||||||||||||||||||||||||
SmokeMachine | Im asking because I wrote this (github.com/FCO/rakudo/commit/6b582...2e0bb2b9c) and it returns what I expected, not whats being tested... | 13:53 | |||||||||||||||||||||||||||||||||||||
Geth | nqp: b58c92d906 | pmurias++ | src/vm/js/nqp-runtime/reprs.js [js] Implement (unsigned) smaller ints in VMArray |
14:39 | |||||||||||||||||||||||||||||||||||||
tbrowder | .tell AlexDaniel is it worth trying EVAL to execute a generated test file input as a string in order to guarantee having ws ending a line? | 15:15 | |||||||||||||||||||||||||||||||||||||
yoleaux | tbrowder: I'll pass your message to AlexDaniel. | ||||||||||||||||||||||||||||||||||||||
Zoffix | m: class Foo { has $.foo; submethod TWEAK (:$.foo) {} } | 15:42 | |||||||||||||||||||||||||||||||||||||
camelia | 5===SORRY!5=== Error while compiling <tmp> Virtual method call $.foo may not be used on partially constructed object (maybe you mean $!foo for direct attribute access here?) at <tmp>:1 ------> 3Foo { has $.foo; submethod TWEAK (:$.foo7⏏… |
||||||||||||||||||||||||||||||||||||||
Zoffix | Isn't the object is fully constructed by the time we call TWEAK? | ||||||||||||||||||||||||||||||||||||||
ufobat___ | it would be cool if this would be the case | 15:47 | |||||||||||||||||||||||||||||||||||||
Zoffix | And the reason I wanted that is 'cause my method foo does coercing things to $!foo, but that doesn't happen during instantiation, so I was aiming to just stick $.foo into attribute and hope it just uses the method to set stuff :) | 15:50 | |||||||||||||||||||||||||||||||||||||
tbrowder | .tell AlexDaniel it works! | 15:51 | |||||||||||||||||||||||||||||||||||||
yoleaux | tbrowder: I'll pass your message to AlexDaniel. | ||||||||||||||||||||||||||||||||||||||
Zoffix | m: class Foo { has $.foo; method z (:$.foo) {} }; with Foo.new { .z = 42; say .foo } | ||||||||||||||||||||||||||||||||||||||
camelia | Cannot find method 'STORE' on object of type Any in method z at <tmp> line 1 in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
Zoffix | It don't work anyway, so I guees nevermind... | ||||||||||||||||||||||||||||||||||||||
ufobat___ | it would be just nice to call regular methods in TWEAK, because TWEAK might want to do stuff that is "complicated" and should be in regular methods. imho | 15:53 | |||||||||||||||||||||||||||||||||||||
Zoffix | ufobat___: you can call them | ||||||||||||||||||||||||||||||||||||||
ZofBot: it would be nice if people would even try to see if things are there before saying it would be nice to have them | |||||||||||||||||||||||||||||||||||||||
ZofBot | Zoffix, in the grand scheme is it worth getting worked up over? | ||||||||||||||||||||||||||||||||||||||
Zoffix | m: class Foo { has $.foo; submethod TWEAK (:$foo) { self.foo = $foo }; method foo { Proxy.new: :STORE(-> $, Int() $!foo { $!foo }), :FETCH{ $!foo } } }.new(:foo(42.12)).foo.say | 15:55 | |||||||||||||||||||||||||||||||||||||
camelia | 42 | ||||||||||||||||||||||||||||||||||||||
ufobat___ | Zoffix, oups sorry | ||||||||||||||||||||||||||||||||||||||
TimToady | you can't really rely on TWEAK to have a fully constructed object, since TWEAK is still part of the build plan, and virtual methods can call into bits of the object that have not yet been tweaked properly | 16:41 | |||||||||||||||||||||||||||||||||||||
we make it possible to call virtual methods during initialization, but we try not to make it easy | 16:42 | ||||||||||||||||||||||||||||||||||||||
if you do call a virtual method during initialization, you've essentially set up an extra non-liskovian contract with derived classes | 16:45 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | . | 18:30 | |||||||||||||||||||||||||||||||||||||
yoleaux | 15:15Z <tbrowder> AlexDaniel: is it worth trying EVAL to execute a generated test file input as a string in order to guarantee having ws ending a line? | ||||||||||||||||||||||||||||||||||||||
15:51Z <tbrowder> AlexDaniel: it works! | |||||||||||||||||||||||||||||||||||||||
AlexDaniel | squashable6: next | ||||||||||||||||||||||||||||||||||||||
squashable6 | AlexDaniel, ⚠🍕 Next SQUASHathon in ≈15 hours (2017-12-02 UTC-12⌁UTC+14). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day | ||||||||||||||||||||||||||||||||||||||
AlexDaniel stops even more bots so that his server does not run out of memory again… | 19:38 | ||||||||||||||||||||||||||||||||||||||
timotimo: any news? | |||||||||||||||||||||||||||||||||||||||
Geth | roast: eda59114f6 | usev6++ | S05-match/capturing-contexts.t [jvm] Unfudge now passing tests |
19:59 | |||||||||||||||||||||||||||||||||||||
roast: 98d3743d6c | usev6++ | S05-mass/properties-general.t [jvm] Fudge two newly added Unicdoe tests |
20:17 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | tbrowder: fwiw for the future: when closing issues on RT it's better to include a link to the roast commit/PR. Makes it easier for others who follow notifications from RT | 20:47 | |||||||||||||||||||||||||||||||||||||
tbrowder: otherwise it begs the question “but are there any tests?” :) | 20:48 | ||||||||||||||||||||||||||||||||||||||
tbrowder | roger! i assume you fixed them or do i need to do it? | 20:49 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | tbrowder: no it's ok, we can leave it like this | 20:50 | |||||||||||||||||||||||||||||||||||||
tbrowder | i will go back and add the roast reference (i was surprised i could close them at all) | 20:52 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | I don't think you should spend your time on this :) | ||||||||||||||||||||||||||||||||||||||
thing is, people can go to the PR and there's a link, so that's OK | |||||||||||||||||||||||||||||||||||||||
Geth | rakudo: tbrowder++ created pull request #1287: add code to fix rakudo repo issue #1282 |
21:12 | |||||||||||||||||||||||||||||||||||||
synopsebot | RAKUDO#1287 [open]: github.com/rakudo/rakudo/pull/1287 add code to fix rakudo repo issue #1282 | ||||||||||||||||||||||||||||||||||||||
Geth | roast: tbrowder++ created pull request #361: add new tests for fix to rakudo repo issue #1282 |
21:13 | |||||||||||||||||||||||||||||||||||||
synopsebot | SPEC#361 [open]: github.com/perl6/roast/pull/361 add new tests for fix to rakudo repo issue #1282 | ||||||||||||||||||||||||||||||||||||||
timotimo | AlexDaniel: nothing good; mostly rsi-related non-moving today | 21:24 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | timotimo: btw, workrave is a really useful tool :) | 21:25 | |||||||||||||||||||||||||||||||||||||
timotimo | it's nice, yeah | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | I'm not sure if using it has any health benefits, but at least the dishes are clean and the workshop is getting more organized :D | ||||||||||||||||||||||||||||||||||||||
and I do enjoy standing up and walking around every few minutes, so that's cool | 21:27 | ||||||||||||||||||||||||||||||||||||||
jnthn | Just realized, if I want to see if I made any dent in the Text::CSV numbers tomorrow I should revision bump :) | 21:28 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | tbrowder: I'm really happy that somebody got his hands on pod stuff | ||||||||||||||||||||||||||||||||||||||
tbrowder++ | |||||||||||||||||||||||||||||||||||||||
tbrowder | thanks, simple stuff for simple minds--it's been mostly fun! | 21:29 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | jnthn++ too, of course | 21:30 | |||||||||||||||||||||||||||||||||||||
squashable6: next | |||||||||||||||||||||||||||||||||||||||
jnthn | tbrowder++ indeed, glad somebody is tending that :) | ||||||||||||||||||||||||||||||||||||||
squashable6 | AlexDaniel, ⚠🍕 Next SQUASHathon in ≈12 hours (2017-12-02 UTC-12⌁UTC+14). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day | ||||||||||||||||||||||||||||||||||||||
jnthn | The changes that I'm bringing in allow MoarVM to do more inlining, including postcircumfix:<[ ]> | 21:31 | |||||||||||||||||||||||||||||||||||||
Which means every array access will get a little faster :) | |||||||||||||||||||||||||||||||||||||||
timotimo | annoyingly, in my performance-critical code i already changed postcircumfix:<[ ]> to AT-POS and ASSIGN-POS instead | 21:33 | |||||||||||||||||||||||||||||||||||||
Geth | nqp: f1b269296c | (Jonathan Worthington)++ | tools/build/MOAR_REVISION Bump MOAR_REVISION for better inlining |
||||||||||||||||||||||||||||||||||||||
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...3f5ca16... No newline at end of file | |||||||||||||||||||||||||||||||||||||||
jnthn | huh, there's one right there :P | 21:34 | |||||||||||||||||||||||||||||||||||||
masak | m: .say for << "faster arr" y >>.map(* ~ "ay") | ||||||||||||||||||||||||||||||||||||||
camelia | faster array yay |
||||||||||||||||||||||||||||||||||||||
jnthn | I saw "faster arr" and thought it was talk like a pirate day :P | 21:35 | |||||||||||||||||||||||||||||||||||||
masak | m: .say for << "faster arr" y "talk like a pirate d" >>.map(* ~ "ay") | ||||||||||||||||||||||||||||||||||||||
camelia | faster array yay talk like a pirate day |
||||||||||||||||||||||||||||||||||||||
timotimo | i wonder if this makes given/when code faster, too | 21:37 | |||||||||||||||||||||||||||||||||||||
jnthn | It may well do | ||||||||||||||||||||||||||||||||||||||
It lifts a restriction that blocked quite a few inlinings | 21:38 | ||||||||||||||||||||||||||||||||||||||
timotimo | m: for ^100_000 { when * %% 2 { print "." }; when * %% 3 { print "," }; when * %% 5 { print "^" }; when * %% 7 { print ":" } }; say now - ENTER now | ||||||||||||||||||||||||||||||||||||||
camelia | ..,.^.:.,...,...,..^.,...,.^..,...,..:.,..^.,...,.^..,...,.:..,..^.,..:.,.^..,...,...,..^.,.:..,.^..,..:.,...,..^.,...,.^..,.:..,...,..^.,...,.^..,...,...,.:.^.,...,.^.:.,...,...,..^.,...,.^..,...,..:.,..^.,...,.^..,...,.:..,..^.,..:.,.^..,...,...,..^… | ||||||||||||||||||||||||||||||||||||||
timotimo | hah, yeah, of course it doesn't display that | ||||||||||||||||||||||||||||||||||||||
m: my str @out; sub print(Str $a) { @out.push: $a }; for ^100_000 { when * %% 2 { print "." }; when * %% 3 { print "," }; when * %% 5 { print "^" }; when * %% 7 { print ":" } }; say now - ENTER now; say @out.join(""); | 21:39 | ||||||||||||||||||||||||||||||||||||||
camelia | 0.41210858 ..,.^.:.,...,...,..^.,...,.^..,...,..:.,..^.,...,.^..,...,.:..,..^.,..:.,.^..,...,...,..^.,.:..,.^..,..:.,...,..^.,...,.^..,.:..,...,..^.,...,.^..,...,...,.:.^.,...,.^.:.,...,...,..^.,...,.^..,...,..:.,..^.,...,.^..,...,.:..,..^.,..:.,.^.… |
||||||||||||||||||||||||||||||||||||||
Geth | rakudo: f78fd7c17a | (Jonathan Worthington)++ | tools/build/NQP_REVISION Bump to latest NQP_REVISION |
||||||||||||||||||||||||||||||||||||||
¦ rakudo: version bump brought these changes: github.com/perl6/nqp/compare/2017....baec7a4... No newline at end of file | |||||||||||||||||||||||||||||||||||||||
jnthn | This time I looked and yeah, the file before my change missed its newlie | 21:40 | |||||||||||||||||||||||||||||||||||||
*newline | |||||||||||||||||||||||||||||||||||||||
The newline *is* a lie... | |||||||||||||||||||||||||||||||||||||||
timotimo | m: my sub print(Str $a) {}; for ^1_000_000 { when * %% 2 { print "." }; when * %% 3 { print "," }; when * %% 5 { print "^" }; when * %% 7 { print ":" } }; say now - ENTER now; | ||||||||||||||||||||||||||||||||||||||
camelia | 3.5088867 | ||||||||||||||||||||||||||||||||||||||
timotimo | m: my sub print(Str $a) {}; for ^5_000_000 { when * %% 2 { print "." }; when * %% 3 { print "," }; when * %% 5 { print "^" }; when * %% 7 { print ":" } }; say now - ENTER now; | 21:41 | |||||||||||||||||||||||||||||||||||||
camelia | 18.2038620 | ||||||||||||||||||||||||||||||||||||||
timotimo | just need to wait for f78fd7 to show up ... | ||||||||||||||||||||||||||||||||||||||
m: my sub print(Str $a) {}; for ^5_000_000 { when * %% 2 { print "." }; when * %% 3 { print "," }; when * %% 5 { print "^" }; when * %% 7 { print ":" } }; say now - ENTER now; | |||||||||||||||||||||||||||||||||||||||
camelia | 17.415179 | ||||||||||||||||||||||||||||||||||||||
timotimo | i better time this locally, it seems noisy | 21:42 | |||||||||||||||||||||||||||||||||||||
jnthn | :) | ||||||||||||||||||||||||||||||||||||||
jnthn bbl | 21:43 | ||||||||||||||||||||||||||||||||||||||
Geth | roast: 994f5fea92 | (Samantha McVey)++ | S05-mass/properties-general.t Correct unicode regex test which didn't specify property name We should only test Script and General Category if we don't specify the property we are testing for. Even though it works on MoarVM with just <:Digit>, it shouldn't be in roast since it isn't specced. |
21:44 | |||||||||||||||||||||||||||||||||||||
samcv | that reminds me. i need to eventually come up with some way to deprecate it | 21:47 | |||||||||||||||||||||||||||||||||||||
argh | 21:48 | ||||||||||||||||||||||||||||||||||||||
off the top of my head if we added a new nqp::unipropcode function that would only work with General_Category and Script and property value names, we could have that return that it couldn't find the value | 21:50 | ||||||||||||||||||||||||||||||||||||||
timotimo | bad news | ||||||||||||||||||||||||||||||||||||||
that code was faster before the noinline improvement | 21:51 | ||||||||||||||||||||||||||||||||||||||
samcv | and if so we can show a deprecation error when we query a different function | ||||||||||||||||||||||||||||||||||||||
chansen_ | samcv: Digit is specced as compatibility property in TR18 | ||||||||||||||||||||||||||||||||||||||
samcv | so it could still work until we deprecate | ||||||||||||||||||||||||||||||||||||||
chansen_ | www.unicode.org/reports/tr18/#Compa...Properties | ||||||||||||||||||||||||||||||||||||||
timotimo | jnthn: before your patch the code (with 2 million iterations) took 6.8s, after your patch it takes like 7.5 | 21:52 | |||||||||||||||||||||||||||||||||||||
samcv | well Numeric_Type=Digit is not the same as Digit | ||||||||||||||||||||||||||||||||||||||
by what this says | |||||||||||||||||||||||||||||||||||||||
we have \d for digit | 21:53 | ||||||||||||||||||||||||||||||||||||||
so i don't see any issue | |||||||||||||||||||||||||||||||||||||||
and we have <digit> and \d which perform the functions there | |||||||||||||||||||||||||||||||||||||||
chansen_ | true | 21:54 | |||||||||||||||||||||||||||||||||||||
samcv | and <digit> is Numeric_Type=Decimal_Number while <:Numeric_Type<Digit>> is Numeric_Type=Digit | 21:58 | |||||||||||||||||||||||||||||||||||||
and atm <:Digit> does the latter, but just because it resolves the property value to the Numeric_type property which we eventually want to get away from | |||||||||||||||||||||||||||||||||||||||
except for Script and General_Category | 21:59 | ||||||||||||||||||||||||||||||||||||||
chansen_ | Perl 5.26 switched from sc to scx \p{sc} equivalent to \p{scx=sc}) | 22:09 | |||||||||||||||||||||||||||||||||||||
jnthn | timotimo: Hm, that doesn't make a lot of sense | 22:39 | |||||||||||||||||||||||||||||||||||||
timotimo: Profiling may be releaving, though | |||||||||||||||||||||||||||||||||||||||
timotimo: Maybe it's one of those cases where more inlining means something can't be JIT | |||||||||||||||||||||||||||||||||||||||
*revealing | 22:40 | ||||||||||||||||||||||||||||||||||||||
timotimo: So, inlining went up from 23.21% to 28.13%, so around 5% more frames were inlined | 23:01 | ||||||||||||||||||||||||||||||||||||||
And JITted did indeed drop: 85.21% down to 73.92% | 23:02 | ||||||||||||||||||||||||||||||||||||||
oh wow, throwpayloadlex ain't JIT yet? | 23:03 | ||||||||||||||||||||||||||||||||||||||
Will see if I've time to do that tomorrow :) | |||||||||||||||||||||||||||||||||||||||
Seems quite a few exception-related ops ain't actually | 23:04 | ||||||||||||||||||||||||||||||||||||||
timotimo | is it as easy as calling the right c function and letting the generated throwish handler do the rest? | 23:08 | |||||||||||||||||||||||||||||||||||||
if so ... hackety hack :) | |||||||||||||||||||||||||||||||||||||||
jnthn | Probably, yes | 23:09 | |||||||||||||||||||||||||||||||||||||
timotimo | right. might also have to jit lastexpayload? that ought to be a simple dynasm templatet hough | 23:11 | |||||||||||||||||||||||||||||||||||||
jnthn | I think that one's already done | 23:12 | |||||||||||||||||||||||||||||||||||||
timotimo | cool | ||||||||||||||||||||||||||||||||||||||
bindexpayload and getexpayload now get us bailed | 23:21 | ||||||||||||||||||||||||||||||||||||||
jnthn | infix:<%%> is too big to inline because it does some checking if it can do a fast-path | 23:31 | |||||||||||||||||||||||||||||||||||||
At first I thought "hm, but Moar already does that fast-path" | |||||||||||||||||||||||||||||||||||||||
But ripping it out makes things slower, but I guess it costs an extra allocation | 23:32 | ||||||||||||||||||||||||||||||||||||||
Might be some more win in that area, anyways | 23:33 | ||||||||||||||||||||||||||||||||||||||
timotimo | succeed is inlined 99%, THROW is inlined 99% into that but it calls into "<anon> <unknown>:<unknown>" which is only speshed | 23:41 | |||||||||||||||||||||||||||||||||||||
i *think* that's the frame that gets bailed by exreturnafterunwind | 23:42 | ||||||||||||||||||||||||||||||||||||||
easily jitted, of course ... | 23:44 | ||||||||||||||||||||||||||||||||||||||
i got 28% inlined btw, how much did you get? | |||||||||||||||||||||||||||||||||||||||
jnthn | Same | 23:47 | |||||||||||||||||||||||||||||||||||||
timotimo | with that op i get 98.24% jitted, without it it was 95.02% | ||||||||||||||||||||||||||||||||||||||
there's a not-even-speshed frame in here, too. gets called 533334 times, maybe one of the blocks? | 23:48 | ||||||||||||||||||||||||||||||||||||||
jnthn | Oddness | ||||||||||||||||||||||||||||||||||||||
Maybe the log has some hints | 23:49 | ||||||||||||||||||||||||||||||||||||||
timotimo | anyway, with all of this extra jitting the time it spends is now as much as it was before your work | ||||||||||||||||||||||||||||||||||||||
jnthn | Hm, but not less. Darn. | 23:50 | |||||||||||||||||||||||||||||||||||||
timotimo | i put the one liner into multiple lines and it's now a sliver faster | 23:51 | |||||||||||||||||||||||||||||||||||||
still rather noisy | |||||||||||||||||||||||||||||||||||||||
it's line 12, which means either the * %% 7 or the { } block with the print ":" | 23:52 | ||||||||||||||||||||||||||||||||||||||
jnthn | When I switched on the inline log in optimize.c, it told me %% wasn't being inlined, but print was | 23:53 | |||||||||||||||||||||||||||||||||||||
I enhanced that to include the reason for not inlining, btw | |||||||||||||||||||||||||||||||||||||||
timotimo | nice | 23:54 | |||||||||||||||||||||||||||||||||||||
it's like 2x faster if you replace each * with $_ | 23:55 | ||||||||||||||||||||||||||||||||||||||
oh, %% has 55 BBs, eh ... that's really quite something | 23:58 |