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 type␤frame_name_0␤»
..nqp-parrot: OUTPUT«Lexical '$a' is of wrong register type in lexical lookup␤current 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