MasterDuke what's an easy way to test/stress on_read in asyncsocket.c? 00:10
timotimo hmm
well, you'd want to be sending a bunch of different-sized packets? 00:11
probably easy to just hackit up as a one-liner with synchronous sockets in perl6?
MasterDuke because it's on_alloc is the same as procops.c's. wondering how to test the same patch to it
but i'd like something somewhat realistic 00:12
timotimo right, there you can just build a process that prints different sized strings/bufs
gotta go o/ 00:15
00:17 lizmat joined
MasterDuke later... 00:20
00:57 pharv_ joined 01:28 ilmari[m] joined 01:52 ilbot3 joined
Geth MoarVM: MasterDuke17++ created pull request #632:
Alloc read buffer based on amount last read
02:50
MoarVM: markmont++ created pull request #633:
Make sure libffi callbacks can be reused.
06:08
06:13 nwc10 joined 09:44 dogbert17 joined 11:11 evanm joined 11:23 AlexDani` joined
nine This is about the call to p5_method_call (the native sub): prepargs callsite(0x604a1f0, 10 arg, 10 pos, nonflattening, noninterned) 11:55
timotimo: you said that the interning (what does that actually mean?) might be relevant for why the native sub is not JITed. 11:56
I don't even find anything about it in the spesh log other than the name in the argument to sp_findmeth 11:57
timotimo nine: a callsite is a little datastructure that describes what the arguments for a call look like; number of positional arguments, number and names of named arguments, primitive of arguments (obj/int/num/str), has flattening yes/no 12:23
nine: we only intern callsites if they are non-flattening and the number of arguments is below a certain number 12:24
and we only spesh call targets if they are being called from an interned callsite
12:27 nwc10 joined
nine Ok, p5_call_method has a boat load of arguments which probably explains, why it's not interned. p5_sv_refcnt_dec on the other hand has only 2, the callsite is interned, but still spesh does not even seem to look at that sub 12:41
timotimo valgrind is a tiny bit upset by find_invokee_static_frame using uninitialized values for control flow 12:45
coverity also complained about that function, i think it's able to reach its end without returning or something
Geth MoarVM: 3cf56817e7 | (Stefan Seifert)++ | 3 files
JIT the create op

Of course we'd much rather see sp_fastcretae ops, but sometimes we don't get them and bailing out on a generic create op may prevent us from JITing much more code (e.g. when Mu.CREATE is inlined).
12:47
nine This is for p5_sv_refcnt_dec: prepargs callsite(0x7f592cda79e0, 2 arg, 2 pos, nonflattening, interned) 14:20
Yet spesh doesn't seem to care about p5_sv_refcnt_dec
timotimo right, i myself am often surprised by spesh not doing stuff i expect it to 14:40
15:06 zakharyas joined 16:53 pharv_ joined 17:16 zakharyas joined 18:39 dogbert17 joined
timotimo hm, so 18:53
i'm confused
i was expecting i could get "known type" facts about the arguments to "create" so i can turn it into direct calls into the repr in question
but not one instance has the "known type" flag set 18:54
oh perhaps it's just always inside an inline 19:00
that'd explain why it doesn't turn into fastcreate
because we just don't do facts in inlined blocks ;(
yeah, that must be it 19:02
maybe i'll be able to figure out the problem that prevents us ... 19:03
19:16 zakharyas joined 19:22 pharv_ joined 19:31 AlexDaniel joined 19:33 geekosaur joined 20:09 lizmat joined
timotimo the order of bbs after inline isn't exactly helpful; the dominance children/parent relationship doesn't seem to carry over from the inlinee 20:14
so going via the children isn't an option, and going in linear order or by following successors isn't necessarily sound
oh i went off-by-one in one of the BBs and so i thought the dominance graph was just looping first and last bb in the inline 20:18
jnthn We should probably just re-calc the dominance graph after the first pass and killing off BBs... 21:48
21:52 dogbert17 joined
MasterDuke jnthn: i did the same patch i did for proc and asyncsocket on asyncsocketudp, but it wasn't working right, long messages were getting cut off. i haven't had time to debug yet, but any quick ideas? 22:02
jnthn Uh, don't do it at all for UDP 22:11
There's no buffering on libuv's side, 'cus...well, it's UDP, so losing stuff is OK :) 22:12
We should just take the suggested size there
If they're getting cut off in other cases, well, that's LTA...
Oh, but you said it only happens for UDP, and I misread 22:13
So yeah, the answer is "don't do it there" :)
MasterDuke heh, easy enough 22:17
thanks
22:30 lizmat joined