| IRC logs at
Set by AlexDaniel on 12 June 2018.
05:29 farcas1982regreg left 05:42 farcas1982regreg joined 05:50 farcas1982regreg left 07:00 sena_kun joined 07:07 Geth left, Geth joined
MasterDuke huh. i created a template for sp_getcurhllsym, but it isn't getting called (i added a call to MVM_dump_backtrace in the template and it isn't happening). i've never seen this happen before, anybody have an idea? 07:10
no surprise the opcode is never seen here but now to figure out why... 07:21
so i guess the tree build happens before spesh re-writes getcurhllsym into sp_getcurhllsym. is there a way to trigger a rebuild? and is that desired? 07:23
08:07 evalable6 left, linkable6 left, evalable6 joined 08:10 linkable6 joined
MasterDuke my current patch (minus the big diff from running update_ops.p6) if anyone is curious 08:16
08:22 robertle joined 08:39 robertle left 08:47 robertle joined 08:56 Altai-man_ joined 08:59 sena_kun left 09:04 robertle left 09:05 robertle joined
MasterDuke huh, running some other code i see sp_getcurhllsym at, but the template still still isn't being run?! 09:19
10:13 robertle left 10:39 robertle joined 10:56 robertle left 10:58 sena_kun joined 10:59 Altai-man_ left
timotimo MasterDuke: well, what does the speshlog say? 10:59
11:55 pamplemousse joined 11:57 robertle joined 12:06 robertle left
MasterDuke in BB 14: `getcurhllsym r12(2), r6(6)`, then after, in BB 7: `sp_getcurhllsym r12(2), r6(6), sslot(3) # [000] specialized from getcurhllsym`. those are the only mentions of getcurhllsym 12:47
12:56 Altai-man_ joined 12:59 sena_kun left
timotimo MasterDuke: and what of the exprjit comments? 13:01
MasterDuke the beginning of BB 7 has `[010] start of exprjit tree with sp_p6oget_s`, then there's`[012] JIT: not devirtualized (type unknown)`, then the start of BB 8 has `[013] expr bail: Cannot get template for: sp_getlex_o` 13:02
oh oops. two ops before the sp_getcurhllsym is `[011] expr bail: Cannot get template for: sp_bindlex_os` 13:03
timotimo well, yeah, then there's no surprise that sp_getcurhllsym never shows up in the exprjit
MasterDuke heh, can't believe i just now noticed that 13:04
hm, what else uses getcurhllsym. even just `say ` in a loop has that `expr bail: Cannot get template for: sp_bindlex_os` right before it 13:06
ugh. even just calling `nqp::getcurhllsym(q|$COMPILER_CONFIG|)` in a loop has `expr bail: Cannot get template for: sp_getlex_o` a couple instructions before in the BB 13:12
timotimo if we can't test the exprjit template, better to just leave it out; if it never gets hit anyway, it'll only very rarely cause the exprjit to actually bail out because of it 13:14
MasterDuke it's a pretty simple template though, seems correct to me 13:24
timotimo i've said that a couple of times about my own templates as well :D 13:32
Geth MoarVM: MasterDuke17++ created pull request #1281:
Spesh and JIT getcurhllsym
14:22 robertle joined
AlexDaniel okay 14:55
I expected this to be more explosive
m: my $b = ‘a’ x 66666; say ‘a’ ~ $b
camelia Iteration past end of grapheme iterator
in block <unit> at <tmp> line 1
AlexDaniel m: my $b = ‘a’ x 66666; say ‘b’ ~ $b
camelia baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa…
AlexDaniel 14:56
uint16 lol
14:57 sena_kun joined
AlexDaniel R#3660 14:58
linkable6 R#3660 [open]: [MoarVM] Iteration past end of grapheme iterator (my $b = ‘a’ x 99999; say ‘b’ ~ $b)
14:59 Altai-man_ left
AlexDaniel my dream is to create a string with negative length :) 15:02
I already know how to do that with arrays 15:03
m: my int @​x[-2**63]; say +@​x
camelia 5===SORRY!5=== Error while compiling <tmp>
Name must begin with alphabetic character
at <tmp>:1
------> 3my int @7⏏5​x[-2**63]; say +@​x
expecting any of:
infix stopper
AlexDaniel m: my int @x[-2**63]; say +@x
camelia -9223372036854775808
AlexDaniel that's
timotimo brilliant 15:06
signed numbers were a mistake
AlexDaniel it's an old bug 15:08
though back then most of my 99999 tickets were considered DIHWIDT 15:09
15:09 pamplemousse left
AlexDaniel but strings seem to have some protections 15:10
though I'm not sure what's going on with final_strand_match_with_repetition_count
because it definitely overflows
so we'll end up with a shorter string but that doesn't cause any fun unfortunately 15:11
too low to overflow anything
MasterDuke final_strand_match_with_repetition_count should definitely return an MVMuint32, that's what repetitions is 15:15
but changing that doesn't fix the error
AlexDaniel MasterDuke: did you also change the variable? 15:16
where it saves the result of final_strand_match_with_repetition_count
MasterDuke whoops, yeah, that fixed it 15:17
AlexDaniel commit it then
Maybe I can overflow this: 15:18
m: say 2¹⁶ ÷ 64
camelia 1024
Geth MoarVM: 8b109c68b1 | (Daniel Green)++ | src/strings/ops.c
Repetitions are actually MVMuint32

AlexDaniel soo need to join that many strings
waaaaait 15:24
m: my @a; @a.push: (‘a’..‘z’).pick x 2 for ^100000; say @a.join(‘-’ x 2).elems
camelia 1
AlexDaniel hahaha
well, it does something!
ah damn, I'm looking at .elems not .chars -_- 15:25
nevermind, time to sleep
15:36 robertle left 15:40 AlexDaniel left 16:01 robertle joined 16:20 robertle left 16:56 Altai-man_ joined 16:59 sena_kun left
MasterDuke huh. perf says `say(1) for ^2_000_000` spends 16.6% in MVM_spesh_frame_walker_get_lex (most expensive) and 5.6% in MVM_frame_find_dynamic_using_frame_walker (3rd most expensive) 17:12
17:18 farcas1982regreg joined
MasterDuke 26000001 calls for '$*OUT', 26000143 for '$*PROMISE' 17:24
17:33 pamplemousse joined 17:53 Kaiepi left 17:56 Kaiepi joined
MasterDuke this is the sort of thing the versioned hash jnthn mentioned would be used for, right? 18:25
18:35 farcas1982regreg left 18:57 sena_kun joined 18:59 Altai-man_ left 20:56 Altai-man_ joined 20:59 sena_kun left 22:41 Altai-man_ left 22:44 Kaiepi left, Kaiepi joined