00:24
ilmari[m] joined
01:50
unicodable6 joined
02:56
ilbot3 joined
03:23
colomon joined
04:03
evalable6 joined
05:36
quotable6 joined,
evalable6 joined,
nativecallable6 joined,
coverable6 joined,
committable6 joined,
bloatable6 joined,
greppable6 joined,
bisectable6 joined,
releasable6 joined,
unicodable6 joined,
benchable6 joined,
squashable6 joined,
statisfiable6 joined
06:42
brrt joined
|
|||
brrt | good * #moarvm | 06:47 | |
nwc10 | good *, brrt | 07:16 | |
brrt | it was cold this morning | 07:18 | |
nwc10 | but laptops with busy CPUs are warm and toasty? | 07:19 | |
brrt | fortunately | ||
that's why we're working on perl6 | 07:20 | ||
actually... | |||
07:35
domidumont joined
07:54
domidumont joined
08:49
brrt joined
|
|||
brrt | i may have the ADD CONST -> ADDR resolved | 08:52 | |
09:21
robertle joined
|
|||
jnthn | morning o/ | 09:55 | |
brrt | morning | 10:13 | |
getarg_i and stuff, are those new ops | |||
jnthn | Think so, I'm not sure what getarg_i is doing yet, though | 10:15 | |
brrt | hehe | ||
okay | |||
well, i know to update then | 10:16 | ||
nine | jnthn: arg_i puts something into the args buffer, getarg_i reads it from there | ||
jnthn | huh? | ||
That's what .param is for, no? | |||
*param_*, I mean | |||
nine | Yes, but param requires a new callframe which nativeinvoke* doesn't set up | ||
jnthn | Why would it need to take something out of the args buffer, though? | 10:17 | |
nine | IOW param_* is from perspective of the callee while getarg_* is from the caller | ||
rw args | |||
jnthn | But rw-ness is handled by containers? | ||
10:18
domidumont joined
|
|||
nine | Well I never claimed to understand this stuff :) | 10:19 | |
jnthn | :) | 10:20 | |
nine | I did find out that rw args involve LexicalRefs, but failed to actually recognize the design behind them, i.e. the why. | ||
jnthn | Well, native refs in general | ||
Could be an attr ref too, or a positional ref | |||
These are all managed references to a native value stored somewhere | |||
That is, they keep alive both the container and allow the value to be retrieved inside of it | 10:21 | ||
The point being that we can pass them around as first-class objects, just as we can with Scalar | 10:25 | ||
And the reason for pushing this down to the VM level being so that we can later optimize them out over call boundaries when inlining happens | 10:26 | ||
nine | So taking a step back: how is the process of getting a native rw argument's value into the VM and the new value out and back to the caller? | 10:30 | |
jnthn | For an int, it'd most easily be done as a decont_i and an assign_i | 10:32 | |
We can't really pass a pointer directly into the data structure holding the value itself, since if the code in question does a callback and we GC, the thing could move | 10:33 | ||
I now see why you added getarg_i though: using the args buffer as a place the JITted nativecall can write a result back | 10:34 | ||
nine | exactly | ||
jnthn | I guess it'll work out OK | ||
I just hope we'll not see use of it beyond the JIT :) | 10:35 | ||
nine | I create a QAST::Var:scope<local>:decl<param>, a QAST::Var:scope<lexicalref>:decl<var>, bind the param to the var, decont it into a QAST::Var:scope<local>:decl<var> and pass that to nativeinvoke. Afterwards I assign_i the value I get from getarg_i to the lexicalref | 10:36 | |
jnthn | OK, that'll work | ||
nine | Just feels a bit roundabout with all those variables :) | 10:40 | |
jnthn | True, though I'd assume the EXPR JIT will be able to eliminate some of the copying :) | 10:41 | |
brrt | wow, uppercases :-) | ||
yeagh | |||
jnthn | haha | ||
Too much EXPR from the Perl 6 grammar :P | 10:42 | ||
brrt | making a version of the nativecall JIT that outputs an expr tree is somehwere on the radar | ||
as are a billion other things | |||
10:46
domidumont joined
|
|||
Geth | MoarVM/jit-expr-optimizer: 8 commits pushed by (Bart Wiegmans)++ | 11:23 | |
11:26
cog_ joined
11:31
zakharyas joined
|
|||
Geth | MoarVM/jit-expr-optimizer: f1306806cc | (Bart Wiegmans)++ | src/jit/optimize.c Eliminate COPY of CONST COPY is opaque for tiling, so the COPY of CONST values disables tiles that operate on a const directly. This allows us to use the CONST value directly which should help us pick better tiles. |
11:32 | |
brrt | we should have some way to measure the effects | 11:33 | |
nine | /win 10 | 12:25 | |
buggable | nine, Thank you for entering Accidental /win Lottery! The next draw will happen in 3 weeks, 2 days, 11 hours, 34 minutes, and 25 seconds | ||
nwc10 | do we ever get to see the /winner ? | 12:26 | |
nine | nwc10: irclog.perlgeek.de/moarvm/2017-11-01#i_15383996 | ||
nwc10 | ooh, thanks, I wasn't aware that it really had a proper ceremony | 12:27 | |
ilmari | Ā«The next draw will happen in -1 weeks, 6 days, 23 hours, 27 minutes, and 22 secondsĀ» - buggyble? | 12:28 | |
nwc10 | yes, that | ||
that was awesome | |||
irclog.perlgeek.de/moarvm/2017-11-01#i_15384127 | |||
had that ready to paste | |||
it's almost enough to be worth staying up for, to see if it's been fixed | |||
ilmari looks at the logs for 2017-10-01 and 09-01, and sees the logging bot has had at least two different character encoding bugs | 12:30 | ||
lizmat | ilmari: from what I undertand, irclog runs on Perl 5 with a mod_perl / old MySQL backend | 12:33 | |
and a database that goes back to the days when DBD::mysql's support for utf-8 was, eh... not optimal | 12:34 | ||
ilmari | yeah, I guess it got altered to utf8mb4 sometime in the last month | 12:37 | |
nwc10 | and when running something persisent on Rakudo would have leaked memory like the Jumblies preferred maritime transport | 12:39 | |
13:02
brrt joined
13:06
lizmat joined
|
|||
lizmat | jnthn: if Thread.start fails for some reason, is it correct that it doesn't return ? | 13:58 | |
jnthn | I'd expect an exception if it's a failure the VM can recover from | 13:59 | |
lizmat | ah, it never reaches the code after the Thread.start because of the exception: duh! | 14:02 | |
jnthn | Yeah, the thread that tried and failed to start another one is the one where we'd report it. | 14:03 | |
lizmat | it would be nice if we could stop one short of actually using the last thread | 14:08 | |
hmmm... unless... | |||
signals, do they run on the general workers, jnthn? | |||
jnthn | We can't know. | ||
Yes. | |||
lizmat | perhaps it's an idea to run them on affinity workers or timer workers ? | 14:09 | |
jnthn | Why? | ||
lizmat | so that *if* all threads are in use, we can still safely control-c out of it ? | ||
and with the snapper, perhaps find out what was going on ? | 14:10 | ||
jnthn | An affinity thread can be every bit as in use as a general one | ||
Timer ones I guess we do advise people not to do long-running things on, but we can't prevent them from doing that | |||
I guess we could view signals as kind of "urgent" though and scheduler them on the timer thread. | 14:11 | ||
lizmat | perhaps we need a seperate thread for handling signals, apart from all of the other ones > | ||
jnthn | *schedule | ||
That just moves the problem :) | |||
And means yet more kinds of worker | |||
Which isn't really that ideal | |||
If you only have 4 cores, and we have 4 types of worker, then the most you're going to then get without triggering the heuristic deadlock detection is one of each | 14:12 | ||
lizmat | hmmm... maybe I should look a little deeper into how signals are actually hooked up again | ||
jnthn | Doing them on the timer thread could be a decent compromise, though | ||
I don't think it can make things worse, and for some cases it may make them better. | |||
lizmat | I mean, yes, you want signals to be delivered in time, so, that in a way makes sense | ||
jnthn: I'll make the change... | 14:13 | ||
yeah, that improves things | 14:18 | ||
15:06
lizmat joined
15:31
brrt joined
15:41
brrt joined
16:28
brrt joined
16:47
lizmat joined
17:19
zakharyas joined
17:50
domidumont joined
20:04
domidumont joined
20:12
zakharyas joined
20:53
unicodable6 joined
21:07
zakharyas joined
21:22
MasterDuke joined
22:24
brrt joined
22:56
colomon joined
|
|||
ugexe | libuv has exposed a uv_os_getppid in the last version bump... should we use it for a MVM_proc_getppid so child processes can tell when their parent process has exited? | 23:10 | |
MasterDuke | oh, there's also something about ttys: `* unix, windows: map ENOTTY errno (Ben Noordhuis)` | 23:14 | |
there's been a bunch of work recently related to detecting TTYs i think, maybe that'll help | 23:15 | ||
timotimo | hm, that sounds more like getting the proper error message when some only-tty-action is used on a non-tty file descriptor? | 23:17 | |
ugexe | one just exposes constant ENOTTY and the other is for win7 i believe. any other ones we should already have from the last version bump. | ||
23:50
lizmat joined
|