timotimo ho-hum. we have effective_bytecode, but we don't have a corresponding bytecode size 00:50
so to dump the "currently executing bytecode", i'll have to hunt through the candidates to find the one that has the matching bytecode array address
well, at least i'll be able to :)
oh, i should be going to bed 00:59
but i've made progress already
next step is to make it mark up the current op if the frame being dumped is the one the tc is currently running 01:00
01:52 ilbot3 joined 05:13 lizmat_ joined 05:51 domidumont joined 05:57 domidumont joined 06:41 brrt joined
brrt good * #moarvm 06:52
06:58 vendethiel joined 07:01 domidumont joined 08:19 robertle joined
jnthn morning o/ 08:50
brrt \o jnthn 08:52
jnthn digs back into Proc[::Async] things, hoping he can get them wrapped up somewhat today 08:55
09:06 FROGGS joined
brrt i hope i'm going to have time for That Weird OSR bug 09:09
which doesn't appear to break on the OSR, for some reason
FROGGS hi brrt 09:10
brrt hi FROGGS
09:26 nebuchad` joined 09:27 colomon_ joined 09:30 cono_ joined, [Coke]_ joined, sivoais_ joined 09:41 camelia joined, FROGGS joined 10:13 zakharyas joined
lizmat jnthn: you may be interested in knowing that HARNESS_TYPE=6 no longer outputs the name of the test-file being run / completed 10:48
it also appears to hang after a while, with 1 moar process stuck in 0% CPU 10:49
jnthn *sigh* 10:50
At this point I'm semi-interested in reverting everything I did with Proc and leaving it to be somebody elses problem :/
lizmat well, maybe try to wrap it up first? and then maybe that issue will have gone away automagically ? 10:51
jnthn I've got RT #131576 sorted out at least 10:52
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=131576
jnthn Well, in POSIX-y systems
On Windows, guess it's back to how it was before
There's just so many icky timing issues when you are doing this sync 10:53
lizmat not really a consolation, but I just found a number of errors in (-) and (+) :-(
jnthn And so many ways to deadlock
lizmat which I had deemed to be done by now
jnthn Which of course was the case *before* I did any of htis
*this
I'm currently confused how this test ever worked: 10:54
my $tt = shell :out, :err, 'tty';
if $tt and (my $path = $tt.out.slurp(:close).trim)
Oh, and I worry in sorting out the plumbing thing I've probably re-introduced the deadlock in reading from stdout/stderr 10:56
Which we had before
Basically because if you don't know whether the handle is going to be plumbed to something else, you can't start reading from it. 10:57
The above one stopped working because it seems we made Bool unconditionally block on process exit 10:59
I'm sure I had it not doing so
And we got away with it before when we started reading immediately 11:00
But we can't have that fix and the plumbing fix.
And retain the current API
The amount of relatively complex code I've got by now to try and make something inherently async work with a synchronous API scares me. 11:01
lizmat then perhaps we shouldn't try to do it synchronously after all ? 11:03
jnthn Well, yeah, I've been saying that about Proc for a while :) 11:04
But it's in relatively widepsread use by now in the ecosystem
And in some cases it's simpler
Until you start dealing with multiple of stdin/stdout/stderr being bound
And as soon as there's more than one, a sync API is in bother. 11:05
About the only consolation is that with the current set of changes you can now do
my $foo = start $proc.out.slurp; my $bar = start $proc.err.slurp; and actually ahve the two read in different threads 11:06
Which you couldn't before
So there is at least a way out of the deadlock I guess. 11:07
I dunno what to do about the boolification change though. I need to check if I'm right that I had it one way and it got changed.
Yes 11:08
github.com/rakudo/rakudo/commit/e4...985e056afc
I'm not sure we can keep e4468c61 11:09
Or at least, not all of it
Since it worked because we faked the file handling plumbing and it no longer can work now I've resolved that 11:10
So, figure I'll have to undo some of that
Lunch; bbiab 11:12
11:24 yoleaux joined
nine So previously we'd return wrong results if the user neglected to wait. Now we wait for her and could run into deadlocks that way. Leaves two options: 1. just explode instead to make it obvious to the user that he's holding it wrong, 2. close everything instead of waiting, so there's no deadlock. Could cause other issues for the user though. 11:26
brrt i'm for exploding 11:33
11:52 domidumont joined 11:54 AlexDaniel joined
jnthn nine: The problem is that we've got spectests that depend on being able to do what I pasted above 11:57
And so probably ecosystem code too
We can go with checking if there are active handles, anyway 11:58
And only waiting if not
That seems to do it 12:06
jnthn spectets
12:30 ilbot3 joined
jnthn nine: Hm, your suggestion seems to work out nicely :) 12:44
jnthn does another spectest
nine \o/
brrt nine++ jnthn++ collaborative debugging
12:49 ilbot3 joined
timotimo collatteral debuggage 12:49
brrt hehe 12:56
the alternative would be overwriting the bytecode
well, truth be told, there are a bunch of other bytecode possiilities 12:57
timotimo i might be able to just always use frame->spesh_cand instead of searching through to find which one matches the bytecode address 13:03
brrt thatā€¦ ought to be right, yes
timotimo hm, then i get no output for that frame, though
brrt oh, that reminds
me
- the jit currently relies on spesh to run
- or well, spesh candidate generation to work 13:04
- it shoul dnot
jnthn Well, yes and no :) 13:05
This is one of the things I was alluding to in my spesh shortcomings do
*doc
timotimo you mean baseline optimization being completely missing?
jnthn Yeah 13:06
Part of the idea of that being that we'd JIT
13:13 ilbot3 joined 13:43 ilbot3 joined 14:02 zakharyas joined 14:04 sivoais joined 14:21 ilbot3 joined 14:42 brrt joined 14:53 ilbot3 joined 15:30 ilbot3 joined
timotimo i think i'll go ahead and merge it to master 15:39
Geth MoarVM: fcb1b35922 | (Timo Paulssen)++ | src/core/bytecodedump.c
add debug helpers: MVM_bytecode_dump, bytecode_dump_stackframe

shows not only the whole bytecode, but also puts a little arrow where the current op (or the next-to-run-after-return op) is. won't display jitted frame's original bytecode yet.
16:06 ilbot3 joined 16:15 ilbot3 joined, moritz joined
jnthn is working a bit on planning for the spesh re-work 16:26
Well, has been.
Time to stop and get some rest, I think
timotimo good rest! 16:35
jnthn Thanks. I've figured out a good way to get predictable runs, as brrt++ requested, at least :) 16:36
bbl
timotimo i'd love to have a good way to get predictable sleeps :| 16:39
i do know that if i go to bed after a certain time, birds are going to boot up and make trying to sleep impossible 16:40
17:28 zakharyas joined
DeadDelta Take sleeping pills :) 17:29
50mg of diphenhydromine hydrochloride immediatelly followed by a small meal. Half an hour later, you're sleeping. 17:30
timotimo is that an over-the-counter drug?
DeadDelta It is here.
Some places it isn't
timotimo there's some notable things that aren't over the counter in germany
geekosaur maybe you are sleeping after that; I'm not... 17:58
DeadDelta I sleep after 200mg :) 18:03
But are you having a meal? The food is crucial for this drug. 18:05
Or protein shake
timotimo the code from "'grinding out performance improvements" regressed a fair bit; it's now at 14.7 billion instructions, when in the middle of that blog post it was at 11 billion 18:12
geekosaur I'm just mostly immune to that kind of thing. ambien doesn;t work on e either (rather: it worked *once*. after that, I just get really dizzy for about 3 seconds and then nothing.) 18:15
weird brain chemistry ftw?
DeadDelta :) 18:17
geekosaur (it's genetic. overactive dopamine, possibly overactive GABA. I've already got early signs of familial essential tremor) 18:18
18:24 greppable6 joined, committable6 joined, evalable6 joined, unicodable6 joined, bisectable6 joined, benchable6 joined, quotable6 joined, bloatable6 joined, statisfiable6 joined 18:52 Ven joined 19:12 AlexDaniel joined 19:32 zakharyas joined, ggoebel joined
samcv good * everyone 21:48
timotimo heyo 21:51
21:51 DeadDelta left, DeadDelta joined
lizmat samcv o/ 21:52
timotimo jnthn: i think the way we put prof_allocated in for a param_op_o might be wrong; the branch it jumps to starts with prof_allocated on the register that the op would have written to, then it goes on to create the alternative value and prof_allocated the result value as well? 21:55
22:03 FROGGS joined
jnthn timotimo: Hm, that does sound suspect. given we just got better at kicking out the optional handling code, it also sounds like a candidate 22:13
yoleaux 21:29Z <DeadDelta> jnthn: RE from-slurpy-flat I tried with 2017.06 and 2017.05 builds, it's there in both at around 32%-38%
timotimo that doesn't explain the explosion all by itself, but if it mucks up the usage numbers somehow...? 22:14
jnthn Yeah, it's still odd
timotimo anyway, it throws out not only the block that'd fill in the default value, but also the whole getarg op, as well
it says it has a DeadWriter, too, but i don't know if that caused the issue or is just an expression of the same underlying problem 22:15
jnthn timotimo: Also, did you see the discussion on #perl6-dev about perl6-m --profile -e 'class A { method a() { } }; for ^100000 { A.a }' producing profile output that spends a bunch of time in List.from-slurpy-flat? 22:16
On 2017.05-468-g446dc19 I don't see it on the routines tab at all 22:17
timotimo i haven't looked into that 22:18
jnthn I'll try it at HEAD tomorrow
timotimo i do see it on HEAD 22:19
jnthn ah, ok
bizzare
timotimo it looks as though Nil.pm:8 calls into from-slurpy-flat on List.pm:275
it's the sink method
it has sink(*@ --> Nil) { } as its code 22:20
jnthn Why would sink *ever* be passed arguments?!
timotimo i have not a single clue
and since it's a method that also has a *%, why not just (|)?
it says "required by RESTRICTED.setting" 22:21
so it's probably something quite odd
jnthn That sounds odd too 22:22
timotimo i'm compiling a simpler one now
jnthn Not to mention that sink in Mu also returns Nil?
timotimo actually 22:23
all the methods on nil have *@
when they most probably could all just have |
jnthn I wonder if it was blanket applied 22:24
Also I wonder if this means soemthing sink-y changed at some point
22:24 Voldenet joined
jnthn Maybe when the for loop code-gen changed 22:24
timotimo i got the commit for it but helpfully fugitive isn't showing the commit itself where i could copy-paste it 22:25
parent ccee46ef0fa5c23b395ea852e517634dc4541341
and yes, all the *@ were put in at the same time
with | in the signature the from-slurpy-flat is gone 22:26
finishes in less than half the time, too
i'll spectest and push a commit 22:27
jnthn timotimo++ 22:28
lizmat aha, so it's an artefact of sinking Nil
timotimo yup 22:29
lizmat timotimo++
good night, #moarvm! 22:30
timotimo oh no, i have --optimize=0
no, i won't spectest like this %)
would be good to pull latest nom before 22:32
jnthn :) 22:36
jnthn heads for rest also
'night
timotimo gnite jnthn :) 22:37
and lizmat
i had to kill S11-modules/nested.t 22:40
S03-operators/mix.t and S32-io/open.rakudo.moar both have one test each failing 22:41
S32-io/open.rakudo.moar works fine when run outside the harness 22:42
same for the nested.t test