github.com/moarvm/moarvm | IRC logs at irclog.perlgeek.de/moarvm/today
Set by moderator on 1 September 2013.
00:01 colomon joined
diakopter colomon: ping 00:50
colomon pong
diakopter would you like a (very small) todo in moarvm? it's a math function thing I don't know how to solve..
colomon sure, I'd be happy to take a look 00:51
though right now I don't have anything like a recent build on my machine. I've focused on JVM.
diakopter recent builds are quite different :D 00:52
but this particular code hasn't changed in more than a year
colomon does a git pull that has to grab everything since June.
diakopter need to git clean dxf reset hard and stuff
colomon …. I'll just start it over. 00:53
diakopter yeah :)
in master branch, src/core/interp.c
benabik git clone --recursive 00:54
colomon --recursive?
diakopter there are three todos marked handle edge cases
there are three todos marked handle edge cases
math functions that I *completely* guessed on without doing hardly any research or due diligence 00:55
(I'm not even sure the main cases are correct)
colomon you'll have to give me a minute, I just slaughtered my editor by opening too large a directory 00:56
diakopter so basically the task is to identify the edge cases (dividing by zero?? I think??), test them on parrot/jvm, decide what they should do, and make it consistent on all 3 NQPs
(and/or fix them entirely) 00:57
benabik: configure does the submodule things for you now, I think 00:58
sec, asec, sech
(and while you're at it, all the other math functions could use a code review 00:59
)
colomon okay, I'll see what I can do.
diakopter like, even the others that currently abort need to have those cases trapped and exceptions thrown instead, I think 01:00
colomon: thanks :) 01:03
colomon: if you dont have a commit bit, just make apull request
colomon I don't have a commit bit. :)
01:04 FROGGS_ joined
diakopter colomon: there are three test targets.. 01:11
across two different Makefiles 01:12
colomon hmmm 01:14
switching to #perl6... 01:15
01:19 BabsSeed joined
benabik diakopter: I hadn't seen that commit go by. Fair enough. 01:21
diakopter benabik: did you take a look at the todos in validation.c? 01:22
.tell moritz I'm sorry I'm holding the nfg code hostage.. I'll try really hard to get it pushed usably this week 01:23
yoleaux diakopter: I'll pass your message to moritz.
benabik diakopter: I have a branch around with bits to move validation things into the instance, but never completed it. 01:25
diakopter into instance.c?
benabik Oh, sorry. Hang caches and such for validation into thread context. 01:26
(Actually looking at what I have now.)
diakopter well, compunits are now garbage collected so they're less permanent
(and their staticframes) 01:27
benabik Was trying to keep around working memory to avoid mallocs.
colomon diakopter: so how do I throw an exception?
diakopter search exception there in interp.c
it's actually a printf format string with varargs 01:28
so you can adorn the message with stuff if you want
colomon MVM_exception_throw_adhoc, you mean?
diakopter yes
(same as parrot's) 01:29
(though independently discovered, iirc)
colomon how can I test this? 01:33
diakopter write tests in nqp-cc/t/nqp/88-maths.t or something 01:34
(or an existing math one)
there's not a throws_ though....
colomon highest number is 76? 01:35
diakopter yeah I was just picking a number
colomon ah
diakopter there hsould be an existing math one
or trig
afk a bit& 01:36
dalek arVM: 6947186 | jimmy++ | / (3 files):
updated libuv to latest version
01:48
02:01 FROGGS_ joined
diakopter 02:14:41 up 175 days, 10:29, 4 users, load average: 0.00, 0.01, 0.05 02:18
JimmyZ :) 02:19
02:34 FROGGS joined
dalek arVM: 8166578 | jimmy++ | src/io/procops.c:
Don't added instance->clargs to permanent, it's already in MVM_gc_root_add_instance_roots_to_worklist
02:52
02:52 foo_bar_baz joined
diakopter JimmyZ: actually it should be in the place of creation... it is a permanent since it doesn't change 03:07
(so remove it from MVM_gc_root_add_instance_roots_to_worklist)
JimmyZ diakopter: but tc->instance->env_hash is in MVM_gc_root_add_instance_roots_to_worklist also 03:09
diakopter: they are the same thing, for MVM_gc_root_add_instance_roots_to_worklist and MVM_gc_root_add_permanents_to_worklist 03:10
they do the same thing 03:11
diakopter I suppose you're right 03:16
dalek arVM: 9890d98 | jimmy++ | src/moarvm.c:
Don't add instance->compiler_registry and instance->hll_syms to permanent, they are already in MVM_gc_root_add_instance_roots_to_worklist
03:23
03:29 FROGGS joined 03:56 ggoebel2 joined 03:59 FROGGS joined 04:32 FROGGS joined 04:58 FROGGS joined 05:21 FROGGS joined
JimmyZ eli.thegreenplace.net/2012/07/12/co...ch-tables/ 06:07
FYI
06:18 ozmq joined 06:45 FROGGS joined
JimmyZ not_gerd: cgoto for MSVC: abepralle.wordpress.com/2009/01/25/...threading/ 06:50
jnthn moarning o/ 06:53
FROGGS o/ 06:54
is it possible that github.com/MoarVM/MoarVM/commit/6947186ea2 broke the build? 06:59
ahh, no, `git submodule update` helped... 07:00
JimmyZ perl Configure.pl helps too 07:02
morning, jnthn
.tell not_gerd cgoto for MSVC: abepralle.wordpress.com/2009/01/25/...threading/ 07:08
yoleaux JimmyZ: I'll pass your message to not_gerd.
jnthn JimmyZ: That article basically adds up to, "don't do this", right? :) 07:09
dalek arVM: 8848992 | (Tobias Leich)++ | nqp-cc/t/nqp/ (14 files):
sync test with nqp
JimmyZ jnthn: you're right, 3 times slower. it said 07:12
jnthn: you may have an interset: www.cs.toronto.edu/syslab/pubs/demk...ontext.pdf
*interest
I have tried to read this, but if is full of english 07:14
s/if/it/
jnthn oh noes, English?!
JimmyZ yeah :P
jnthn Looks interesting, anyways
But I should be teaching here in a moment 07:15
Will read it later :)
JimmyZ heh, I think it's useful for MoarVM
jnthn yes, looks relevant
JimmyZ thank ozmq++ for it :P 07:16
FROGGS: Do we need port the nqp pull request code to MoarVM? github.com/perl6/nqp/pull/120 07:30
FROGGS JimmyZ: yeah, looks like, github.com/MoarVM/MoarVM/blob/mast...ps.c#L1219 07:33
JimmyZ FROGGS: I don't know whether #L1221 contains it or not 07:35
FROGGS ahh, good question 07:40
let's test it...
07:41 not_gerd joined
not_gerd o/ 07:41
yoleaux 1 Sep 2013 20:10Z <jnthn> not_gerd: that needs doing, but I think it's can't be that; the call to compunit_coderefs will die before we ever get there 'cus the op it depends on is also NYI
07:08Z <JimmyZ> not_gerd: cgoto for MSVC: abepralle.wordpress.com/2009/01/25/...threading/
07:41 odc joined
not_gerd JimmyZ: MS is moving away from inline asm in favour of compiler intrinsics 07:42
JimmyZ not_gerd: ignore the post
not_gerd ;)
FROGGS JimmyZ: it looks like it gets treated as whitespace, but not newline
JimmyZ not_gerd: yo may have an interest with the pdf one
not_gerd: www.cs.toronto.edu/syslab/pubs/demk...ontext.pdf 07:43
not_gerd JimmyZ: I actually tried to do something like that before I did cgoto
some toy interpreter with various dispatch strategies: gist.github.com/gerdr/6d327799863d9ef88cff
performance when jitting the runloop to sequences of call/ret was underwhelming 07:44
perhaps I messed up the asm ;)
JimmyZ not_gerd: per eli.thegreenplace.net/2012/07/12/co...h-tables/, continue is not needed
replacing continue with goto *table is better 07:45
not_gerd JimmyZ: needs to be measured
indirect calls are more expensive than direct ones
JimmyZ not_gerd: yeah, maybe reduce a 'jmp' op 07:46
not_gerd in the cgoto branch, it was worse partly because of the double-indirection
JimmyZ let's remove the bank
;)
not_gerd JimmyZ: that's the plan
we should wait a bit until opcodes are more stable 07:47
JimmyZ yes
mostly until bootstrap
I think with cgoto, we don't need natural number for op, except msvc 07:48
continue natual number ... 07:49
FROGGS JimmyZ: about NEL, maybe we should wait until we have NFG strings? 07:51
JimmyZ FROGGS: yes
or until unfugde roast
not_gerd the 80-matches.t failure seems to be just someone forgetting to increment a variable (QRegex.nqp:1106) 08:00
FROGGS not_gerd: that was fixed recently in nqp, do you wanna fix or should I ? 08:02
not_gerd feel free to do so 08:03
FROGGS k
jnthn Banks can go whenever somebody feels like. Yes, we should do an ops numbering cleanup before we go for bootstrap, 'cus beyond there we have to start keeping backcompat 08:05
I think killing banks will also simplify mast op name => number resolution in code 08:07
(in the QAST to MAST code)
JimmyZ btw: I still thinks dynasm makes jit much easy :). a simple one: blog.reverberate.org/2012/12/hello-...-jits.html 08:11
the more I read, the more I like it 08:12
I can help remove bank if anyone can remove it from compiler.c 08:15
and MAST maybe 08:16
jnthn yes, it needs changes in quite a few places
JimmyZ I can try remove it from src, nqp-cc maybe needs you! 08:17
jnthn And probably mostly needs doing in one sweep
Well, first thing I'd do is fix update_ops.p6
The rest of the changes should flow out from that 08:18
JimmyZ yeah
not_gerd someone also needs to investigate common op sequences so we can skip the break/goto and just fall through to the next op in the common case 08:20
jnthn Um. Really? 08:21
not_gerd might be worth it if it gets branch prediction going
jnthn is skeptical that will be a win
ah, there is that... 08:22
But still...feels too clever for its own good.
not_gerd always jumping back to the top level indirect dispatch is one thing that makes interpreters slow 08:23
jnthn I'm struggling to see an especially good hit rate on common op sequences, fwiw 08:24
I mean, we can try to analyze actual compiler output, but there's relatively few that spring to mind
JimmyZ not_gerd: replace contine with goto *table avoids jump to the top
*continue 08:25
jnthn This is all focusing on stuff we shouldn't focus on at the moment, though. Our problem isn't the interpreter not performing, our problem is that we dont' run Rakudo on MoarVM yet.
not_gerd ;)
JimmyZ: but it's still an indirect branch
JimmyZ oh, yes 08:26
not_gerd same applies if we call the same op repeatedly
add if(next_op == push_i) goto PUSH_I; else goto *labels[next_op]; to the end of push_i 08:27
jnthn arg_o is probably a good candidate for that. 08:28
dalek arVM: 2ca96e5 | (Tobias Leich)++ | nqp-cc/nqp-src/QRegex.nqp:
pull in nqp's QRegex/Cursor.pm to pass t/nqp/80, not_gerd++
08:29
JimmyZ not_gerd: good points, I guess this needs some statistics 08:30
08:40 ozmq joined 08:56 ozmq left
dalek arVM/nobank: ff90219 | jimmy++ | tools/update_ops.p6:
start removing banks from update_ops.p6
08:58
arVM: cd591d5 | (Gerhard R)++ | build/Makefile.in:
Wire up build of (not yet implemented) computed goto dispatch
09:04
not_gerd ^ just future-proofing the build system
JimmyZ good 09:06
dalek arVM/nobank: a4a4a37 | jimmy++ | tools/update_ops.p6:
remove all bank codes from update_ops.p6
09:15
FROGGS guys, my last commit broke test 9 and 14, I'm currently investigating... github.com/MoarVM/MoarVM/commit/2c...bab9fa3a56 09:16
dalek arVM/nobank: 3a85767 | jimmy++ | / (2 files):
remove banks from oplist
09:21
arVM/nobank: a3fa0d6 | jimmy++ | / (4 files):
updated ops files
09:39
JimmyZ this also reduced .moarvm file size 09:42
dalek arVM/nobank: f560493 | jimmy++ | src/core/interp.c:
removed bank from interp.c
09:51
JimmyZ argh, some many places to remove 09:52
not_gerd still needs switching from uint8 to uint16? 09:58
JimmyZ yes 10:00
so didn't save size
not_gerd: how about import stdint and #define MVMint32 int32_t? 10:01
jnthn may like MVMint32?
not_gerd JimmyZ: I can do that 10:02
JimmyZ may ask jnthn first :)
jnthn Probably wants to be typedef rather than #define ?
JimmyZ yes
jnthn But yes, I want us to carry on using MVMint32 etc in the code
But if we define them in terms of int32_t that's fine by me.
JimmyZ you're ok import stdint?
if typedef 10:03
JimmyZ decommute
not_gerd if that's a go-ahead, I can do it later today
the patch should be minimal
errands& 10:04
dalek arVM: 7dfbabf | (Tobias Leich)++ | nqp-cc/nqp-src/QRegex.nqp:
revert change of ACCEPT's signature, unbreak test 9 and 14
10:34
10:49 not_gerd joined
JimmyZ not_gerd, it's ago-ahead 11:02
.tell jnthn so you're fine to import github.com/MoarVM/MoarVM/tree/stdt...msinttypes with typedef MVMint32 int32_t ? 11:06
yoleaux JimmyZ: I'll pass your message to jnthn.
diakopter JimmyZ: i think not_gerd was saying he wanted to do that 11:18
JimmyZ diakopter: after removing bank, should label need to changed uint16? 11:28
diakopter label? 11:29
JimmyZ diakopter: see validation.c 11:30
diakopter ... 11:31
I wrote it; what about it in particular
JimmyZ about instr_offsets in MVMStaticFrame.h 11:33
and annotations_data
diakopter no 11:34
dalek arVM/nobank: e7948e0 | jimmy++ | src/ (8 files):
start removing bank from various c code
11:42
JimmyZ diakopter: needs review
^^
.tell jnthn e7948e0441 needs your review
yoleaux JimmyZ: I'll pass your message to jnthn.
JimmyZ or diakopter could help join in? 11:44
or just changed *(cur_op++) to *(MVMuint16 *)(cur_op += 2) ? 11:46
11:48 not_gerd joined
JimmyZ hello not_gerd 11:48
dalek arVM: 556f294 | (Gerhard R)++ | / (6 files):
Use msinttypes for standard integers but still keep our

