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