github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
jnthn tbh, the idea was that we'd not need to JIT them, because in hot-path code they'd tend to be replaced anyway 00:04
(by sp_getarg_*)
It'd be worth looking at why we're ending up with them left behind in optimized code, and seeing if we can do something about that 00:05
In that even if we JIT them, they're still full of bound checks and stuff
timotimo i think perhaps the argument specialization code is too eager to quit when it hits something it can't perfectly handle; like when it gets a NativeRef and wants to param_rp_i it or whatever that was that i found the other day 00:15
jnthn Ah, NativeRef... 00:18
Well, it quits when it can't be sure it'd do the correct thing, which is worse than wrong thing + crash :)
But yeah, worth checking if it's getting upset over nativeref, 'cus in theory that's an easy fix
timotimo MasterDuke: if you could tell us where you found the param_op_* being left over, that could probably help us figure out what's going wrong 00:19
ugexe i think it was from this perl5/perl6 benchmark 00:22
for (1..100000) { ((join( "", (!($_ % 3) and "Fizz" or ""), (!($_ % 5) and "Buzz" or "") ) or $_), "\n") for 1..20; }
15:59:25 <MasterDuke>join in src/core/Any-iterable-methods.pm6:2143 isn't getting jitted becuase of param_op_o
00:28 lucasb left 00:32 dalek left 00:33 Geth left
MasterDuke correct 00:49
06:39 synopsebot left, p6lert left, dalek joined, Geth joined, p6lert joined, synopsebot joined 06:52 brrt joined
brrt dogbert17: a document like that one, yes, except that I already read that one and couldn't find it 06:57
but I may have misread
07:12 domidumont joined 08:56 Geth left, Geth joined 09:21 zakharyas joined 09:22 brrt left 09:23 robertle joined 10:00 brrt joined 10:35 robertle left 10:48 robertle joined 11:00 robertle left 11:03 robertle joined 11:11 domidumont left 11:13 scovit joined
scovit brrt: I think that the calling convention for that is RDX:RAX (< 16 bytes) or stack in SysV and RAX (< 8 bytes) or stack in Win64 11:17
11:28 robertle left
scovit brrt: but now I am discovering that on windows it seems a bit more complex than that, if on the stack, the caller need to make the space, pass the address in rcx, and than gets back the address of the result in rax 12:08
brrt scovit: I think so too... but I'd prefer to see it in writing, is the thing :-) 12:25
12:33 zakharyas left 12:39 robertle joined 12:52 brrt left 13:14 brrt joined 13:45 domidumont joined 13:57 zakharyas joined 13:58 domidumont left 14:19 lucasb joined 15:48 domidumont joined 16:16 domidumont left 16:29 brrt left 17:16 domidumont joined 17:28 AlexDaniel left 17:43 patrickb joined 18:21 zakharyas left 18:43 patrickb left 19:21 patrickb joined
scovit brrt: Ok I found, docs.microsoft.com/en-us/cpp/build...er-passing for Win64 19:49
19:51 domidumont left
scovit www.uclibc.org/docs/psABI-x86_64.pdf pag 22 for SysV 19:51
it is relevant the MEMORY type, for objects that do not fit RDX:RAX, same for windows if it does not fit RAX 19:52
in both case the space on the stack is caller provided
20:31 patrickb left 20:32 patrickb joined
Geth MoarVM: patzim++ created pull request #1086:
Fix default target on nmake
21:42
23:44 nebuchadnezzar left