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