Formatting patterns like %lli should be replaced with the appropriate macros from inttypes.h.
JimmyZ how do you think it? 11:49
I think *(MVMuint16 *)(cur_op += 2) would much better?
not_gerd cur_op itself could probably be a MVMuint16* 11:50
or do we actually read an uint8 somewhere from the stream?
JimmyZ uint16 means we need rewrite most things 11:51
i.e::cur_op += 6;
GET_UI32(cur_op, 2); 11:52
and all other places
*(MVMuint16 *)(cur_op += 2) could be much simpler :P 11:53
only one line I think
not_gerd won't work like that, though - (cur_op += 2) works like (++cur_op), not (cur_op++) 11:54
JimmyZ oh 11:57
yes
but we can modify it 11:58
*(MVMuint16 *)(cur_op++++) 12:00
not_gerd that might be illegal - two modifications without sequence point 12:02
JimmyZ well, I ran into a problem that I don't know which uint8 needs to be uint16 12:03
not_gerd (cur_op += 2, ((MVMuint16 *)cur_op)[-1])
couldn't think of anything less ugly right now 12:04
JimmyZ so if changed to uint16, I need help
jnthn Do the minimum set of changes needed to make it work. Then we can tweak afterwards. 12:10
yoleaux 10:28Z <FROGGS> jnthn: Are the changes to ACCEPTS alright? moarvm doesn't like it: github.com/perl6/nqp/commit/0f1be3...3f1#L3L821
10:36Z <FROGGS> jnthn: So this was needed, and might hurt us later: github.com/MoarVM/MoarVM/commit/7dfbabf794
11:06Z <JimmyZ> jnthn: so you're fine to import github.com/MoarVM/MoarVM/tree/stdt...msinttypes with typedef MVMint32 int32_t ?
11:42Z <JimmyZ> jnthn: e7948e0441 needs your review
jnthn It really should be no more complicated than
MVMint16 op_to_dispatch = *((MVMint16 *)cur_op); 12:11
cur_op += 2;
...switch...
not_gerd meah - splitting the line in 2 is cheating ;) 12:12
FROGGS but hey, it is readable :o)
jnthn Yeah. I hate it when I can read the code easily.
JimmyZ or switch to cgoto 12:13
give up msvc
:P
no need switch
jnthn *sigh*
FROGGS or we switch to basic and have line numbers at the left? 12:14
it sucks just a bit when inserting lines between 190 and 200 12:15
JimmyZ Be be honest, which one do you prefer? uint8 or uint16?
jnthn: ^^
not_gerd uint8 short-term, uint16 long-term
cosmetic changes can wait
JimmyZ well, change to uint16 is not that hard, for interp.c can use s/cur_op, 2/cur_op, 1/g or similar 12:21
I just need some tips
i.e: the label 12:22
jnthn < jnthn> Do the minimum set of changes needed to make it work. 12:24
So uint8.
JimmyZ ok 12:26
FROGGS jnthn: do you think I need to buy a nice beer and sit on the couch this evening to read something? 12:31
diakopter to read this irclog, yes 12:33
jnthn FROGGS: Buying a nice beer is always a good plan :) 12:34
Drinking it is an even better one :)
FROGGS k, I'll make sure I got one :o) 12:35
diakopter jnthn: what should I work on the next few hours 12:36
FROGGS serialization?
diakopter sshh 12:37
toward selfhost?
jnthn diakopter: t\\nqp\\31-grammar.t segfaults here; I was too exhausted to finish hunting it last night but it looks like the hll config hash doesn't keep the name around/anchored so the hash ends up pointing into heck knows where. Maybe look into that :) 12:38
diakopter jnthn: I thought I saw a patch [from you] that addressed that 12:41
jnthn No, I fixed env_args last night
But got another segfault in 31-grammar.t
And it was when looking up hll_name 12:42
diakopter jnthn: 31 passes for me 12:43
jnthn bah, same for me... 12:45
No.
*now
But t\\nqp\\14-while.t segfaults now?!
hm, in the compiler.c 12:46
oh...I wonder if it depends on GC not running while it's compiling...
diakopter not for me
passes for me 12:47
er
dalek arVM/nobank: 487752e | jimmy++ | src/ (7 files):
removed all bank code from c codes
JimmyZ ^^ should be done
jnthn diakopter: t\\nqp\\78-shell.t is missing nqp::shell 12:49
diakopter: May be one to look at.
Perhaps the t\\nqp\\19-file-ops.t failures too
diakopter: Besides that, t/serialization/ :D
diakopter prove likes 14-while 12:50
but... it segfaults
jnthn make selftest doesn't like it here
diakopter C:\\Users\\mwilson\\src\\MoarVM\\nqp-cc>..\\moarvm nqp.moarvm t\\nqp\\14-while.t 12:51
C:\\Users\\mwilson\\src\\MoarVM\\nqp-cc>echo %ERRORLEVEL%
-1073741819
t\\nqp\\14-while.t ...................... ok 12:53
something is amiss.
jnthn weird 12:54
dalek arVM/nobank: 9c42170 | jimmy++ | lib/MAST/Nodes.nqp:
removed bank from MAST/Nodes.nqp
12:57
diakopter JimmyZ: as jnthn said, the op() and push_op() subs in the qast->mast compiler can be vastly improved now with one big hash 13:00
dalek arVM/nobank: cd591d5 | (Gerhard R)++ | build/Makefile.in:
Wire up build of (not yet implemented) computed goto dispatch
arVM/nobank: 7dfbabf | (Tobias Leich)++ | nqp-cc/nqp-src/QRegex.nqp:
revert change of ACCEPT's signature, unbreak test 9 and 14
arVM/nobank: 556f294 | (Gerhard R)++ | / (6 files):
Use msinttypes for standard integers but still keep our

Formatting patterns like %lli should be replaced with the appropriate macros from inttypes.h.
arVM/nobank: 5342bf8 | (Gerhard R)++ | / (8 files):
2cc4b2f | jimmy++ | nqp-cc/src/ (5 files):
not_gerd JimmyZ: ^ merged master + some fixes
the cross-compiler doesn't build yet
FROGGS diakopter / jnthn: the 14-while fail might due to my patch... (see the yoleaux msgs from almost an hour ago) 13:04
jnthn FROGGS: The segfault looks unrelated (as in, coincidental that the ACCEPTS change triggered it)
FROGGS jnthn: I was thinking the same, just wanted to point on it :o) 13:08
jnthn hm, think I may need a short nap...slept badly last night then got up early to go teach today... 13:11
diakopter www.youtube.com/watch?v=TIUUVEojULE
FROGGS I'd need a nap too, but I have two little problems that prevent me from doing it 13:12
diakopter: yeah, but the end is cut off
diakopter FROGGS: no place to rest your head? 13:13
FROGGS diakopter: well, I could go home but there are $kids that won't let me sleep 13:14
JimmyZ jnthn: MAST::Ops.WHO{'$allops'} is it right?
FROGGS JimmyZ: I'd say yes: nqp-cc/nqp-src/QASTMoar.nqp:5503: next if ~$_ eq '$allops'; 13:15
diakopter JimmyZ: close enough 13:16
FROGGS it is used that way in several places
diakopter JimmyZ: or just refactor the Ops.nqp generation script to make it better named
JimmyZ my @operands := MAST::Ops.WHO{'$allops'}{$moarop}{"operands"}; 13:18
I can't get it
+@operands return 0
13:21 woolfy left
diakopter JimmyZ: some of them have 0 operands 13:21
JimmyZ I know that 13:22
diakopter ok :)
FROGGS: when I run prove with -vv, it shows that 14-while.t runs just fine.... 13:25
FROGGS O.o 13:28
diakopter: so is there an issue with 14 anymore?
diakopter don't know. 13:29
FROGGS hmmm, now it fails on my box
diakopter yeah, definitely something is wrong 13:30
FROGGS Program received signal SIGSEGV, Segmentation fault.
0x0000000000423894 in MVM_hll_get_config_for ()
diakopter hrm
diakopter tries in vs
boom 13:31
erm.
not boom.
but no output.
FROGGS 0x000000000043c361 in MVM_hll_get_config_for (tc=0x81a2d0, name=0x0) at src/core/hll.c:8
8\t MVM_HASH_EXTRACT_KEY(tc, &kdata, &klen, name, "get hll config needs concrete string");
diakopter JimmyZ removed some marking 13:32
gotta be that
diakopter tries 13:33
hm 13:34
JimmyZ I just removed duplicated part 13:35
diakopter yeah didn't fix 13:36
dalek arVM/nobank: bc552ca | jimmy++ | / (5 files):
removed left bank code
13:48
13:53 jnap joined 13:54 not_gerd left
JimmyZ diakopter: Could you help take a look at nobank branch? I got a blocker ... 14:03
14:17 benabik joined
diakopter JimmyZ: ok 14:33
FROGGS .tell jnthn I think the problem with 14-while is that cu->body->hll_name is overwritten by a gc run: gist.github.com/FROGGS/c05f3c4d8dec0fa98e00 14:35
yoleaux FROGGS: I'll pass your message to jnthn.
JimmyZ diakopter: thanks 14:36
dalek arVM/nobank: 0faf79b | jimmy++ | nqp-cc/src/QASTOperationsMAST.nqp:
small fixes
diakopter JimmyZ: what's the problem 14:37
JimmyZ diakopter: cd nqp-cc && make 14:38
diakopter: you will see it
diakopter JimmyZ: you removed the thing that verifies whether the op exists 14:41
so it's not catching the error soon
JimmyZ I think I just fixed it 14:43
testing
diakopter why is it not looking in the hash for the op in push_op 14:44
FROGGS .tell jnthn Maybe I'm wrong, since the gc run swaps from- and to-space, right? 14:45
yoleaux FROGGS: I'll pass your message to jnthn.
dalek arVM/nobank: f444698 | jimmy++ | lib/MAST/Nodes.nqp:
another small fixes
diakopter it needs to do the MAST::Ops.WHO{'$allops'}{$op} lookup in push_op
JimmyZ diakopter: feel free to add it 14:46
diakopter no I htink your last patch is ok 14:47
JimmyZ but I got anothter blocker 14:48
diakopter ok ok let me look at it
JimmyZ thanks
FROGGS ohh 14:51
when it copies the cu to tospace it copies 176 bytes, which might be sizeof MVMCompUnit 14:52
but the cu->body points to other stuff (hll_name), which is in mem after there 176 bytes
these*
benabik JimmyZ++ # cgoto links 14:55
diakopter FROGGS: ohh. 14:58
but the body is malloc'd 14:59
JimmyZ: I'm fixing the branch.. 15:01
redoing the .p6 gen script
JimmyZ diakopter: great
Is it the .p6 gen script problem?
jnthn I suspect the p6 gen script gets simpler :) 15:02
yoleaux 14:35Z <FROGGS> jnthn: I think the problem with 14-while is that cu->body->hll_name is overwritten by a gc run: gist.github.com/FROGGS/c05f3c4d8dec0fa98e00
14:45Z <FROGGS> jnthn: Maybe I'm wrong, since the gc run swaps from- and to-space, right?
jnthn So long as it doesn't end up written in p5, it's fine :P
JimmyZ is going to sleep
jnthn 'night, JimmyZ++
JimmyZ jnthn: I think most work is done, just need some small fixes(which maybe need big debug) :P 15:03
diakopter JimmyZ: no needs much slimplifiatsknadfslidfn
erm. 15:04
JimmyZ jnthn: github.com/MoarVM/MoarVM/compare/nobank for a quick review, may I lost something
diakopter simplification.
fixing...
diakopter claims the branch
jnthn: yes, simpler. in p6.
jnthn :)
JimmyZ and thanks n_gerd++ for type help 15:05
diakopter baby p6, anyway. ;)
15:05 donaldh joined
JimmyZ err, not_gerd++ 15:09
15:15 jnap joined 15:18 dalek joined 16:29 FROGGS joined 16:53 not_gerd joined
not_gerd o/ 16:53
naive op sequence statistics: gist.github.com/gerdr/2c16eff066736d181b99
hm... 16:54
I probably should have sorted by the first percentage value 16:55
[Coke] not_gerd: if you make that a csv, github will format it nicely for you. 16:56
(hurm. maybe not when it's a gist) 16:57
arnsholt not_gerd: Another statistic that might be interesting is conditional probabilities. Given the previous op, which ops are most probable? 17:02
not_gerd now we're getting fancy ;)
arnsholt Once you have unigram and bigram statistics, not really =) 17:03
Just the bigram count divided by the unigram count of the op you're conditioning on 17:04
moritz 'make install' will install MoarVM Cross Compiler. 17:26
moritz@lara:~/p6/MoarVM/nqp-cc>make install
make: *** No rule to make target `install'. Stop.
benabik Well, it will. Someday. 17:28
jnthn
.oO( it depends what the meaning of "will" will be... )
17:31
not_gerd arnsholt: gist.github.com/gerdr/77cb5e2c9336aedde466 17:37
arnsholt \\o/ 17:41
18:11 donaldh joined 18:28 lizmat joined
not_gerd bye, #moarvm 18:59
18:59 not_gerd left
FROGGS diakopter: is there a way to tell the GC that an object should not be moved to tospace because something is modifying it currently? 19:23
jnthn FROGGS: It doesn't work like that.
Modification is not the problem, the problem is usually that you have a pointer to an object that the GC doesn't know about. 19:24
And thus can't update.
FROGGS jnthn: the problem is that we fetch the obj's pointer, and right after that it gets moved, and ->forwarder is set 19:25
and then it sets values to the old obj as it seems 19:26
jnthn That can only happen if something allocates.
FROGGS it does
it calls a function that allocates strings
jnthn Right, that's why we have MVMROOT, etc.
FROGGS (I'm talking about the 14-while prob)
jnthn: so, I just have to wrap it in MVMROOT, right? 19:27
jnthn FROGGS: Yeah, though where is this? In compiler.c? 19:28
FROGGS jnthn: bytecode.c/MVM_bytecode_unpack
jnthn oh...wow
Unpacking bytecode should probably allocate directly to the old generation, like deserialization does. 19:29
Since those objects are going to live for along time
And old generation direct allocations will (a) never trigger GC, and (b) at present never result in objects moving around.
FROGGS that is called gen2, right? 19:30
jnthn See MVM_gc_allocate_gen2_default_set and MVM_gc_allocate_gen2_default_clear, which you probably want to call before/after bytecode unpacking.
aye
The penguin
FROGGS yeah 19:31
:o)
it passes \\o/ 19:35
TimToady ship it! 19:36
FROGGS *g*
dalek arVM: e3ef9d7 | (Tobias Leich)++ | src/core/bytecode.c:
allocate directly in gen2, fixes 14-while.t
19:42
FROGGS jnthn++ # I love ya! I learned much {yester,to}day, and it was super fun :o)
jnthn Shit pi! That breaks MSVC!
FROGGS wut? 19:43
jnthn ReaderState *rs = dissect_bytecode(tc, cu);
Comes after the MVM_gc_allocate_gen2_default_set(tc); call
FROGGS ahhh
yeah
I see
jnthn MSVC doesn't like this :)
Otherwise, looks good :)
FROGGS yeah, I basically know that :o) 19:44
dalek arVM: 136a699 | (Tobias Leich)++ | src/core/bytecode.c:
declaration before code, really
19:45
diakopter MVM_gc_allocate_gen2_default_set and companion need to atomically increment/decrement an integer 20:17
jnthn Nah 20:18
They're per-tc
Not global
diakopter ok/ s/atomically// 20:19
jnthn yes, we could do 'em that way, if they ain't already
Probably wise :)
dalek arVM: 1de88f0 | (Tobias Leich)++ | nqp-cc/nqp-src/QRegex.nqp:
revert a revert, we an run this code now
20:27
diakopter jnthn: not being able to store stuff in NQP class our serialized hurts speed a lot.. 20:28
jnthn diakopter: I think it may be possible...moment... 20:34
diakopter: gist.github.com/jnthn/6429209 20:36
diakopter: I guess you're doing this for op info to speed startup? :) 20:38
FROGGS $ ../moarvm nqp.moarvm -e 'sub a() { return; }' # Could not locate compile-time value for symbol return 20:40
$ ../moarvm nqp.moarvm -e 'sub a() { return }' # cannot stringify this
(t/nqp/44-try-catch.t)
20:40 donaldh joined
jnthn Curious failure mode 20:41
I know 44-try-catch depends on missing stuff, so won't work out, but something weird about that way of it failing.
FROGGS yeah, if that would be fixed it would be blow up because of missing nqp::rethrow 20:42
s:2nd[be\\s] = '' 20:43
token prefix:sym<return> { <sym> \\s <O('%list_prefix')> { $*RETURN_USED := 1 } } 20:45
how should that match 'return;' ?
FROGGS looks at nqp
jnthn um, it don't o.O 20:46
*won't
moritz FROGGS: you actually have to return a value in NQP 20:47
jnthn See #perl6, but yeah, I remember this now...
It parses as a type name and apparently on MoarVM gets upset over it being missing...
diakopter jnthn: aye [to your q[ 20:52
[
]]]
dalek arVM: ab90d7d | (Tobias Leich)++ | nqp-cc/t/nqp/44-try-catch.t:
return is a list prefix
20:53
jnthn diakopter: najs
'night all, happy hacking :) 21:53
23:07 benabik joined
diakopter .tell JimmyZ I'm still claiming the nobank branch... just a few more hours at the max.. 23:09
yoleaux diakopter: I'll pass your message to JimmyZ.
diakopter .tell not_gerd I'm still claiming the nobank branch... just a few more hours at the max.. 23:10
yoleaux diakopter: I'll pass your message to not_gerd.