MasterDuke (and i couldn't make it a multi) 00:00
and switching a bunch of things to use my find_symbol2, but it didn't seem to make much of a difference
TimToady WANTEDOUTERBLOCK was a hack because of single-pass assumptions in find_symbol, so we should fix that
basically, wanted propagation can descend down into blocks we've already left in the main parse pass 00:01
we should have some kind of a tail-shared structure for blocks instead of a strict stack there that pops too soon 00:03
jnthn Blocks to have an annotation that points to their enclosing block 00:04
TimToady $*WANTEDOUTERBLOCK lookup by itself causes about 1% of our current overhead
don't recall offhand why following those didn't work
seem to recall trying...
something sets them too late, iirc 00:05
jnthn I may be misremembering, but I thought they were set at the moment the inner QAST::Block comes into existence 00:07
Time for me to go rest... 'night 00:08
TimToady g'night
(might've been simply that doing that many hash lookups was a lot slower than using the stack) 00:09
((but I do seem to recall it crashing when I tried)) 00:10
01:19 geekosaur joined 01:40 pyrimidine joined 01:52 ggoebel joined 02:48 ilbot3 joined 03:56 agentzh joined 05:11 agentzh joined 07:34 domidumont joined 07:48 pyrimidine joined 10:19 Ven joined 10:35 agentzh joined 12:23 pyrimidine joined 12:36 geekosaur joined 13:14 vendethiel joined
MasterDuke jnthn: just doing some more testing with radix and jitting. i set MVM_JIT_LOG for a run with radix (which i created cases for in src/jit/graph.c) and radix2 (an identical copy of radix which i created an nqp op for to make testing easier) 13:15
and the log is exactly identical
which i guess is no real surprise, since everything is being interpreted 13:16
any suggestions for what to test next?
jnthn MasterDuke: Are you testing that with NQP? 13:18
If so, did you try putting the code under test inside of a sub and calling that? 13:19
MasterDuke yeah. oh right, there was some different behavior when i tested something from rakudo instead
jnthn It looks like for some reason the program mainline in NQP doesn't end up getting OSR'd
MasterDuke ah! i was thinking about doing that (put in a sub) that last night and then fell asleep at the keyboard, thanks for the reminder 13:20
jnthn :) 13:21
MasterDuke heh. so the OSR section say none. but there is an OSR graphic by the sub and we're now at 20% jitted 13:25
lizmat MasterDuke: the --profile is sometimes incorrect on some OSR / JIT info 13:26
you should probably check the MVM_JIT_LOG to be sure
jnthn Curious :S
I also get really weird rendering of the profiler UI in Firefox, where it shows all tab content one below the other
MasterDuke how do i know if something was jitted in the log? 13:27
jnthn If it's in there and there's no BAIL, iirc 13:28
MasterDuke the log is now different between using radix and radix2, but the string 'radix' isn't in either log 13:29
but just timing a large number of iterations is showing radix noticeable faster than radix2 13:30
at 20m iterations, radix (which i jitted) is now 1s faster than radix2 13:32
at 1m iterations, perf stat -B is showing ~240m fewer instructions and 25m fewer branch misses for radix vs radix2 13:35
and a profile of radix2 shows 20% spesh vs 20% jit for radix 13:36
13:47 pyrimidine joined
samcv jnthn, i keep getting that error ===SORRY!=== 13:51
When invoking 5694 'parameterize', provided outer frame 0x55734b0873e0 (58 '!protoregex_nfa') does not match expected static frame 0x55734ba90718 (5695 '')
how do i stop it
i cannot launch my program :(
MasterDuke does --ll-exception show where it's happening? 13:52
samcv MasterDuke, gist.github.com/b6dfe9f89158a14b2c...51208a9934 14:00
MasterDuke oof, that's long and complicated. looks like you're doing something with roles? 14:03
samcv does augmenting count as roles?
yeah if i uncomment this it stops erroring 14:04
MasterDuke don't really know, i haven't done much with either. brokenchicken might have some idea
samcv dammit
brokenchicken ? 14:06
idea of what?
Of that error? No idea.
MasterDuke samcv: maybe paste code that's causing it somewhere? 14:07
samcv well it's a whole lot of code
my UCD rewrite
Geth arVM: MasterDuke17++ created pull request #514:
JIT MVM_radix() like MVM_bigint_radix()
14:13
arVM: samcv++ created pull request #515:
Make radix 50% faster with Unicode Nd, add East_Asian_Width prop.
14:30
samcv kewl
MasterDuke ah, i thought you were going to be able to change `ch = atoi(MVM_unicode_codepoint_get_property_cstr(tc, ch, MVM_UNICODE_PROPERTY_NUMERIC_VALUE));` into ` ch = MVM_unicode_codepoint_get_property_int(tc, ch, MVM_UNICODE_PROPERTY_NUMERIC_VALUE));` 14:33
to get rid of the atoi() completely 14:35
14:37 agentzh joined 14:45 ggoebel joined 15:15 zakharyas joined 15:22 FROGGS joined 15:24 pyrimidine joined
samcv eventually 15:32
when the rewrite of ucd2c.pl i scomplete 15:33
tho if it used the data my script that works already has we could do that
and we'd use numeric_value_Numerator
which would store integer values, (all the digits have 1 as denominator so it is fine)
idk maybe we can merge the scripts before the whole rewrite is complete idk 15:34
though that little change already makes it 50% faster, so making it not use atoi will make it prolly another 100% faster
maybe more
MasterDuke cool 15:36
samcv same with decomposition and such 15:38
i keep getting weird errors 15:39
for $rev-hash.keys.sort(+*) i am getting Too many positionals passed; expected 0 arguments but got 1 15:40
wtf
16:06 domidumont joined 16:20 pyrimidine joined 16:45 geekosaur joined 17:50 geekosaur joined 18:34 agentzh joined 19:03 agentzh joined 19:18 pyrimidine joined 19:43 pyrimidine joined 20:08 agentzh joined 20:47 agentzh joined 21:29 pyrimidi_ joined 22:13 agentzh joined 22:34 geekosaur joined 22:50 pyrimidine joined
MasterDuke timotimo: i find this interesting. the (almost exactly) same code in nqp vs perl6 takes half the time in nqp, even though it's only speshed vs jitted in perl6 23:05
nqp: 'sub a() { my $f := nqp::open("small_compile.sql", "r");my str $l; my int $s := 0; while $l := nqp::readlinefh($f) { ++$s }; return $s }; say(a())'
camelia ( no output )
MasterDuke perl6: 'use nqp; sub a() { my $f := nqp::open("small_compile.sql", "r"); my str $l; my int $s = 0; while $l = nqp::readlinefh($f) { ++$s }; return $s }; say(a())' 23:06
camelia rakudo-jvm fb4f16: OUTPUT«WARNINGS for <tmp>:␤Useless use of constant string "use nqp; sub a() { my $f := nqp::open(\"small_compile.sql\", \"r\"); my str $l; my int $s = 0; while $l = nqp::readlinefh($f) { ++$s }; return $s }; say(a())" in sink context (line 1)␤»
..rakudo-moar 5b3ac8: OUTPUT«WARNINGS for <tmp>:␤Useless use of constant string "use nqp; sub a() { my $f := nqp::open(\"small_compile.sql\", \"r\"); my str $l; my int $s = 0; while $l = nqp::readlinefh($f) { ++$s }; return $s }; say(a())" in sink context (line 1)␤»
MasterDuke whoops, didn't mean to actually run those
the perl6 version adds `use nqp`, and turns two binds into assigns, because you can't bind to native types in perl6 23:07
44.25% moar libmoar.so [.] MVM_string_utf8_decodestream 23:12
22.10% moar libmoar.so [.] find_separator.isra.6
5.67% moar libc-2.24.so [.] _int_free 23:13
^^^ nqp version
26.02% moar libmoar.so [.] MVM_string_utf8_decodestream
13.93% moar libmoar.so [.] find_separator.isra.6
5.32% moar libmoar.so [.] MVM_interp_run
^^^ perl6 version
23:34 njmurphy joined