[05:29] *** farcas1982regreg left [05:42] *** farcas1982regreg joined [05:50] *** farcas1982regreg left [07:00] *** sena_kun joined [07:07] *** Geth left [07:07] *** Geth joined [07:10] 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:21] no surprise the opcode is never seen here https://github.com/MoarVM/MoarVM/blob/master/src/jit/expr.c#L788 but now to figure out why... [07:23] 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? [08:07] *** evalable6 left [08:07] *** linkable6 left [08:07] *** evalable6 joined [08:10] *** linkable6 joined [08:16] https://gist.github.com/MasterDuke17/958a9ce9001df0b7d5cf13619190cf4c my current patch (minus the big diff from running update_ops.p6) if anyone is curious [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 [09:19] huh, running some other code i see sp_getcurhllsym at https://github.com/MoarVM/MoarVM/blob/master/src/jit/expr.c#L788, but the template still still isn't being run?! [10:13] *** robertle left [10:39] *** robertle joined [10:56] *** robertle left [10:58] *** sena_kun joined [10:59] *** Altai-man_ left [10:59] MasterDuke: well, what does the speshlog say? [11:55] *** pamplemousse joined [11:57] *** robertle joined [12:06] *** robertle left [12:47] 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:56] *** Altai-man_ joined [12:59] *** sena_kun left [13:01] MasterDuke: and what of the exprjit comments? [13:02] 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:03] oh oops. two ops before the sp_getcurhllsym is `[011] expr bail: Cannot get template for: sp_bindlex_os` [13:03] well, yeah, then there's no surprise that sp_getcurhllsym never shows up in the exprjit [13:04] heh, can't believe i just now noticed that [13:06] 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:12] 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:14] 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:24] it's a pretty simple template though, seems correct to me [13:32] i've said that a couple of times about my own templates as well :D [14:09] ¦ MoarVM: MasterDuke17++ created pull request #1281: Spesh and JIT getcurhllsym [14:09] ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/pull/1281 [14:22] *** robertle joined [14:55] okay [14:55] I expected this to be more explosive [14:55] m: my $b = ‘a’ x 66666; say ‘a’ ~ $b [14:55] rakudo-moar 6bb87106e: OUTPUT: «Iteration past end of grapheme iterator␤ in block at line 1␤␤» [14:55] m: my $b = ‘a’ x 66666; say ‘b’ ~ $b [14:55] rakudo-moar 6bb87106e: OUTPUT: «baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa…» [14:56] https://github.com/MoarVM/MoarVM/blob/3d8ff61e20a8abde79b46fec5f324c54433d5fb2/src/strings/ops.c#L813 [14:56] uint16 lol [14:57] *** sena_kun joined [14:58] R#3660 [14:58] R#3660 [open]: https://github.com/rakudo/rakudo/issues/3660 [MoarVM] Iteration past end of grapheme iterator (my $b = ‘a’ x 99999; say ‘b’ ~ $b) [14:59] *** Altai-man_ left [15:02] my dream is to create a string with negative length :) [15:03] I already know how to do that with arrays [15:03] m: my int @​x[-2**63]; say +@​x [15:03] rakudo-moar 6bb87106e: OUTPUT: «5===SORRY!5=== Error while compiling ␤Name must begin with alphabetic character␤at :1␤------> 3my int @7⏏5​x[-2**63]; say +@​x␤ expecting any of:␤ constraint␤ infix␤ infix stopper␤ …» [15:03] m: my int @x[-2**63]; say +@x [15:03] rakudo-moar 6bb87106e: OUTPUT: «-9223372036854775808␤» [15:03] that's https://github.com/Raku/old-issue-tracker/issues/6470 [15:06] brilliant [15:06] signed numbers were a mistake [15:08] it's an old bug [15:09] though back then most of my 99999 tickets were considered DIHWIDT [15:09] *** pamplemousse left [15:10] 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 [15:10] because it definitely overflows [15:11] so we'll end up with a shorter string but that doesn't cause any fun unfortunately [15:13] MVM_STRING_MAX_STRANDS 64 [15:13] too low to overflow anything [15:15] 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 [15:16] MasterDuke: did you also change the variable? [15:16] where it saves the result of final_strand_match_with_repetition_count [15:17] whoops, yeah, that fixed it [15:17] commit it then [15:18] Maybe I can overflow this: https://github.com/MoarVM/MoarVM/blob/3d8ff61e20a8abde79b46fec5f324c54433d5fb2/src/strings/ops.c#L1985 [15:18] m: say 2¹⁶ ÷ 64 [15:18] rakudo-moar 6bb87106e: OUTPUT: «1024␤» [15:18] ¦ MoarVM: 8b109c68b1 | (Daniel Green)++ | src/strings/ops.c [15:18] ¦ MoarVM: Repetitions are actually MVMuint32 [15:18] ¦ MoarVM: [15:18] ¦ MoarVM: Fixes https://github.com/rakudo/rakudo/issues/3660 [15:18] ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/8b109c68b1 [15:18] soo need to join that many strings [15:24] waaaaait [15:24] m: my @a; @a.push: (‘a’..‘z’).pick x 2 for ^100000; say @a.join(‘-’ x 2).elems [15:24] rakudo-moar 6bb87106e: OUTPUT: «1␤» [15:24] hahaha [15:24] well, it does something! [15:25] 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 [17:12] 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:18] *** farcas1982regreg joined [17:24] 26000001 calls for '$*OUT', 26000143 for '$*PROMISE' [17:33] *** pamplemousse joined [17:53] *** Kaiepi left [17:56] *** Kaiepi joined [18:25] this is the sort of thing the versioned hash jnthn mentioned would be used for, right? [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 [22:44] *** Kaiepi joined