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
MasterDuke correct 00:49
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
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
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
scovit brrt: Ok I found, docs.microsoft.com/en-us/cpp/build...er-passing for Win64 19:49
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
Geth MoarVM: patzim++ created pull request #1086:
Fix default target on nmake
21:42