01:15
benabik joined
01:30
woosley joined,
woosley left,
woosley joined,
btyler joined
02:00
cognominal joined
06:26
colomon joined
06:38
FROGGS joined
07:03
zakharyas joined
|
|||
nwc10 | jnthn: I left valgrind running (1 core) overnight | 07:20 | |
all the spectests | |||
still not done | |||
this is on another "my" machine | |||
[so faster than the Rasbery Pi :-)] | 07:21 | ||
08:05
brrt joined
|
|||
brrt | \o #moarvm | 08:06 | |
hey i was thinking | |||
supposing i do get to work on moarvm-jit | 08:07 | ||
moar-jit | |||
where do i post progress reports? should i start a blog fot that? | |||
also, as a proof-of-concept i'm working on a polish notation calculator using dynasm | 08:08 | ||
nwc10 | a blog is probably useful. but get it added to planeteria.org/perl6/ | 08:12 | |
but really, if this is about a pending GSoC grant, ask the potential mentors | |||
brrt | i will :-) | 08:15 | |
masak | +1 for blog, regardless | 08:38 | |
brrt | starting a blog has been on my to-do list for ages | 08:39 | |
brrt is off for studying | 08:40 | ||
09:05
woolfy1 joined
|
|||
jnthn | +1 to blog also | 09:08 | |
12:03
btyler joined
13:50
benabik joined
13:57
jnap joined,
ggoebel111110 joined
14:07
brrt joined
|
|||
brrt | \o #moarvm | 14:07 | |
FROGGS | brrt: +1 for blog :o) | 14:08 | |
brrt | i have no choice then :-) | 14:10 | |
FROGGS | *g* | ||
brrt | just blogspot will do, right? | 14:11 | |
FROGGS | blogspot, wordpress... whatever you prefer | 14:13 | |
brrt | suggestion for a title? | 14:33 | |
14:50
jnap1 joined
|
|||
moritz | brrsblag | 14:51 | |
moarjit | |||
moarfasterthanlight | |||
benabik | brrtās bllg? | 14:52 | |
FROGGS | warp? | 14:56 | |
brrt | lol | 14:57 | |
FROGGS | sonic-brrt might work too (like sonic barrier / sonic bang) | ||
moritz | faster-than-brrt | 14:58 | |
tadzik | :D | ||
FROGGS | where no man has brrt before? | ||
brrt | i wonder why this triggers so many star trek references | 14:59 | |
moritz | just-in-brrt | ||
benabik | moritz: +1 | ||
FROGGS | perhaps a back-to-the-future reference would work also | 15:00 | |
moritz | back-to-jit | 15:01 | |
brrt | i'll let you know :-) | 15:02 | |
FROGGS | hehe | 15:04 | |
jnthn | moarrt | 15:07 | |
"Dead serious about JITting" | |||
brrt likes | 15:09 | ||
benabik | +1 | ||
timotimo | jnthn: the multispec stuff for onlystar protos is now in full effect on moarvm; did you get around to making it work on parrot and jvm yet? i seem to recall commits to that effect | 15:12 | |
jnthn | timotimo: no | ||
timotimo: I did the stuff to get onlystar protos consistently hidden in the CALLER chain on all of them. | 15:13 | ||
timotimo | ah, but the optimization to also skip the proto in dispatch is only present on moarvm so far? | ||
jnthn | right | 15:14 | |
I know how to do it on JVM | |||
timotimo | good to know | ||
timotimo is working on the weekly now | |||
jnthn | In fact I know how to do it on JVM better than Moar has it | ||
But that won't last too long :P | |||
timotimo | :D | 15:17 | |
jnthn | ok, I fried enough brains by teaching OO design while sleep deprived...time to go back to the hotel... | 15:19 | |
bbl | |||
16:20
dalek joined
16:27
benabik joined
17:19
FROGGS[mobile] joined
17:20
brrt joined
17:29
benabik joined
17:47
colomon joined
17:51
japhb_ joined
18:24
FROGGS joined
|
|||
retupmoca | jnthn: github.com/retupmoca/MoarVM/compar...r...master | 18:42 | |
jnthn: ^ seems to fix GH#88 (my Array[Type] precomp issue), spectests fine, all the modules I tried installing worked | |||
jnthn: but it feels like a bad fix to me. Unfortunately, I don't know the code well enough to know what this is actually doing | 18:43 | ||
jnthn: so...thoughts? :) | |||
timotimo | i was wondering how the "turn posix signals into a supply" thing could be done | 18:50 | |
and i don't really know how to hook it up | |||
because you really can't do much from a signal handler | 18:53 | ||
so there ought to be some kind of trampoline | 18:54 | ||
nwc10 | possibly the most useful thing you can do is write (non-blocking) status about the signal down a pipe | ||
to yourself, and have the event loop read the pipe | 18:55 | ||
timotimo | how does the event loop interact with the interpreter loop btw? | ||
jnthn | retupmoca: Yeah, that's almost certainly the wrong fix | ||
nwc10 | well, the "something" loop - I don't know the answer on the VM end | ||
but IIRC I thought that something like this would even work for siginfo (or whatever it's called) | 18:56 | ||
write the struct down a pipe (the write is legal) | |||
and hope the other end is reading fast enough | |||
jnthn | retupmoca: But knowing it's that op is helpful indeed | ||
nwc10 | not *sure* if it's possible to figure out a way to flag "we lost signals" or if it's useful or what | ||
jnthn | Well, most things where you want to notify involves shoving something into a queue, but from a signal handler that's really not good as it wants to grab a mutex. | 18:57 | |
Which is most certainly a no-no. | 18:58 | ||
nwc10 | yes, hence using a pipe to the same process | ||
jnthn | yeah | ||
retupmoca | jnthn: if you want me to keep poking it, I think I need to be pointed a little towards the correct fix | ||
not sure where to go from here | |||
jnthn | retupmoca: Well, did you have a backtrace from where it was triggered? | ||
retupmoca | in nqp-land? | ||
jnthn | yeah | 18:59 | |
The thing dump_backtrace spits out | |||
retupmoca | ah, I didn't do that for the problematic repossession | 19:04 | |
gist.github.com/retupmoca/a86b0726e55060b64baa | 19:05 | ||
19:08
cxreg joined
|
|||
retupmoca | when I compile the test file, current master repossesses two objects - one happens in ParametricRoleGroupHOW.get_selector (the add_dispatchee call) | 19:15 | |
and the second in ParametricRoleGroupHOW.specialize (on the line that calls get_selector) | |||
the second repossession is what seems to be causing the issue | |||
if I use gdb to force that one to return out of MVM_sc_wb_hit_obj, the test works fine | 19:16 | ||
jnthn | The question now is, why would this work out fine on other backends and not on Moar... | 19:17 | |
gimme a mo to check something | 19:18 | ||
retupmoca: Does it work out on JVM, ooc? | 19:23 | ||
retupmoca | jnthn: not a clue - I usually just have moarvm installed | 19:24 | |
jnthn | Or Parrot for that matter. | ||
OK, I went looking for a discrepancy and now wonder if it's a bug everywhere. | |||
If it *is* I think I know that may be up. | |||
retupmoca | jnthn: I can build a -j and a -p if you need me to test | 19:25 | |
jnthn | get_selector calls add_dispatchee | ||
retupmoca | or I can link you my reproduction gist | ||
jnthn | This does an nqp::push onto the dispatcher's candidate list. | ||
That does *not* currently seem to trigger repossession on any backend. | |||
The end result is that "@!add_to_selector := [];" tosses what was added, and triggers repo. But the actually adding of the candidates does not. | 19:26 | ||
So they vanish, which...hm...is your error something about no candidates? | |||
retupmoca | error is here: gist.github.com/retupmoca/9953591 | ||
initial exception is: Cannot call ''; none of these signatures match: | |||
so...no anything | 19:27 | ||
jnthn | yeah, "none matched" and an empty list means "there were none" | ||
That matches perfectly. | |||
retupmoca | so the problem is actually that we aren't repossessing enough? | 19:28 | |
jnthn | Looks like it may be that | ||
If you want to try a hack to fix it | 19:29 | ||
In src/Perl6/Metamodel/BOOTSTRAP.pm locate the line Routine.HOW.add_method(Routine, 'add_dispatchee', nqp::getstaticcode(sub ($self, $dispatchee) { | |||
You'll see a | |||
my $disp_list := nqp::getattr($dc_self, Routine, '$!dispatchees'); | |||
Beneath it, to force repo, just add a | |||
nqp::bindattr($dc_self, Routine, '$!dispatchees', $disp_list); | 19:30 | ||
it's a no-op really. | |||
But it'll trigger repo. | |||
retupmoca | jnthn: building | 19:31 | |
jnthn | It may have other interesting consequences... | 19:32 | |
If you feel like building an r-p or r-j to try this out too that's also great. | |||
retupmoca | jnthn: I'll do that. | ||
jnthn: if this works, is this the fix we want? or do we want to trigger repossession some other way? | 19:33 | ||
jnthn | retupmoca: Well, if you look at the push_o op in interp.c, and push in JVM's Ops.java, or similar on Parrot in sixmodelobject.pmc, none of those trigger repo on a push | 19:34 | |
this is kinda why I'm asking. | |||
(if it shows up elsewhere) | |||
Because if it does then we undersand what's going on. | |||
And if it works elsewhere then there's more to it than meets the eye. | |||
retupmoca | gotcha | 19:35 | |
well, that hack fixes it on perl6-m | |||
or fixes my golfed version anyway, let me get panda and try the actual modules | |||
and I'm building a non-hacked perl6-j/p to test | 19:37 | ||
jnthn | retupmoca++ | ||
retupmoca | jnthn: if this is doing what we think it is, do we want to make push_o and friends trigger repossession? | 19:40 | |
if so, I think I'll have time to PR fixes tonight | |||
jnthn | retupmoca: We can try that, but who knows what is relying on it *not* triggering it righ tnow | 19:41 | |
retupmoca | true | ||
if I get the time, I'll test that as well then | |||
19:41
brrt joined
19:49
eternaleye joined
|
|||
timotimo | jnthn: can you tell me if there's a sensible spot to cause supplies to get a value after a signal has reached the moarvm process? | 19:50 | |
so the signal handler could push a value into some queue or other for the libuv event loop to see | 19:51 | ||
but where does that event loop get pumped? | |||
jnthn | timotimo: I'd leave it for now | 19:52 | |
timotimo | OK | ||
jnthn | timotimo: I'm going to in a bit add an "async service thread" whose event look will deal with various async-y things and then shove stuff into an appropriate queue. | ||
*event loop | |||
timotimo | OK | ||
jnthn | And we may be able to do that | 19:53 | |
timotimo | it's just i have the desire to catch a SIGWINCH | ||
and putting an actual callback in there using NativeCall sounds dangerous; given that the vast majority of things are not allowed in signal handlers | |||
jnthn | .oO( Much more appropriate than SIGWENCH... ) |
||
timotimo | :) | ||
sigwrench? :) | |||
jnthn | Yeah, that's...dangerous. :) | 19:54 | |
Well, libuv does provide abstractions for this stuff | |||
TimToady | why we require "use MONKEY_WRENCH;" for that | ||
jnthn | So I think we should use those... | ||
But I don't know their exact sematnics | |||
I am aware that there's funky stuff wrt signals, threads, which thread gets the signal, some signals being thread specific, maybe sometimes sorta, etc. :) | 19:55 | ||
timotimo | yeah :| | ||
what i *could* do is have a tiny C library that registers a super simple signal handler that just sets a flag to 1 and you can retrieve the flag and clear it | 19:56 | ||
jnthn | How soon do you need it? | 19:57 | |
timotimo | knowing my programming speed | ||
jnthn | I'm planning to work on async bits and pieces later this week. | ||
timotimo | some time this year | ||
jnthn | oh. :P | ||
timotimo | i can easily deal without having it | ||
it's just ... then i could just start doing stuff | |||
jnthn | Well, libuv has a uv_signal_[init&start&stop] | 20:01 | |
That deliver the signal on the event loop | |||
What isn't clear from uv.h is their exact semantics. | |||
timotimo | if only they had documentation for that | 20:02 | |
jnthn | heh | 20:03 | |
Well, it *looks* like it does the nasty for us | |||
that is, it figures out how to install the the handler and safely marshall it to the event loop | |||
Meaning that I can probably, once I get the service thread in place, get you this without a lot of hassle. | |||
timotimo | damnit, i can't find that cool library again that i wanted to bind with NativeCall :| | 20:04 | |
and i've already forgotten how i found it the last time | |||
jnthn | Was it something to do with cats and user interfaces? | 20:05 | |
timotimo | heh | 20:09 | |
it's a lightweight terminfo database library thingie | 20:10 | ||
i don't want to bind ncurses | 20:11 | ||
it'd be terrible | |||
our ncurses binding has already bound 5 functions | 20:18 | ||
initscr, clear, endwin, printw, getch | |||
and it doesn't even bind libncursesw, just the regular ncurses >_< | |||
retupmoca | jnthn: without the hack, parrot works fine and JVM throws the same error as moar | 20:20 | |
jnthn | retupmoca: eek. the plit thickens. | 20:21 | |
uh. plot. | |||
timotimo | well, moar and jvm have been the "stricter" backends so far, have they not? | ||
jnthn | timotimo: well, kinda, but in this case I don't immediately see the "strictness" | 20:22 | |
:) | |||
Oh...I wonder... | |||
hmm | 20:23 | ||
Thing is that Parrot uses RPAs for all the arrays | |||
On Moar and JVM it's different. There's a VMArray REPR and then the VM provides a BOOTArray for bootstrapping. | 20:24 | ||
ah, bingo... | 20:25 | ||
ownedresiablepmcarray.pmc barriers all over | |||
timotimo | \o/ | ||
jnthn | Which is why we see this. | 20:26 | |
er, why it works I mean | |||
push gets barriered there. | |||
timotimo | yes | ||
seems logical | |||
jnthn | Well, I guess we can try push_o in Moar triggering the WB | ||
Which is a one-line patch | 20:27 | ||
timotimo | and the same on jvm? | ||
jnthn | I just worry if it will cause other bustage elsewhere. | ||
timotimo | should it, though? | ||
jnthn | Yeah, smae on JVM | ||
2-line patch there | |||
well, it probably should, yeah | |||
retupmoca | jnthn: I'm building a push_o moarvm patch right now | ||
timotimo | sounds good in any case :) | 20:28 | |
retupmoca | t/spec/S04-phasers/first.t fails tests if I patch moarvm | 21:08 | |
fails 3/4 if I just patch push_o, fails 2/4 if I patch push_* | |||
jnthn: ^ | 21:09 | ||
jnthn | retupmoca: uh, I'm not sure that's related | 21:10 | |
retupmoca: Do repeated runs of it without changing the patch and you may get the variance anyway? | |||
Also set MVM_SPESH_DISABLE=1 and try it. | |||
I think you may be seeing an unrelated issue. | |||
retupmoca | jnthn: it does run fine if I run the test file directly | 21:11 | |
jnthn | retupmoca: I don't think it's related to your patch. | 21:12 | |
retupmoca: I'm much more concerned about its effects on pre-comp of other things. | |||
retupmoca | jnthn: I've successfully installed these modules: gist.github.com/retupmoca/cf13a8fe2562adfd1ae1 | 21:20 | |
not seeing any issues yet | |||
(patch is github.com/retupmoca/MoarVM/compar......master) | |||
any in particular I can check for precomp breakage? | |||
anything* | |||
jnthn | retupmoca: LWP::Simple and URI tend to be the ones that trip things most | 21:28 | |
I see how have URI | |||
*you have | |||
retupmoca: Patches look sane | 21:30 | ||
Need to rest now...barely slept last night. Hope this one is better... | |||
'night | |||
retupmoca | jnthn: will PR | 21:31 | |
lizmat | jnthn: gnight! | ||
retupmoca | github.com/MoarVM/MoarVM/pull/92 | 21:32 | |
jnthn: night! | |||
jnthn++ # walking me through bugfixes | 21:33 | ||
21:53
eternaleye joined
22:41
benabik joined
23:30
benabik joined
|