Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2013-11-27

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:35 _ilbot joined #moarvm
00:35 Topic for #moarvm is now https://github.com/moarvm/moarvm | IRC logs at  http://irclog.perlgeek.de/moarvm/today
02:51 colomon joined #moarvm
02:51 benabik joined #moarvm
06:23 FROGGS[mobile] joined #moarvm
07:48 FROGGS joined #moarvm
07:53 ssutch joined #moarvm
08:02 jnthn You can maybe make soem guess by figuring out where the first state var is...but it won't be an accurate guess :)
08:05 diakopter first line?
08:06 diakopter 90% in?
08:06 FROGGS *g*
08:14 jnthn damm, the coffee so ain't working
08:18 FROGGS hold on, I'll check a new one here...
08:20 nwc10 try gin?
08:26 jnthn nwc10: wat? :P
08:29 FROGGS hmm, coffee is okay here, you can come over on now :o)
08:29 FROGGS err, come on over
08:29 FROGGS I hope that is a correct idiom
08:30 jnthn well, let's try this cup...and teach... :)
08:32 FROGGS you had the chance :o)
08:39 nwc10 I think that your coffee might have gone cold by the time he could get to you
09:18 nwc10 Error while compiling op openpipe: No registered operation handler for 'openpipe'
09:18 nwc10 that's the expected place we get to?
09:19 FROGGS yes
09:19 FROGGS nwc10: feel free to implement openpipe :o)
09:48 FROGGS jnthn: how do I add a debug stmt to my xor implementation?
09:48 FROGGS this: push_op(@ops, 'say', $qastcomp.coerce($qastcomp.as_mast(QAST::SVal.new( :value<789> ), :want($MVM_reg_obj)), $MVM_reg_str).result_reg);
09:48 FROGGS throws: operand type 32 does not match register type 64
09:49 FROGGS :/
09:49 nwc10 FROGGS: sorry, busy fighting hateful code at work
09:49 FROGGS nwc10: I might have to fight PHP and VisualBasic code today :/
09:50 FROGGS so, very very hateful code
09:50 nwc10 My nemesis is website testing code written in JS
09:50 nwc10 I find that the docs make as much sense if I s/asychronous/smurf/g
09:50 FROGGS :o)
09:50 FROGGS yeah
09:50 nwc10 to be fair, I've stopped trusting the docs, and I'm reading the source code.
09:51 nwc10 it seems that the (incomplete) docs are written as if "callback" and "asychronous" mean the same.
09:51 FROGGS could be a bit disturbing, yeah
09:53 * FROGGS .oO( hmmm, tasty reactive asynchronous callbacks, Yum! )
10:18 jnthn Callbacks. The goto of the async era...
10:19 jnthn FROGGS: You Want to my $sreg = $*REGALLOC.fresh_s(); or so, and then do a const_s to get the string into the register, and then use say on it.
10:19 FROGGS thanks!
10:19 FROGGS :D
10:37 FROGGS my $sreg := $*REGALLOC.fresh_s();
10:37 FROGGS push_op(@ops, 'const_s', $sreg, MAST::SVal.new( :value($n) ));
10:37 FROGGS push_op(@ops, 'say', $sreg);
10:37 FROGGS operand type 32 does not match register type 64
10:37 FROGGS :(
10:38 FROGGS though... maybe this is from the ops afterwards?
10:40 FROGGS ahh, nvm
10:40 FROGGS it was the code afterwards
10:42 jnthn ah :)
10:43 FROGGS I thought there is no extra check stage when executing the ops, so I thought it will run my say() in all cases when I put it upfront
10:43 jnthn Oh lots of validation happens in different places
10:43 jnthn Some sanity checks int he assembler
10:44 jnthn And detailed checks at validation time
10:44 FROGGS why that? I write perfect code :o)
10:45 FROGGS it is just hard for me to locate the error when there is no hint
10:47 jnthn The 32 and 64 are hints ;)
10:48 jnthn You can look those up in I guess interp.h
10:56 diakopter also at the top of the qast->mast files
11:16 FROGGS yeah, I know what that means, but I have three candidates which could produce that
11:37 cognominal joined #moarvm
11:46 colomon joined #moarvm
12:15 tgt joined #moarvm
12:40 jnthn FROGGS: you could always gist the code and see if anybody else can spot it ;)
12:42 FROGGS NOOOOOO!
12:42 FROGGS because I almost got it :o)
12:42 FROGGS but thanks for the offer :o)
12:43 jnthn wfm :P
12:52 FROGGS jnthn: what is the equivalent or pir's: and $I0, $P0, $P1 btw?
12:52 FROGGS or better: what is the op for logical and?
12:53 FROGGS ahh, just if?
12:54 FROGGS nqp: say(nqp::if(1, 2))
12:54 camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«2␤»
12:54 FROGGS :D
12:59 FROGGS but hmmmm, is push_op(@ops, 'if', $i, $t, $u), like $i = if($t, $u) ?
13:31 ggoebel110 joined #moarvm
13:33 FROGGS yes, that is the only thing that does not work currently
13:34 FROGGS :/
13:34 FROGGS it does not seem to set $i
13:56 tgt joined #moarvm
14:15 woolfy left #moarvm
14:34 jnap joined #moarvm
14:40 FROGGS jnthn: do I need to nest another instruction list to do $i = $t && $u ?
14:41 jnthn Instruction lists jsut flatten at assembly time anyway
14:41 jnthn They don't mean anything really
14:42 FROGGS k
14:42 FROGGS how do I do that then? using labels?
14:43 FROGGS and if_i?
14:43 jnthn yeah
14:43 FROGGS oaky
14:43 jnthn that's what && compiles down to
14:43 FROGGS k
14:43 jnthn Isn't taht what the Parrot version does?
14:51 benabik joined #moarvm
14:55 FROGGS it works!
14:56 jnthn FROGGS++
15:00 FROGGS here it is: https://gist.github.com/FROGGS/6e3c00076afcb5c3c1f0
15:00 FROGGS I'll look later into releasing registers...
15:01 FROGGS dunno if I have to do that or not, must read first
15:01 FROGGS[mobile] joined #moarvm
15:27 arnsholt joined #moarvm
15:32 diakopter FROGGS++ # learning the qast->mast "system"
15:33 jnthn Releasing registers isn't *required*, but if you don't then we generate worse code.
15:37 diakopter to compare, the codegen for parrot never reuses registers... and so... yeah.
15:51 FROGGS joined #moarvm
16:27 FROGGS so it looks like I need to release every fresh_* and every .as_mast()
17:07 Woodi joined #moarvm
18:09 jnthn FROGGS: Except the one you return as the instruction list's result_reg
18:10 FROGGS k, good to know
18:10 FROGGS jnthn: do I need to release two when I coerce?
18:11 jnthn Example?
18:11 FROGGS $bpost := $qastcomp.coerce($bpast, $MVM_reg_obj);
18:12 FROGGS I'd release $bpast and $bpost
18:12 jnthn Yeah, unless $bpost is the result of course
18:12 FROGGS k
18:12 jnthn Better to ues :want(...) in the call to as_mast when possible, though.
18:13 FROGGS yeah, I think I an optimize that
18:37 ssutch joined #moarvm
19:17 lue joined #moarvm
19:44 rurban joined #moarvm
20:17 FROGGS I must have messed something up when getting rid of the coerce by using :want
20:19 jnthn .oO( do not want... )
20:20 FROGGS ohh, it seems to work now with strings, but not with ints
20:22 jnthn oh?
20:22 * jnthn thought it worked on objects primarily... :)
20:22 jnthn (e.g. boxed things)
20:23 FROGGS well, I guess I just test a side effect then
20:30 jnthn Error while compiling op openpipe: No registered operation handler for 'openpipe'
20:30 FROGGS yeah :/
20:30 jnthn That's at, like, 732...
20:30 FROGGS that one sounds like work (to implement)
20:30 jnthn True, though we could stub it and leave it until later
20:30 FROGGS true
20:31 FROGGS not very needed for the next weeks
20:33 diakopter you're a pipe
20:33 FROGGS you are even (a) piper!
20:34 sricloud joined #moarvm
20:41 dalek MoarVM: b235e2e | jonathan++ | / (5 files):
20:41 dalek MoarVM: Stub openpipe op.
20:41 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/b235e2e194
20:45 timotimo oh, you don't actually have to put the interp.c stuff?
20:45 jnthn No
20:45 timotimo it won't advance the IP, though, right?
20:45 jnthn oh, uh...I wonder if you do for not breaking cgoto... :)
20:46 diakopter nah
20:46 jnthn timotimo: On the normal runcore it'll just hit the "huh, wtf is this op" thing and throw :)
20:46 diakopter er
20:46 diakopter yes :)
20:46 jnthn (switch one)
20:46 jnthn I dunno what cgoto does ;)
20:46 timotimo ah, hehe.
20:46 diakopter cgoto reprograms your cpu into an fpga
20:47 jnthn oh...is it me or is newexception missing something... :)
20:47 timotimo oh, somebody went ahead and added it? cool!
20:47 * timotimo looks at the implementation
20:47 diakopter jnthn: yeah probably missing an abort()
20:47 timotimo oh, so it *can* use BOOTException!
20:48 timotimo i thought i'd have to find out how to get at the non-boot-exception class
20:48 jnthn yeah, but whoever shoved it in forgoet to cur_op += 2, and goto next. :)
20:48 timotimo froggs :)
20:48 FROGGS ummm
20:49 dalek MoarVM: ed9b09d | jonathan++ | src/core/interp.c:
20:49 dalek MoarVM: Fix newexception; make openpipe throw NYI.
20:49 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/ed9b09d895
20:50 jnthn Error while compiling op xor: No registered operation handler for 'xor'
20:50 jnthn Good job somebody's working on that... :)
20:50 timotimo i was expecting setpayload and the other op regarding newexception would be up next, though
20:50 jnthn I guess that's the ^^ at 3695
20:51 jnthn That's already in, I believe
20:52 timotimo cool
20:55 FROGGS I am pushing in a minute
20:56 timotimo yays :)
21:00 * jnthn builds it
21:01 timotimo how far do we get now? :3
21:02 jnthn Will know soon )
21:02 timotimo --optimize is safe now, btw?
21:02 FROGGS seems like
21:02 FROGGS though is not ideal for backtraces in gdb :o)
21:03 timotimo hehe
21:08 jnthn p6stateinit
21:08 jnthn Is the next one
21:08 FROGGS yeah, I remember
21:08 FROGGS shall I stub it?
21:09 jnthn Can do.
21:09 jnthn State vars will need some work in Moar...
21:09 jnthn But I odn't have energy for that todya.
21:09 jnthn *today
21:10 FROGGS "Can do" means you're stubbing it?
21:10 timotimo so am i correct in thinking MoarVM is currently not multithreading the garbage collections?
21:11 FROGGS it at least feels single threaded
21:13 jnthn FROGGS: No, you can take it :)
21:13 FROGGS k, got it :o)
21:13 jnthn timotimo: The garbage collector will run on multiple threads if multiple threads are already running.
21:15 timotimo oh, i thought it would stop the world and just thread out as far as it deems helpful
21:15 jnthn No, it doesn't do that
21:15 jnthn So far, at least.
21:16 timotimo OK
21:16 timotimo is there a flag or something that can tell how much time is spent, all in all, doing GC work?
21:16 jnthn Not afaik
21:16 jnthn I mostly get those numbers by profiling.
21:19 FROGGS timotimo: the link to the ps/pdf file I pasted had some numbers about that
21:23 FROGGS Error while compiling op backtrace: No registered operation handler for 'backtrace'
21:24 FROGGS okay, this is mean to return a list of hashes containing about file, line, sub and annotations
21:25 FROGGS s/about//
21:25 jnthn yeah
21:25 jnthn should be doable
21:25 FROGGS it should, yeah
21:25 FROGGS let's doit then :o)
21:37 benabik joined #moarvm
21:45 * jnthn takes an early night &
21:48 FROGGS gnight
22:24 dalek MoarVM: 58e6fae | (Tobias Leich)++ | / (8 files):
22:24 dalek MoarVM: implement op backtrace
22:24 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/58e6fae9d7
22:47 dalek MoarVM: ff050d0 | (Tobias Leich)++ | / (6 files):
22:47 dalek MoarVM: stub op symlink and link
22:47 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/ff050d09bf
23:18 BenGoldberg joined #moarvm
23:25 dalek MoarVM: 54eed98 | (Tobias Leich)++ | / (8 files):
23:25 dalek MoarVM: implement gethostname
23:25 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/54eed98f14
23:26 FROGGS I am curious what happens now
23:28 diakopter STUB ALL THE THINGS
23:29 FROGGS thing is, what I stubbed now was in line 16944
23:30 FROGGS err, s/stubbed/implemented/
23:30 FROGGS stolen, even
23:30 tadzik keeps getting better
23:31 FROGGS tadzik: do you have time to look at the PRß
23:31 FROGGS ?
23:32 tadzik probably yep
23:32 * tadzik looks
23:34 * diakopter boggles at what PRß could mean
23:35 tadzik PRss
23:35 tadzik PullRequestsss
23:35 diakopter much beter
23:38 FROGGS now it complains about p6staticouter in line 2603, as if it does methods composition
23:38 FROGGS don't wanna get stubby fingers :o)
23:38 FROGGS gnight
23:39 lue good ♞ FROGGS o/
23:40 lue (that should've been PBẞ...)
23:42 diakopter I find some of rakudo's custom ops curious.. some of them don't seem very performance critical and can also be implemented in the HLL and/or other custom ops

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary