|
github.com/moarvm/moarvm | IRC logs at irclog.perlgeek.de/moarvm/today Set by moderator on 27 October 2013. |
|||
| lee_ | i'll poke around Configure.pl | 00:00 | |
| benabik | Hm. '1' is not a valid number: != 1 at line 561, near ";\\n " | 00:06 | |
| That's nqp::atpos($res,2) != nqp::chars($src) | 00:07 | ||
| jnthn | Could throw some debug stuff into the radix impl | 00:11 | |
| Though I think you already tried that and it looked sane? | |||
| benabik | Yeah. | ||
| It's returning [1,1,] | 00:12 | ||
| diakopter | jnthn: we kindof need our own version of address sanitizer :/ | ||
| benabik | according to atpos | ||
| diakopter | erm, somehow I buhleted my progress on chain | 00:15 | |
| sigh. | |||
| jnthn | benabik: What's the empty thing at the end? | 00:16 | |
| benabik | jnthn: I printed "["~nqp::atpos($res,0)~", "nqp::atpos($res,1) ... 2) | 00:17 | |
| With the debugging from MVM_radix | 00:18 | ||
| radix: [33.000000, 100.000000, 2] '1' is not a valid number: 1, 1, != 1 at line 561, near ";\\n " | |||
| jnthn | well, repr_box_str is wrong... | 00:19 | |
| benabik | That seems highly suspicious. | ||
| diakopter | jnthn: erm, oops.... :/ | 00:20 | |
| jnthn | MVMObject * MVM_repr_box_str(MVMThreadContext *tc, MVMObject *type, MVMString *val) { MVMObject *res = MVM_repr_alloc_init(tc, type); MVM_repr_set_str(tc, res, val); return res; | ||
| } | |||
| ...oops | |||
| But anyway, needs to root the val | |||
| benabik | radix: [1.000000, 10.000000, 1] '1' is not a valid number: 1, 1, != 1 at line 561, near ";\\n " | ||
| That's better. | |||
| jnthn | Moment, lemme push this patch | 00:21 | |
| diakopter | jnthn: how'd you find that | ||
| jnthn | diakopter: By suspecting repr_box_n, seeing it ws fine, then my eyes fell on the function right below it :) | ||
| diakopter | heh. | ||
| jnthn | and I suspected repr_box_n 'cus radix uses it | 00:22 | |
| diakopter | I shouldn't say "oops" with so much certainty that I wrote/botched it.. | ||
| [since I don't have full certainty] | |||
| jnthn doesn't bother to git blame :) | |||
| (It really isn't worth worrying, in general, "who is to blame". This stuff is fiddly, the majority of developers simply aren't up to building VMs, and here we are doing this alongside having sometimes-demanding $dayjobs too...) | 00:27 | ||
| dalek | arVM: 8515ae2 | jonathan++ | src/6model/reprconv.c: Missing MVMROOT in MVM_repr_box_s. |
||
| jnthn | (majority of develoeprs meaning, "in the world"...the folks working on MoarVM clearly are up to it :)) | ||
| benabik | Still not a valid number. :-( | 00:29 | |
| jnthn | grr | ||
| It was still a bug. | |||
| benabik | True. | ||
| Maybe a bug in push? It seems to lose the 10 from the middle. | 00:31 | ||
| diakopter | jnthn: are we marking special_return_data | 00:33 | |
| jnthn | oh...I wonder if...argh, that'd be nasty | ||
| diakopter: no, 'cus we don't know what it is, but you're not meant to put object/string pointers in there | 00:34 | ||
| diakopter: afaik, things only put indirect pointers to thoes (pointer to a register) in there | |||
| So, considering: | 00:35 | ||
| MVM_repr_push_o(tc, result, MVM_repr_box_num(tc, box_type, value)); | |||
| What if it pushes tc to the stack, pushes result to the stack, MVM_repr_box_num allocates, and result is already on the stack so updating the local isn't good enough? | |||
| diakopter | yeah | ||
| gotta ssa | 00:36 | ||
| jnthn | *nod* | ||
| and worst csae, volatile | |||
| Anyway, I bet it's that | |||
| diakopter | well the temp push macro should take care of that | 00:37 | |
| (forcing an intermediate) | |||
| diakopter resolves to do that full code review while jnthn's sleeping | 00:38 | ||
| seems more important than chain/xor | |||
| benabik | Is there a way to root objects other than piles of nested MVMROOT? | 00:39 | |
| diakopter | you could make a variadic macro with the things to root at the ed | ||
| end | |||
| or a bunch of macros with different numbers of args up to 9 or whatever | 00:40 | ||
| that nest them for you | |||
| jnthn | benabik: I normally don't nest immediately sequential ones, fwiw | ||
| benabik: As in, don't indent the second one | |||
| Note that MVMROOT is a lot *nicer* than what we used to have! :) | |||
| dalek | arVM: 9db20b0 | jonathan++ | src/core/coerce.c: Fix potential rooting bug with nqp::radix. The result could get moved when it was already on the C arg stack. |
00:41 | |
| jnthn | benabik: Try that'n :) | ||
| diakopter | benabik: were you using --optimize? | 00:43 | |
| benabik | diakopter: Nope. | ||
| jnthn | I can see this happening without --optimize | 00:44 | |
| ok, sleep time here | 00:47 | ||
| 'night o/ | |||
| benabik prefers --debug when he's trying to fix bugs. | |||
| diakopter | I was suggesting trying --optimize to see if things break | 00:48 | |
| benabik | jnthn++++ | 00:51 | |
| diakopter | it fixed it? | 00:52 | |
| benabik | Yes! | 00:53 | |
| diakopter | cool :) | ||
|
00:56
colomon joined
|
|||
| benabik | $ nqp-m> | 00:59 | |
| Failed to seek in filehandle: 9 | |||
| frame_name_606 | |||
| ERm, the > was on the next line. | |||
|
00:59
woosley joined
|
|||
| timotimo | yeah, the repl doesnt work | 00:59 | |
| benabik | Known error. Cool. | ||
| dalek | arVM: ac6f817 | jimmy++ | src/io/procops.c: Fix potential rooting bug with nqp::clargs. The result could get moved when it was already on the C arg stack. |
01:48 | |
| JimmyZ | we need a book about <<The Missing MVMROOT and The Trap>> | 01:51 | |
| or pitfalls | |||
| or A authoritative Article | 01:53 | ||
| diakopter | JimmyZ: :D | 02:28 | |
| JimmyZ: grep the .c and .h for this string: , MVM_repr (comma included) and you'll find 20 more than need that | 02:30 | ||
| *that need that | 02:31 | ||
| JimmyZ | diakopter: not only MVM_repr allocs ;) | 02:32 | |
| diakopter | JimmyZ: good point. | 02:33 | |
| JimmyZ | diakopter: MVM_repr_at or MVM_repr_get doesn't allocs | 02:34 | |
| bind doesn't too | 02:35 | ||
| diakopter | JimmyZ: gist.github.com/diakopter/7729637a4a6b5ee47878 | ||
| you can ignore serialization.c because it's protected by the gen2 force allocation | 02:36 | ||
| JimmyZ | oh, the other reason that we need the article is it's useful for ext developers | ||
| diakopter | JimmyZ: I updated the gist | 02:39 | |
| JimmyZ | diakopter: great | 02:40 | |
| diakopter | only ones that pass more than one MVMObject in the invocation should be fixed | ||
| dalek | arVM: d801867 | jimmy++ | src/ (3 files): Fix potential rooting bug The result could get moved when it was already on the C arg stack. |
02:51 | |
| diakopter | JimmyZ: actually if you change the search to this, more appear: ,[\\s\\r\\n]*MVM_[a-zA-Z_]+\\( | 02:59 | |
| JimmyZ | I don't have ack | 03:00 | |
| diakopter | neither do I :P | ||
| JimmyZ: aren't you on Windows? | |||
| JimmyZ | yes | 03:01 | |
| diakopter | Notepad++ - I used the Find in Files for that (regex mode) | ||
| JimmyZ: those things in reprconv you just fixed... actually you need to root obj as well | 03:02 | ||
| and key | |||
| so you need to put them both in variables | |||
| since it's a macro | 03:03 | ||
| JimmyZ | oh, I have sublime | ||
| diakopter | JimmyZ: see what I mean about the temp variables? | 03:08 | |
| (you have to root them) | |||
| JimmyZ | diakopter: I don't need to root it. people will root it before calling the macro | 03:13 | |
| anyway, I didn't see it is used. | 03:15 | ||
| JimmyZ hopes MVM_repr_* function will be macro | 03:18 | ||
|
06:16
FROGGS joined
08:07
FROGGS[mobile] joined
|
|||
| FROGGS[mobile] | jnthn: What should I do next? (except chain and xor) | 08:10 | |
| JimmyZ | make `compile core.setting` works :P | 08:55 | |
| FROGGS[mobile] | gah :p | 08:59 | |
| diakopter | :) | 09:16 | |
| dalek | arVM: 9ccc1d0 | (Tobias Leich)++ | / (6 files): added getlexrelcaller |
09:57 | |
| JimmyZ | FROGGS[mobile]: Is buglet branch useful? | 10:00 | |
| FROGGS | JimmyZ: no, can be deleted | 10:12 | |
|
10:31
donaldh joined
10:38
colomon joined
10:41
wsri joined
11:18
lizmat joined
11:27
lue joined
11:53
jnthn_ joined
|
|||
| FROGGS | what is the 'g' in getlex_ng for? | 12:25 | |
| tadzik | Generation | 12:28 | |
| Getlex: The Next Generation | |||
| FROGGS | meh | 12:30 | |
| arnsholt | Is there a preferred casing for Moar? | 12:40 | |
| FROGGS | MoarVM I'd say | 12:41 | |
| like the difference of Perl and perl | |||
| MoarVM/moar | 12:42 | ||
| nqp: my $a = 0; nqp::getlex_i('$a') | 12:43 | ||
| camelia | nqp-parrot: OUTPUT«Assignment ("=") not supported in NQP, use ":=" instead at line 2, near " 0; nqp::g"current instr.: 'panic' pc 16306 (gen/parrot/stage2/NQPHLL.pir:6018) (gen/parrot/stage2/NQPHLL.nqp:426)» | ||
| ..nqp-jvm: OUTPUT«Assignment ("=") not supported in NQP, use ":=" instead at line 2, near " 0; nqp::g" in panic (gen/jvm/stage2/NQPHLL.nqp:377) in infix:sym<=> (gen/jvm/stage2/NQP.nqp) in !protoregex (gen/jvm/stage2/QRegex.nqp:742) in infix (gen/jvm/stage2/NQPHLL.nqp)…» | |||
| ..nqp-moarvm: OUTPUT«Assignment ("=") not supported in NQP, use ":=" instead at line 2, near " 0; nqp::g"panic» | |||
| FROGGS | nqp: my $a := 0; nqp::getlex_i('$a') | ||
| camelia | nqp-jvm: OUTPUT«Lexical '$a' not found in (/tmp/1y2FZoWpHu:1) in (gen/jvm/stage2/NQPHLL.nqp:1098) in eval (gen/jvm/stage2/NQPHLL.nqp:1084) in evalfiles (gen/jvm/stage2/NQPHLL.nqp:1290) in command_eval (gen/jvm/stage2/NQPHLL.nqp:1194) in command_line (gen/jv…» | 12:44 | |
| ..nqp-moarvm: OUTPUT«Lexical with name '$a' has wrong typeframe_name_0» | |||
| ..nqp-parrot: OUTPUT«Lexical '$a' is of wrong register type in lexical lookupcurrent instr.: '' pc 53 ((file unknown):44) (/tmp/t1CMjzXfvp:1)» | |||
| FROGGS | nqp: my $a := 0; nqp::getlex_o('$a') | ||
| camelia | nqp-parrot: OUTPUT«Error while compiling block : Error while compiling op getlex_o (source text: "nqp::getlex_o('$a')"): No registered operation handler for 'getlex_o'current instr.: '' pc 55111 (gen/parrot/stage2/QAST.pir:20131) (gen/parrot/stage2/QAST.nqp:3320)» | ||
| ..nqp-moarvm: OUTPUT«Error while compiling op getlex_o (source text: "nqp::getlex_o('$a')"): No registered operation handler for 'getlex_o'frame_name_1083» | |||
| ..nqp-jvm: OUTPUT«No registered operation handler for 'getlex_o' in compile_op (gen/jvm/stage2/QAST.nqp:231) in as_jast (gen/jvm/stage2/QAST.nqp:3696) in as_jast (gen/jvm/stage2/QAST.nqp:2968) in (gen/jvm/stage2/QAST.nqp:3665) in compile_all_the_stmts (gen/jvm/sta…» | |||
| FROGGS | nqp: my $a := 0; nqp::getlex('$a') | ||
| camelia | ( no output ) | ||
| FROGGS | k | ||
|
13:10
jnap joined
|
|||
| diakopter | hi from a plane | 13:15 | |
| tadzik | ...I live in a 3rd world | 13:17 | |
|
13:19
_ilbot joined
|
|||
| moderator | github.com/moarvm/moarvm | IRC logs at irclog.perlgeek.de/moarvm/today | ||
| FROGGS | tadzik: you don't fly by plane on a daily basis? | 13:20 | |
| hi diakopter | |||
| tadzik | my planes don't have wifis | ||
| they have power sockets sometimes, which is cool | 13:21 | ||
| FROGGS | true, germanwings has no wifi too | ||
| moritz never had wifi on a plane | |||
| tadzik | oh, I saw it once on Delta, but the price was laughable | ||
| FROGGS | I've seen a sticker once in a plane from NY to Austin | 13:22 | |
| tadzik | barbaric | ||
| like charging $10 for a toilet | |||
| FROGGS | I'd buy a toilet for $10 | 13:23 | |
| diakopter | $22 for a 6-hour flight, about 0.5s latency.. $49 unlimited/month | ||
| FROGGS | hmmm, it is okay since $22 is like four euros :P | 13:24 | |
| tadzik | :D | ||
| well, I still think $22 for 6 hours is crazy | |||
| diakopter goes to do a bandwidth test over ssh tunnel <wicked grin> | |||
| FROGGS | hehe | ||
| diakopter | tadzik: you'll think it's less crazy when you can use my hotspot on the 60hour flight to orlando.. | 13:25 | |
| tadzik | diakopter: mebbe :) | ||
| diakopter | er, 6-hour | ||
| tadzik | 60 hours would be like going 3 times around the world | ||
| diakopter | moritz: btw, you're a font, not a fount | 13:32 | |
| :D | |||
| is it bad that I can't even get a bandwidth speed test to start? | 13:33 | ||
| stupid flash isn't respecting the proxy, I think | 13:34 | ||
| hmm, that's kindof sucky, 300 Kb/s | 13:36 | ||
| with 8% loss | 13:37 | ||
|
13:38
colomon joined
|
|||
| diakopter | newaze. | 13:38 | |
|
13:43
benabik joined
|
|||
| diakopter tries to decipher the jvm impl of chain | 13:44 | ||
| mebbe the parrot one would be easier. :) | |||
| FROGGS | ++diakopter | ||
| :o) | |||
| diakopter | pre-increment indeed | 13:45 | |
| FROGGS | diakopter: you might document it right after knowing what it does :o) | ||
| diakopter | well I have an idea what it does | ||
| wtf.. | 14:29 | ||
| $il.append(savesite(JAST::InvokeDynamic.new( | |||
| 'subcall_noa', 'V', [$TYPE_STR, 'I', $TYPE_TC, $TYPE_SMO, $TYPE_SMO], | |||
| 'org/perl6/nqp/runtime/IndyBootstrap', 'subcall_noa', | |||
| ))); | |||
| I give up; heading to parrot.. | 14:33 | ||
| FROGGS | yeah, I've seen that too | 14:40 | |
| diakopter | FROGGS: I can't even find anything in nqp/rakudo source that helps inform me what op chain is supposed to do!! | 15:16 | |
| FROGGS | :/ | ||
| diakopter | I thought it was for chaining comparison operators | ||
| FROGGS | looks like it has something to do with currying | 15:17 | |
| diakopter | .. but I can't find any usage of it | ||
| FROGGS | see | 15:18 | |
| /home/froggs/dev/ | |||
| err | |||
| rakudo/src/Perl6/Actions.nqp:5904: (($past.op eq 'call' || $past.op eq 'chain') && | |||
| diakopter | yeah, but that case isn't handled lower down | ||
| FROGGS | hmmm | 15:19 | |
| I dunno | |||
| current state: | 15:24 | ||
| Stage start : 0.000 | |||
| setlexvalue only handles static case so far | |||
|
16:00
_ilbot joined
|
|||
| moderator | github.com/moarvm/moarvm | IRC logs at irclog.perlgeek.de/moarvm/today | ||
| FROGGS | jnthn: this might be interesting for you :/ gist.github.com/FROGGS/4a0122b45009bb6917ea | 17:10 | |
| double free when running normally, but under valgrind it complains about missing p6store | 17:11 | ||
| I am firing up my windows to see what happens there | |||
|
17:19
BenGoldberg joined
|
|||
| jnthn | evening o/ | 17:22 | |
| BenGoldberg | Good afternoon :) | 17:23 | |
| jnthn | benabik: Great that it fixed the number parse issue :) | ||
| getlex_ng - n = by name, g = generic | 17:29 | ||
| benabik | jnthn: Yes, thank you. Been staring at that for a while and not realizing the GC implications. | 17:32 | |
| jnthn | I didn't at first... :) | ||
|
17:36
ssutch joined
|
|||
| timotimo | greetings jnthn | 17:39 | |
| diakopter | jnthn could you gie an english explanation of the chain op | 17:41 | |
.oO( as opposed to Polish, I guess..? ) |
17:43 | ||
| jnthn | diakopter: Ano, je na chajnovanie operatory...oh wait, English... | 17:48 | |
| It is a lot like call | 17:49 | ||
| Except you nest them and they only evaluate arguments once | |||
| iirc, a < b < c is like (chain < (a, chain < (b, c)) or so | |||
| So it's like a call constrained to have 2 arguments | 17:50 | ||
| And supporting chaining semantics | |||
| You find the thing to call in name | |||
| the loop in the implementation is just iteratively recursing the nested chains. | |||
| diakopter | < is right associative? | 17:51 | |
| oh, so it's always a named call | |||
| jnthn | I think chaining things are at same prec? | 17:52 | |
| oh, assoc... | |||
| Not sure | |||
| See grammar ;) But I think whatever happens, by the time we get to chain we have something in the right form. | |||
| BenGoldberg | r: say [<] 1, 2, 3 | 17:59 | |
| camelia | rakudo-parrot 3cef56, rakudo-jvm 882e33: OUTPUT«True» | ||
| BenGoldberg | r: say [\\<] 1, 2, 3 | ||
| camelia | rakudo-parrot 3cef56, rakudo-jvm 882e33: OUTPUT«True True True» | ||
| BenGoldberg | r: say [\\~] 1, 2, 3 | 18:00 | |
| camelia | rakudo-parrot 3cef56, rakudo-jvm 882e33: OUTPUT«1 12 123» | ||
| TimToady | nr: say 1 < 0 < die "Oops" | 18:02 | |
| camelia | rakudo-parrot 3cef56, rakudo-jvm 882e33, niecza v24-98-g473bd20: OUTPUT«False» | ||
| TimToady | whew! | ||
| chains are supposed to short-circuite left-to-right | |||
| *cuit | |||
| BenGoldberg | r: say [R<] 1, 2, 3 | 18:04 | |
| camelia | rakudo-parrot 3cef56, rakudo-jvm 882e33: OUTPUT«False» | ||
| BenGoldberg | r: say [R>] 1, 2, 3 | ||
| camelia | rakudo-parrot 3cef56, rakudo-jvm 882e33: OUTPUT«True» | ||
| jnthn | aye, as well as evaluate each needed arg once | ||
| BenGoldberg | r: say [\\R>] 1, 2, 3 | ||
| camelia | rakudo-parrot 3cef56, rakudo-jvm 882e33: OUTPUT«True True True» | ||
| jnthn | Those two things are what chain is about really | ||
| ok, gonna go find dinner. bbl & | 18:05 | ||
| BenGoldberg | r: say True > False | ||
| camelia | rakudo-parrot 3cef56, rakudo-jvm 882e33: OUTPUT«True» | ||
| BenGoldberg | r: say True < False | ||
| camelia | rakudo-parrot 3cef56, rakudo-jvm 882e33: OUTPUT«False» | ||
| BenGoldberg | r: say True > 99 | ||
| camelia | rakudo-parrot 3cef56, rakudo-jvm 882e33: OUTPUT«False» | ||
| BenGoldberg | r: say True >= 99 | ||
| camelia | rakudo-parrot 3cef56, rakudo-jvm 882e33: OUTPUT«False» | ||
| BenGoldberg | r: say 1+True | ||
| camelia | rakudo-parrot 3cef56, rakudo-jvm 882e33: OUTPUT«2» | ||
| FROGGS | jnthn: generic in what sense? there is also getlex and getlex_no | 18:19 | |
| jnthn: does the _ng return the register? | |||
| diakopter: is it okay if I try to port chain? | 19:04 | ||
| diakopter / jnthn: chain, translated from parrot: gist.github.com/FROGGS/9bf9c160196cec89f617 | 19:34 | ||
| is there a way to test that in nqp? | |||
| diakopter | FROGGS: thing is, I didn't see where the parrot version was stashing the value of the rhs | 20:04 | |
| [saving it to do the next comparison] | 20:08 | ||
| jnthn | FROGGS: iirc, it always w(obj) and will box anything else | 20:39 | |
|
20:59
colomon joined
21:51
donaldh_ joined
23:04
BenGoldberg joined
23:43
benabik joined
|
|||