timotimo | IO::Socket::Async.Supply has a :$scheduler argument that gets ignored ): | 00:08 | |
MasterDuke | timotimo: Zoffix might have already addressed that in his post-release branch. at least, i think i remember something similar | 00:20 | |
timotimo | oh? interesting | ||
MasterDuke | or maybe it's just called out in some inconsistency notes, i'm really not sure | 00:21 | |
timotimo | ah, he added scheduler being passed on in print-to | ||
why is libuv giving me addr == NULL? :\ | 00:32 | ||
we are currently receiving an extra empty datagram after every bunch of udp packets read by libuv | 00:37 | ||
i have a simple fix for that already | |||
MasterDuke | seems an easy win | 00:39 | |
timotimo | yup | 00:41 | |
IO::Socket::Async::Datagram.new(data => "hi\n", hostname => "127.0.0.1", port => 48878) | 00:43 | ||
IO::Socket::Async::Datagram.new(data => "hi\n", hostname => "127.0.0.1", port => 60130) | |||
IO::Socket::Async::Datagram.new(data => "hi\n", hostname => "127.0.0.1", port => 59787) | |||
IO::Socket::Async::Datagram.new(data => Buf[uint8].new(104,105,10), hostname => "127.0.0.1", port => 53398) | 00:45 | ||
^- this one's with :bin in the Supply args | |||
btw, supplying :!enc in there makes it blow up when the first message arrives, Type check failed in binding to parameter 'encoding'; expected Str but got Bool (Bool::False) | 00:46 | ||
00:46
yoleaux joined
|
|||
MasterDuke | think that's another thing Zoffix at least pointed out | 00:46 | |
timotimo | cool :) | ||
react whenever IO::Socket::Async.bind-udp("127.0.0.1", 9999).Supply(:datagrams, :!enc) { .perl.say } | 00:47 | ||
how does that look? | |||
i probably want to rename it "datagram" instead of "datagrams" | |||
MasterDuke | nice | ||
timotimo | not so sure if it is, though | ||
Geth | MoarVM/udp_receive_hostname_port: 967102bc67 | (Timo Paulssen)++ | src/io/asyncsocketudp.c expose both hostname and port of received datagrams |
00:56 | |
MoarVM/udp_receive_hostname_port: 7b27ca8a2e | (Timo Paulssen)++ | src/io/asyncsocketudp.c ignore libuv-caused "fake" empty datagrams |
|||
MasterDuke | heh. i have a template for sp_findmeth, but segv almost right away building nqp | 00:59 | |
timotimo | :D | 01:02 | |
MasterDuke | timotimo: how are you at reading templates? up for taking a look if i gist it? | ||
timotimo | if it weren't bedtime, i'd look | 01:14 | |
maybe i can look while i brush my teeth | |||
MasterDuke: ^ | 01:16 | ||
MasterDuke | gist.github.com/MasterDuke17/9b8db...60f76f62a4 | 01:17 | |
my suspicion is something about the sizes of the what's read from the registers, but i'm not really sure... | 01:18 | ||
timotimo | hm, have you verified with another example that the "carg $0 ptr" is correct to get the register's address properly? | 01:20 | |
i think you need an additional layer of pointeryness | 01:21 | ||
like, the code in the template is the same for the obj and the res arguments, but obj is just *obj = GET_REG and res is *res = &GET_REG | 01:22 | ||
MasterDuke | sp_decont does the same thing | ||
`MVMRegister *r = &GET_REG(cur_op, 0); ...; STABLE(obj)->container_spec->fetch(tc, obj, r);` | 01:23 | ||
timotimo | mhm | ||
MasterDuke | becomes `(callv (^getf (^getf (^stable $1) MVMSTable container_spec) MVMContainerSpec fetch) (arglist (carg (tc) ptr) (carg $1 ptr) (carg $0 ptr)))` | 01:24 | |
timotimo | weird, i wonder how that works | ||
MasterDuke | i did think it was a little odd, but then compared with sp_decont and just did what it did | 01:25 | |
timotimo | yeah, weird | ||
maybe if an argument to an opcode is r/w it'll have an additional layer of pointer for free in the template? | 01:26 | ||
could it be the invokish nature of the op isn't properly taken into account unless we do something special in the template itself? | 01:27 | ||
have you tried dumping the asm yet? | |||
or even just the graphviz tree in the jit log? | 01:28 | ||
MasterDuke | no, is there an easy way to do that? | ||
ah, i think i see it in the log, but gotta afk for a bit | 01:29 | ||
timotimo | surely the $3 thing, i.e. the 16bit right out of the instruction stream, will be passed properly by the exprjit compiler? | 01:30 | |
yeah, wval also just does it like that | 01:31 | ||
we should just ping brrt with the gist url: gist.github.com/MasterDuke17/9b8db...60f76f62a4 | 01:36 | ||
and maybe you can also put a backtrace and listing and such from gdb at the point of the segfault | 01:37 | ||
unless of course the segfault is inside the assembly code rather than the MVM_blah function | |||
good luck! o/ | |||
MasterDuke | gist updated, thanks for looking at it timotimo++ | 02:16 | |
oh, that may have been silly | 02:19 | ||
swapped $1 and $3 in the sub expressions of the eq | 02:20 | ||
hm. built nqp, but rakudo build died. not with a segv though. `Cannot invoke null object` | 02:21 | ||
in src/Perl6/Metamodel/MROBasedMethodDispatch.nqp: `my %submethods := $obj.HOW.submethod_table($obj);` | 02:23 | ||
02:57
ilbot3 joined
03:09
yoleaux joined
04:54
nativecallable6 joined
05:50
statisfiable6 joined
06:05
geospeck joined
06:27
klapperl joined
07:10
ilmari[m] joined
09:11
yoleaux joined
09:23
brrt joined
09:33
travis-ci joined
|
|||
travis-ci | MoarVM build passed. Aleks-Daniel Jakimenko-Aleksejev 'Revert "Try to use egcc when compiling on OpenBSD" | 09:33 | |
travis-ci.org/MoarVM/MoarVM/builds/331388501 github.com/MoarVM/MoarVM/compare/9...4d1099b0b1 | |||
09:33
travis-ci left
10:15
domidumont joined
10:23
domidumont joined
10:39
zakharyas joined
10:42
benchable6 joined,
bisectable6 joined,
coverable6 joined
10:43
releasable6 joined
10:44
releasable6 joined
10:45
releasable6 joined
10:51
domidumont joined
|
|||
nwc10 | good *, #moarvm | 10:53 | |
jnthn | o/ nwc10 | 10:59 | |
11:01
brrt joined
|
|||
brrt | good * #moarvm | 11:01 | |
yoleaux | 21 Jan 2018 18:36Z <MasterDuke> brrt: line 104 of github.com/MoarVM/MoarVM/blob/mast...t/tiles.md has a sentence that doesn't end | ||
jnthn | It goes on forever? :) | 11:02 | |
nine | brrt: I pushed a couple of expr JIT templates into my inline_in_place branch. After the initial shock over the unusual syntax, I've found those templates incredibly nice to work with. Constructs that were really tedious to implement in the lego JIT are now downright trivial. | 11:04 | |
brrt | thanks :-D | 11:05 | |
i'll check that out | |||
nine | brrt: speaking of, do you have any idea about this? github.com/MoarVM/MoarVM/commit/89...bf3eaf7b11 | ||
11:06
yoleaux joined
|
|||
brrt | no, that should work. i'll check it out | 11:07 | |
there's no OR tile defined…. 😭 | 11:24 | ||
11:27
lizmat joined
|
|||
Geth | MoarVM: 21267d80ff | (Bart Wiegmans)++ | 4 files Implement tile for OR operator nine++ tried to implement the 'isnull' opcode as an expression template as (or (zr $1) (eq $1 (^vmnull))) ... (7 more lines) |
11:36 | |
11:48
brrt joined
12:03
brrt joined
12:13
lizmat joined
|
|||
timotimo | brrt: did you see MasterDuke's work in the backlog? gist.github.com/MasterDuke17/9b8db...60f76f62a4 - this is for sp_findmeth | 12:14 | |
12:22
domidumont joined
12:37
reportable6 joined
|
|||
brrt | did not | 12:43 | |
timotimo | OK, cool. maybe you can figure this out :) | 12:54 | |
it looked acceptable to me | |||
bbiab | |||
13:03
brrt joined
|
|||
brrt | yeah, it looks good to me as well | 13:06 | |
i'll check it out | |||
timotimo | thanks | 13:08 | |
brrt | i'll point jit-bisect to it :-) | ||
13:33
brrt joined
13:49
brrt joined
14:00
yoleaux joined
14:25
geospeck joined
14:34
yoleaux joined
|
|||
brrt | I don't think the problem is in the template, though | 14:35 | |
timotimo | oh? that's nice | 14:36 | |
14:41
domidumont joined
14:49
domidumont1 joined
15:13
zakharyas joined
15:37
geospeck joined
15:50
yoleaux joined
16:12
brrt joined
|
|||
brrt | ah, hang on, i think i'm seeing the issue | 16:15 | |
no, i'm not | |||
oh, now i think i am | 16:21 | ||
the fallback case for sp_findmeth is invokish | 16:22 | ||
lemmesee how to do that in the template | |||
16:23
yoleaux joined
|
|||
timotimo | ah, so it *is* about invokish stuff! i thought it'd take that from the oplist | 16:28 | |
brrt | not sure…. | 16:30 | |
nine | brrt: if you are not sure, who would be? :) | 16:31 | |
brrt | hehe. good point | 16:35 | |
so, i think it does get them from the oplist, it's just that sp_findmeth is marked noninvokish | |||
or not marked invokish, to be more exact | 16:36 | ||
jnthn | It prolly should be | 16:38 | |
sp_decont also if it ain't already | |||
nine | Otherwise the basic block merger might introduce new exciting failures | 16:39 | |
brrt | hmmm | 16:42 | |
maybe, but i think the original rationale for not marking them invokish is to be able to only be invokish in the slow case | |||
which brings me back to an idea i had earlier | 16:43 | ||
what if we let the sp_findmeth fail by setting a NULL value | |||
and then continue by checking that NULL value and branching to the slow case if so | |||
(this would mean adding a new basic block) | 16:44 | ||
the sp_findmeth case is nasty… | 16:48 | ||
17:12
brrt1 joined
17:27
domidumont joined
17:35
yoleaux joined
|
|||
Geth | MoarVM: samcv++ created pull request #786: ucd2c.pl: Fix White_Space/space Unicode Property +many other improvements |
17:41 | |
17:41
brrt joined
17:43
evalable6 joined
18:45
yoleaux joined
19:00
zakharyas joined
19:12
Kaiepi joined
19:21
zakharyas joined
19:36
yoleaux joined,
quotable6 joined
19:55
Kaiepi joined
20:02
Kaiepi joined
20:19
Ven`` joined
20:21
yoleaux joined
21:01
yoleaux joined
21:36
yoleaux joined
21:40
yoleaux joined
21:56
Ven`` joined
|
|||
MasterDuke | glad to see i eventually got the template right | 22:03 | |
heh. though the dark center to that silver lining is that it seems the solution isn't trivial | 22:04 | ||
22:11
Ven`` joined
|
|||
timotimo | aye | 22:16 | |
22:22
squashable6 joined,
unicodable6 joined,
committable6 joined,
bloatable6 joined
|
|||
MasterDuke | is it all on brrt now? | 22:26 | |
lizmat | looks like :-( | 22:32 | |
jnthn | .tell brrt Having pondered it a little, sp_findmethod is really "we couldn't do a good opt on the method call here". From the spesh logs I've looked at of late, they are all on code paths that we no data for - meaning they were cold. Given that, being clever and trying to make it a half-invokish maybe isn't worth it. | 22:48 | |
yoleaux | jnthn: I'll pass your message to brrt. | ||
MasterDuke | jnthn: so just marking it invokish in the oplist might make the template work? | 22:54 | |
hm, nope, same error when building rakudo | 22:57 | ||
jnthn | Depends if that info is conveyed to the right place, and if that's even the problem | 22:58 | |
MasterDuke | oops, forgot to run update_ops | ||
22:59
Ven`` joined
|
|||
MasterDuke | trying again... | 22:59 | |
jnthn | My point to brrt was mostly, "if that is the issue, don't feel a need to try and solve a hard problem we might not benefit from" :) | ||
MasterDuke | rakudo just built ok | 23:02 | |
jnthn | hah, neat :) | 23:03 | |
MasterDuke | i'll run a spectest and then PR that template with the addition of :invokish on the op | ||
23:09
domidumont joined,
greppable6 joined
23:11
Ven`` joined
23:23
Ven` joined
|
|||
Geth | MoarVM: MasterDuke17++ created pull request #787: Add JIT template for sp_findmeth |
23:45 | |
23:48
yoleaux joined
|