Camelia, the Perl 6 bug

IRC log for #moarvm, 2013-08-31

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

All times shown according to UTC.

Time Nick Message
01:10 FROGGS_ joined #moarvm
04:59 JimmyZ Good afternoon
04:59 benabik Good after-midnight
06:16 FROGGS_ jnthn++ # sounds like le awesomeness! \o/
06:55 moritz_ joined #moarvm
07:04 segomos_ joined #moarvm
07:04 TimToady_ joined #moarvm
07:17 BinGOs joined #moarvm
07:27 FROGGS_ MAST -> bytecode sounds like fun
09:59 jnthn Well, we already have most of the pieces...
10:00 jnthn Now "just" need to write it up...
10:17 FROGGS jnthn: doesn't feel like I an help with it, right?
10:20 jnthn FROGGS: No, it's mostly just wiring stuff togehter then debugging it...
10:21 jnthn Once I get through this, we can all dig into getting the NQP tests passing on selfhost, though :
10:21 jnthn :)
10:23 FROGGS +1 # I'm all for it :o)
10:25 JimmyZ That should be less pain to wait pbc => pir
10:41 dalek MoarVM: 095f0b4 | jnthn++ | / (4 files):
10:41 dalek MoarVM: Add ops related to MAST assmebly and comp units.
10:41 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/095f0b49bf
10:41 dalek MoarVM: e2feff7 | jnthn++ | nqp-cc/src/QASTOperationsMAST.nqp:
10:41 dalek MoarVM: Map new MAST/compilation unit ops.
10:41 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/e2feff78ca
10:48 JimmyZ cgoto branch fib(28) is about 3x faster than perl5
10:49 jnthn JimmyZ: How is normal MoarVM?
10:49 jnthn JimmyZ: Is that fib written in NQP?
10:50 JimmyZ jnthn: \nqp-cc\bench\fib.t
10:50 jnthn JimmyZ: ah, written directly in the assembly...
10:50 jnthn JimmyZ: That's not really quite fair to compare :)
10:51 JimmyZ jnthn: I din't compare the compiling time, only fib call part
10:52 jnthn JimmyZ: I meant, if we want to compare against Perl 5, we should compare the code produced from NQP at least
10:55 JimmyZ jnthn: that's really quite fair either, consider NQP outputs completely unoptimized code, while perl5 not
10:59 JimmyZ oh, consider perl5 doesn't support native int either...
11:07 dalek MoarVM: 1a9c943 | jnthn++ | nqp-cc/ (4 files):
11:07 dalek MoarVM: Get backend-related code sketched out.
11:07 dalek MoarVM:
11:07 dalek MoarVM: In the best case, the new ops "just" need implementing for things to
11:07 dalek MoarVM: work.
11:07 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/1a9c943b15
11:13 not_gerd joined #moarvm
11:13 not_gerd o/
11:13 jnthn o/ not_gerd
11:13 not_gerd jnthn: NQP and Perl5 end up in the same ballpark on on machine
11:13 not_gerd see https://gist.github.com/gerdr/30f83aabd3c323249f08
11:14 not_gerd test program was a basic, untyped fibonacci
11:14 jnthn not_gerd: Presumably, with a --optimize'd Moar?
11:15 not_gerd moving to a flat op set and re-ordering some of the op definitions to get better locality might possibly be enough to make up the difference
11:15 jnthn *nod*
11:15 not_gerd jnthn: yes, with optimize
11:16 not_gerd mingw gcc 4.7.3, possibly 4.6.3 (but I don't think so)
11:16 not_gerd depends on which shell window I used to trigger the compile ;)
11:17 jnthn :)
12:12 cognominal joined #moarvm
12:23 * not_gerd drops out again
12:24 not_gerd I'll see about getting a bit more of the nativecall stuff converted
12:24 not_gerd o/
12:24 jnthn o/
12:24 not_gerd left #moarvm
12:30 nwc10 I'm pretty confident that MoarVM will beat Perl 5 in the long run
12:30 nwc10 please don't compramise the design to get there sooner, but stuff the long term prospects
12:30 JimmyZ Is it a troll?
12:31 nwc10 no.
12:31 jnthn JimmyZ: What? :)
12:31 nwc10 jnthn: jnthn knows who I am.
12:31 jnthn You're telling me! :P
12:31 JimmyZ I know too :P
12:31 nwc10 good. wasn't sure
12:31 jnthn But yes, design matters.
12:32 nwc10 I'm trying to imagine the position 10 years from now
12:32 FROGGS as long as jnthn++ is here it won't get messed up I think
12:32 jnthn Whining about stuff I consider bad design is probably the most useful thing I do here...
12:32 nwc10 given that perl 5 is a 15 to 25 year old codebase
12:32 FROGGS jnthn: exactly :o)
12:32 JimmyZ Nicholas Clark, right?
12:32 nwc10 yes
12:33 JimmyZ ;)
12:33 * jnthn digs in to wiring up MAST to bytecode
12:33 FROGGS and 10 is binary for Jr. ?
12:33 FROGGS :P
12:33 nwc10 It's trying to avoid the known "if I were you sir, I wouldn't start from here"
12:33 nwc10 avoid doing the things that came to hurt Perl 5 later on
12:34 * jnthn wonders if the 10 is from a university email address :)
12:34 jnthn (Given I know how email addresses looked there, and am pretty sure nwc10 was at the same place... :))
12:34 nwc10 yeah, I got lazy and used the university allocated user ID because it was faster than figuring something else out
12:34 jnthn hah!
12:34 JimmyZ well, I still don't know what troll means :(
12:35 nwc10 yes, not "the other place" (which is a very very demeaning term, as it implies that there are only two places)
12:35 JimmyZ in english
12:35 jnthn nwc10: There are other places, there's only two that matter. The good one and the other one. :P
12:35 arnsholt Heh. I guess I now know that nwc10 and jnthn went to one of two universities ^_^
12:35 nwc10 the other one has a nicer blue. tempted by the dark side, I am...
12:36 FROGGS JimmyZ: a troll is sombody that is just here to provoke others
12:37 arnsholt Oxford is the blue one, no?
12:37 arnsholt And Cambridge is some shade of red (crimson?)?
12:37 FROGGS JimmyZ: and it is a fantasy-figure like a dwarf, just taller than humans and usually very stupid
12:38 nwc10 http://en.wikipedia.org/wiki​/Cambridge_Blue_%28colour%29 -- This colour is actually a medium tone of spring green.
12:38 nwc10 it's not a very pretty colour
12:38 JimmyZ I thought troll is a controversy
12:38 arnsholt nwc10: Huh. Didn't know about that one at all
12:39 nwc10 but for not-quite-the-colour-you-first thought see https://encrypted.google.com/images?q=stroudley​%27s+improved+engine+green&oe=utf-8&gbv​=1&hl=en&sa=X&oi=image_result_group​&ei=xuMhUvm3JYfVtAbB9YCwDA&ved=0CCcQsAQ
12:39 nwc10 mmm, that's not obvious that that's "Stroudley's improved engine green"
12:39 nwc10 and https://encrypted.google.com/s​earch?q=pantone+rhodamine+red
12:39 nwc10 which is probably a colour that BooK approves of
12:39 arnsholt Generalising from the pictures, is it that shade of mustard yellow?
12:40 arnsholt I work with machine learning, so in cases like that the correct answer is obviously the
12:41 arnsholt There will always be bad doctors. What's needed is transparency, but laws such as HIPAA protect them (as well as patient privacy), and many doctors now have you sign a NDA before treatment, to prevent disparaging remarks being posted online.
12:41 arnsholt reply
12:41 arnsholt lutusp 2 hours ago | link
12:41 arnsholt Not to make light of a terrible story, but:
12:41 arnsholt "Somewhere in the world is the world's worst doctor. And what's truly terrifying is that someone has an appointment with him tomorrow morning." -- George Carlin
12:41 arnsholt Blah. Sorry 'bout that. Fat fingers >.<
12:41 nwc10 arnsholt: yes. Stroudley was colour blind
12:41 arnsholt Oooh, that's actually a pretty good reason for the colour being odd =)
12:42 arnsholt Anyways, I work with machine learning, so picking the most prevalent option comes naturally to me =)
12:44 FROGGS gdb --args ../moarvm nqp.moarvm -e '1'
12:44 FROGGS Program received signal SIGSEGV, Segmentation fault.
12:44 FROGGS 0x0000000000414d4d in MVM_6model_find_method (tc=0x8152c0, obj=0x0, name=0x12e9ab0) at src/6model/6model.c:14
12:44 FROGGS 14    MVMObject *cache = STABLE(obj)->method_cache;
12:44 FROGGS (dunno if that is helpful, I guess not)
12:44 jnthn hm
12:44 jnthn No, that's not what I get :)
12:45 JimmyZ FROGGS: you got an old build
12:45 JimmyZ I'm sure
12:45 JimmyZ an old nqp-cc
12:45 jnthn Also I have local changes...though not ones likely to influence that...
12:46 JimmyZ that's segfaut in getcomp('xxx).post
12:46 JimmyZ where should be as_mast
12:46 JimmyZ and jnthn++ fixed it
12:46 FROGGS jnthn: maybe I have to make clean... I have the last revision...
12:59 benabik joined #moarvm
13:02 FROGGS no, my repo is up-to-date and build afresh, still that error
13:02 FROGGS latest commit is 1a9c943b15920e85f7133cba4d451abff7ce8aa0
13:03 dalek MoarVM: 7216843 | jnthn++ | / (7 files):
13:03 dalek MoarVM: Start getting ops wired up to MAST compiler.
13:03 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/721684306b
13:06 JimmyZ warning: ‘struct _MASTNodeTypes’ declared inside parameter list
13:07 JimmyZ error: conflicting types for ‘MVM_mast_compile’
13:07 FROGGS I get the same
13:07 jnthn Fussy compilers...
13:07 jnthn MSVC doesn't so much as warn.
13:08 JimmyZ :)
13:08 FROGGS /home/froggs/dev/MoarVM/sr​c/mast/compiler.c:171:char * MVM_mast_compile(VM, MASTNode *node, MASTNodeTypes *types, unsigned int *size);
13:08 FROGGS /home/froggs/dev/MoarVM/src/mast/compiler.h:1:char * MVM_mast_compile(MVMThreadContext *tc, MVMObject *node, ...
13:08 jnthn Right, but if you chase the mappings, they should come out about the same...
13:09 jnthn Or exactly the same...
13:11 FROGGS jnthn: node has different pointer types
13:11 jnthn FROGGS: ?
13:12 FROGGS MASTNode *node <=> MVMObject *node
13:12 jnthn typedef MVMObject MASTNode;
13:12 jnthn (in nodes_moarvm.h)
13:13 FROGGS bah
13:13 FROGGS :P
13:13 FROGGS maybe this is the problem then? src/mast/compiler.h:2:12: warning: 'struct _MASTNodeTypes' declared inside parameter list [enabled by default]
13:14 FROGGS src/mast/compiler.h:2:12: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
13:14 jnthn That looks more suspect
13:14 FROGGS jnthn: hehe, that sounds like a sentence from you :o)
13:14 jnthn But then again:
13:14 jnthn typedef struct _MASTNodeTypes {
13:14 jnthn ...
13:14 jnthn }
13:15 jnthn MASTNodeTypes;
13:15 jnthn oh, but nodes_moarvm.h ain't #include'd except in mast/compiler.c and mast/driver.c...
13:16 jnthn So I guess that's why
13:16 jnthn Oh, there's no good reason for anything other than driver.c to include compiler.h anyway
13:17 FROGGS meh, I wanted to ask that one right now :o)
13:20 jnthn Will do that in a moment...
13:22 JimmyZ added #include "nodes_moarvm.h" in compiler.h fixes here...
13:22 JimmyZ oh, not yet...
13:23 jnthn yes, but that's not a good fix :)
13:24 JimmyZ ye
13:24 JimmyZ aye
13:24 dalek MoarVM: 8407c72 | jnthn++ | / (3 files):
13:24 dalek MoarVM: Distinguish coercion from typed array access.
13:24 dalek MoarVM:
13:24 dalek MoarVM: This gets the MAST compiler sufficiently fixed up to survive compiling
13:24 dalek MoarVM: some simple input.
13:24 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/8407c72e9f
13:24 dalek MoarVM: b3b19ea | jnthn++ | src/m (3 files):
13:24 dalek MoarVM: Hopefully fix build on pickier compilers.
13:24 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/b3b19eaaf8
13:33 FROGGS meh, jnthn++ commits before my box finished compiling
13:38 FROGGS no, I just have an input line buffering problem and re-read these commits -.-
13:38 FROGGS it still segfaults here
13:39 dalek MoarVM: 332b707 | jnthn++ | src/core/compunit. (2 files):
13:39 dalek MoarVM: Factor out bytes -> comp unit for re-use.
13:39 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/332b707da0
13:39 dalek MoarVM: 02cf906 | jnthn++ | src/mast/driver.c:
13:39 dalek MoarVM: Have MAST compiler driver load bytecode.
13:39 dalek MoarVM:
13:39 dalek MoarVM: It now returns a compilation unit.
13:39 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/02cf9061a4
13:43 dalek MoarVM: e2f1486 | jnthn++ | src/core/interp.c:
13:43 dalek MoarVM: Implement iscompunit op.
13:43 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/e2f1486449
13:43 nwc10 jnthn++ # progress on getting to -e "say("hello world")'
13:52 dalek MoarVM: d8a0a5d | jnthn++ | src/core/interp.c:
13:52 dalek MoarVM: Implement compunitmainline.
13:52 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/d8a0a5d8a9
13:53 jnthn I need to fix up the load/deserialize stuff for comp units assembled out of MAST, but...
13:53 jnthn C:\consulting\MoarVM\nqp-cc>..\moarvm.exe nqp.moarvm -e "nqp::say(42)"
13:53 jnthn 42
13:53 jnthn (can't do say yet, as load is what puts the setting in place)
13:57 lizmat jnthn++
14:15 FROGGS $ ../moarvm nqp.moarvm -e 'nqp::say(42)'
14:15 FROGGS 42
14:15 diakopter wat.
14:15 FROGGS jnthn++ # it doesnt segfault anymore! (since the last two commits or so)
14:17 jnthn *dromroll*
14:17 dalek MoarVM: caaaa1f | jnthn++ | src/ (3 files):
14:17 dalek MoarVM: Preparatory refactor for CU deserialize/load.
14:17 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/caaaa1f6bf
14:17 dalek MoarVM: 2fa5099 | jnthn++ | src/ (2 files):
14:17 dalek MoarVM: Run deserialize for MAST-compiled comp units.
14:17 dalek MoarVM:
14:17 dalek MoarVM: Don't actaully need to do load, that's a loadbytecode thing while this
14:17 dalek MoarVM: is a more eval-like case where the invocation happens later. Now, the
14:17 dalek MoarVM: setting is put in place, and thus the cross-compiler can do 'say(42)'.
14:17 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/2fa5099892
14:18 jnthn C:\consulting\MoarVM\nqp-cc>..\moarvm.exe nqp.moarvm -e "say('Hello, Moar')"
14:18 jnthn Hello, Moar
14:18 jnthn \o/
14:18 JimmyZ jnthn++
14:18 FROGGS yeah!!
14:18 FROGGS jnthn++
14:18 diakopter does it work when --optimize
14:18 jnthn No idea :)
14:18 * jnthn tries
14:19 jnthn diakopter: yes
14:20 FROGGS $ time ../moarvm nqp.moarvm -e 'say("\x65")'
14:20 FROGGS e
14:20 FROGGS real0m0.393s
14:20 FROGGS I like it :o)
14:20 diakopter 393?!
14:20 jnthn FROGGS: Is that optimized or unoptimized?
14:21 FROGGS the default, whatever that means
14:21 jnthn Unoptimized.
14:22 jnthn We didn't deal with serializing the MAST::Ops data structure yet, though, let alone the huge table QAST::CompilerMAST builds up.
14:22 jnthn That'll save some. But can worry about that some way down the line :)
14:23 diakopter that'll save a lot
14:23 JimmyZ ../moarvm nqp.moarvm -e "nqp::say(42)"
14:23 JimmyZ Segmentation fault (core dumped)
14:23 diakopter also the op() sub is HORRIBLY inefficient (diakopter--)
14:23 diakopter in the qast->mast compiler
14:23 diakopter jnthn, I got my new microsoft sculpt keyboard in the mail; it's worth its weight in gold
14:24 diakopter node_hash should access a lexical
14:25 jnthn diakopter: nice :)
14:25 FROGGS JimmyZ: maybe do git clean xdf?
14:28 jnthn Hm. If you feed it a file x.nqp containing exactly "say('Hello, Moar');" it works, but add a newline and it hangs. D'oh. :)
14:28 diakopter :)
14:28 diakopter oh, the innumerable little things
14:28 jnthn Yes, there'll be a bunch of those. :)
14:29 jnthn Anyway, nice that selfhost actually manages something
14:30 diakopter yes jnthn++
14:31 FROGGS what is up next? merge it into nqp repo or fix these nice little things?
14:31 diakopter my boss asked me yesterday what I thought about moving to South Carolina. my reaction: "yes"
14:32 JimmyZ ../moarvm nqp.moarvm -e "say('Hello, Moar')"
14:32 JimmyZ No lexical found with name '&say'
14:32 diakopter need to nmake nqp-cc
14:33 jnthn need to nmake moarvm itself again, I susepct
14:33 JimmyZ nqp::say works \o/
14:33 jnthn that means setting not loaded
14:33 jnthn FROGGS: No, we need to get selfhost passing t/nqp and t/serialization first :)
14:33 jnthn FROGGS: Then we can attempt the bootstrap
14:33 jnthn And yes, then nqp-cc goes away.
14:35 FROGGS k
14:35 JimmyZ will moar.exe be short for moarvm? :P
14:36 diakopter it'll rarely be run like that; usually it'll be from perl6.exe
14:36 diakopter or perl.exe ;)
14:37 diakopter we can very easily do a similar fakecuteable trick to parrot's
14:40 diakopter bbl&
14:40 jnthn aye
14:40 jnthn what diakopter said
14:40 * jnthn afk for a bit too
14:42 diakopter JimmyZ: to compile NQP.nqp, parrot nqp uses 500MB ram here
14:43 JimmyZ yes
14:48 cognominal__ joined #moarvm
14:49 JimmyZ hmm, I got No lexical found with name '&say' again
14:51 dalek MoarVM: bc8b6cf | (Tobias Leich)++ | build/Makefile.in:
14:51 dalek MoarVM: simple test target, might need to be improved
14:51 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/bc8b6cfad7
14:53 FROGGS segfault in MVM_string_index_of_codepoint called from nqp_nfa_run
14:53 FROGGS I think I know what I do this night :o)
14:54 JimmyZ works now, forgot git pull :/
15:14 FROGGS the MVM_GRAPHS in src/string/ops.c:L618 something random/uninitialized
15:16 JimmyZ missing MVM_string_flatten?
15:18 FROGGS no idea, I'm off to buy something to eat
15:24 TimToady_ JimmyZ: controversy by itself is not the problem; I would say that a troll is more interested in stirring the controversy than in solving the controversy
15:25 TimToady_ the dishonest part of it is that a troll pretends to be interested in the subject of a controversy when they are not really
15:26 TimToady_ ooh, I have a tail; I must be a troll :)
15:26 JimmyZ hmm, my english dictionary say troll is something about fish
15:26 FROGGS no
15:26 FROGGS I dont see a relation between troll and fish
15:27 JimmyZ fishing
15:27 TimToady the "troll" means to drag a fishing line behind a boat
15:27 TimToady *the verb
15:27 FROGGS ahh
15:27 TimToady but that's also part of the "trolling" metaphor online
15:28 TimToady it means you are dragging "bait" through a channel to see if anyone bites and fights you
15:28 JimmyZ I didn't see it in my dicts...
15:28 TimToady the bait is just saying controversial things you don't necessarily even believe
15:29 JimmyZ but I see it said troll is role in some online game
15:29 JimmyZ is a role
15:29 TimToady so the online definition of "troll" is really a pun on both the mythical beast that lives under a bridge, and the act of fishing from a boat
15:30 JimmyZ oh, I see another one, troll is a network term
15:31 JimmyZ yes, this is what I'm look for
15:34 TimToady but anyway, the two original meanings of "troll" are apparently unrelated to each other
15:39 ggoebel joined #moarvm
15:51 JimmyZ Good night
15:55 colomon joined #moarvm
16:09 TimToady huh, my new moarvm still segfaults
16:09 TimToady doesn't look like jnthn++ was working in a branch...
16:10 TimToady maybe I need a reconfig
16:10 jnthn Re-configure the cc also...I fixed a missing Makefile dep last night
16:11 TimToady that's what I'm doing
16:14 TimToady github having loading issue?  I'm getting a lot of "connection refused"
16:16 TimToady maybe it's my router crapping out
16:18 TimToady looks like it
16:35 TimToady still get nothing but segfaults after reconfigging, make clean, make in both directories :(
16:36 TimToady (linux, 64-bit)
16:37 FROGGS TimToady: I git cleaned
16:39 TimToady I tend not to do that because I put some of my own files into directories, but I guess it'd work here
16:39 FROGGS yeah :/
16:40 FROGGS well, you could clone the repo afresh, this isnt too bad
16:42 FROGGS TimToady: btw, -e 'say(1)' should be file while executing a file should segfault atm
16:42 FROGGS be fine*
16:43 TimToady segfaults with -e
16:43 TimToady I know about the newline thing
16:44 jnthn TimToady: Any chance of a gdb backtrace?
16:44 FROGGS my segfault before git clean was:
16:44 FROGGS 0x0000000000414d4d in MVM_6model_find_method (tc=0x81c2c0, obj=0x0, name=0x12f0ab0) at src/6model/6model.c:1
16:45 TimToady now configure fails:
16:45 TimToady Updating submodules .................................... FAIL git error: fatal: reference is not a tree: a9e6eec70785f43f63ef17189fc2733d4ceb8446
16:45 TimToady Unable to checkout 'a9e6eec70785f43f63ef17189fc2733d4ceb8446' in submodule path '3rdparty/dyncall'
16:46 TimToady sync fixed that
16:46 FROGGS I've seen that one too
16:46 TimToady maybe that was the problem all along
16:47 FROGGS yeah, that would make sense
16:50 jnthn FROGGS: Think I found the reason for the SEGV in the NFA evaluator...
16:50 jnthn FROGGS: gc_mark isn't yet implemented in the NFA REPR!
16:50 FROGGS jnthn: okay, then I understand why I did not spot the error *g*
16:53 TimToady $ ../moarvm nqp.moarvm -e '$_ := 42; say($_)'
16:53 TimToady No lexical found with name '$_'
16:53 TimToady aww
16:53 FROGGS too bad
16:54 TimToady but say(42) works now \o/
16:55 FROGGS that is awesome isnt it? and it is hard to explain this cool stuff (a number gets printed) to a non-hacker...
16:56 FROGGS "See, it prints 42!! \o/" - "So what?"
17:12 dalek MoarVM: a85eec6 | jnthn++ | src/6model/reprs/NFA.c:
17:12 dalek MoarVM: Implement missing NFA GC-related functions.
17:12 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/a85eec6aca
17:12 jnthn dinner &
17:45 diakopter back
17:46 diakopter it prints 42. so what?
17:46 FROGGS *g*
17:46 diakopter <- must not be a hacker
17:48 diakopter "I can make something print 42, too"
17:48 diakopter "surely I could just build on that and make it do all the other things your thing can do"
17:49 diakopter we should make configure run git submodule sync and update every time
17:49 FROGGS that is like the big bang theory where they control the stereo via internet and satelite-uplink
17:49 diakopter also every make target.
17:49 FROGGS sounds sane, yeah
17:50 jnthn not on every make
17:50 jnthn That'll be teh slow... :/
17:50 diakopter oh
17:50 FROGGS make submodules ?
17:50 jnthn Fine
17:50 jnthn It already takes a bit to re-Configure :)
17:51 diakopter I wish compilers were smart enough to infer all dependencies
17:51 diakopter .oO( someday... )
17:52 FROGGS 22s on my box... the nqp-cc stuff however takes ages
17:53 diakopter jnthn: why does the nfa gc_free free nfa->num_state_edges... shouldn't it free nfa->body.states instead
17:57 jnthn Um, should free both, by the looks of it
17:57 diakopter ah yes
17:58 diakopter num_state_edges should be renamed state_edges_counts
17:59 dalek MoarVM: d1100dd | jnthn++ | src/6model/reprs/NFA.c:
17:59 dalek MoarVM: Missing free(); diakopter++.
17:59 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/d1100dd448
18:00 * diakopter leaves that renaming to sum1else
18:00 diakopter jnthn: hm I guess I should finish that serialize soon
18:02 diakopter jnthn: anything else I should work on before that though?
18:02 jnthn diakopter: we'll need it for bootstrap, but we need to get t/nqp passing on selfhost first :)
18:03 jnthn diakopter: Well, there's probably quite a few little bits to hunt down. The current one is that feeding it a file with a newline at the end hangs :)
18:03 jnthn (put "say(42);" in a file and it works; add a newline and it hangs)
18:04 jnthn Appears to hang in the quantified alternation in token ws
18:05 Ulti joined #moarvm
18:07 * diakopter works on a little smarter tracer
18:09 jnthn ah, golfed
18:10 jnthn Running https://gist.github.com/jnthn/6399764 under nqp-moar-cc.nqp also hangs
18:10 jnthn Removing the quant does too
18:11 diakopter try removing the $
18:12 jnthn oh wow, it really golfs
18:13 jnthn say("foo;\n" ~~ /^ 'foo;' \v+/); # hangs
18:17 diakopter C:\Users\mwilson\src\MoarVM\nqp-cc>..\moarvm nqp.moarvm -e "say(""foo;\n"" ~~ /^ 'foo;' \v+/);"
18:17 diakopter Method "!dba" not found in cache, and late-bound dispatch NYI at <unknown>:1  (./NQPP6QRegexMoar.moarvm:infixstopper:0)
18:18 jnthn no no, run it under the cc
18:18 diakopter oh heh
18:21 * jnthn wonders what indexat_scb does
18:21 diakopter C:\Users\mwilson\src\MoarVM\nqp-cc>nqp nqp-moar-cc.nqp -e "'' ~~ /\v+/" #hangs
18:21 jnthn ohhh
18:21 jnthn Note that say("foo;\na" ~~ /^ 'foo;' \v+/); does not hang
18:21 jnthn Meaning it's a "oh noes end of string" thing.
18:21 diakopter k
18:22 jnthn In MVM_string_char_at_in_string
18:23 jnthn if (offset < 0 || offset >= NUM_GRAPHS(a))
18:23 jnthn return 0;
18:23 jnthn But in the op:
18:23 jnthn if (MVM_string_char_at_in_string(tc, GET_REG(cur_op, 0).s,
18:23 jnthn GET_REG(cur_op, 2).i64, cu->body.strings[GET_UI16(cur_op, 4)]) >= 0)
18:23 jnthn cur_op += 10;
18:24 diakopter hm oops
18:24 jnthn I guess it should return -1?
18:24 diakopter off by -1
18:25 jnthn Seems to help
18:25 jnthn yayz
18:25 jnthn ..\moarvm.exe nqp.moarvm t\nqp\01-literals.t
18:25 jnthn ...now passes. :)
18:25 diakopter awesome
18:25 FROGGS O.o
18:27 jnthn Next one fials though
18:28 diakopter better than failing..
18:30 jnthn wow, it's another "how did that ever work" one
18:30 FROGGS hehe
18:30 diakopter :)
18:31 diakopter me hopes jnthn pushes soon
18:31 * diakopter too
18:31 dalek MoarVM: 3c85cc2 | jnthn++ | src/strings/ops.c:
18:31 dalek MoarVM: An index search returns -1 for not found, not 0.
18:31 dalek MoarVM:
18:31 dalek MoarVM: Fixes the hang in \v+ at end of string.
18:31 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/3c85cc290c
18:32 jnthn Working on the next one at the moment
18:32 jnthn Can somebody add a make selftest target?
18:32 jnthn prove --exec="../moarvm nqp.maorvm" t/nqp or so
18:33 * diakopter volunteers FROGGS
18:33 FROGGS jnthn: make test
18:33 FROGGS in main dir
18:33 FROGGS dunno if that works under windows
18:33 FROGGS we pass quite a few test already
18:33 jnthn FROGGS: That's the wrong place.
18:34 FROGGS ohh, okay
18:34 jnthn make test in the main directory should say somethin glike "build nqp-cc and run tests in there" for now
18:34 FROGGS k, I'll change it back
18:34 jnthn In the end, we should ship a bunch of .moarvm bytecode files
18:34 jnthn (Which we generate from something)
18:34 diakopter and they'll be stage0?
18:34 jnthn So you can test the VM in isolation after building it.
18:35 jnthn diakopter: No, I just mean test files.
18:35 diakopter oh, heh.
18:35 diakopter but will stage0 be .moarvm files?
18:35 jnthn diakopter: So you can sanity-test that you have a working MoarVM.
18:35 jnthn diakopter: yes
18:35 jnthn diakopter: But they go in the NQP repo
18:35 diakopter whee
18:36 jnthn With upcoming fix, we pass some more of the test files :)
18:37 dalek MoarVM: dbdabfb | (Tobias Leich)++ | build/Makefile.in:
18:37 dalek MoarVM: reverted `make test` patch, wrong place here
18:37 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/dbdabfbce0
18:37 dalek MoarVM: 992723e | (Tobias Leich)++ | nqp-cc/tools/build/Makefile.in:
18:37 dalek MoarVM: added `make selftest` target
18:37 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/992723e7f9
18:37 diakopter jnthn: are you using the tracing at all to debug?
18:37 jnthn No
18:37 jnthn :)
18:37 jnthn Though I did throw a one-liner into find_method to print out all the called methods :)
18:37 diakopter you can probably tell where something is in the program just by how long it seems to take
18:37 FROGGS t/nqp/01-literals.t ................... ok
18:37 FROGGS t/nqp/06-args-pos.t ................... ok
18:37 FROGGS t/nqp/46-charspec.t ................... ok
18:38 FROGGS most of them complain about redeclarations
18:38 FROGGS brb
18:38 dalek MoarVM: 87a28b3 | jnthn++ | nqp-cc/src/QASTOperationsMAST.nqp:
18:38 dalek MoarVM: If return is used, should be sub, not pointy.
18:38 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/87a28b3307
18:38 jnthn That should get a bunch more
18:38 diakopter ohhh.. didn't know that
18:39 diakopter I thought they were equivalent
18:39 diakopter didn't see a reason for them to be different
18:45 jnthn need a break, getting sore...
18:45 jnthn &
18:45 jnthn (if somebody wants to hunt the redecl bug, go for it)
18:46 FROGGS I'll give my best :o)
18:56 FROGGS it already passes 10 test files
18:58 jnthn back for a moment
18:58 jnthn I think I just realized what the redecl thing may boil down to
18:59 FROGGS $ ../moarvm nqp.moarvm -e 'my $x'
18:59 FROGGS Redeclaration of symbol $x at line 2, near ""
18:59 FROGGS it does it twice?
18:59 FROGGS (just a stupid guess)
19:01 jnthn No, it relies on ?%h being false when %h is empty, and Moar gives true
19:01 jnthn Got a fix here
19:01 dalek MoarVM: 8df1a0e | jnthn++ | src/6model/bootstrap.c:
19:01 dalek MoarVM: Fix thinko in BOOTHash boolification.
19:01 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/8df1a0e5f8
19:01 FROGGS is that related?
19:02 FROGGS $ ../moarvm nqp.moarvm t/nqp/07-boolean.t
19:02 FROGGS falsey NYI
19:02 jnthn No, that's separate
19:03 jnthn Trying a fix for that
19:03 FROGGS hehe
19:03 FROGGS $ make selftest 2>/dev/null | grep '.. ok' | wc -l
19:03 FROGGS 32
19:03 FROGGS ^^
19:04 jnthn We pass 32 of the test files already?!
19:04 FROGGS yesh
19:04 jnthn 32 out of 68 :)
19:04 jnthn Just under half
19:04 nwc10 are we going to skip Autumn and jump straight to Christmas?
19:04 jnthn Not bad on the day it became self-aware
19:04 jnthn uh, I mean...self-hosting
19:04 FROGGS *g*
19:05 nwc10 check - does it have a bad Austrian accent and a future in poltics?
19:05 nwc10 oh wait, that's its minion.
19:06 FROGGS ohh, it passes 33 files, I had fiddled with #9, and now unfiddled it :o)
19:07 diakopter no, but it's made of liquidmetal
19:07 FROGGS I guess we pass another 20 when fixing 'falsey NYI'
19:08 diakopter there's a lot more left of the day, too
19:08 FROGGS less than 3 hours here
19:08 diakopter .oO( worldwide days are twice as long
19:08 diakopter )
19:09 dalek MoarVM: 11bd2d4 | jnthn++ | nqp-cc/nqp-src/NQP.nqp:
19:09 dalek MoarVM: Get nqp::falsey working on self-host.
19:09 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/11bd2d41cd
19:09 jnthn Really afk for a bit, and no, I didn't spot the next failure to worry about, so I will actually take a break :P
19:09 jnthn &
19:12 cognominal joined #moarvm
19:14 FROGGS we pass 38 test files now
19:15 FROGGS (of 67 files)
19:26 cognominal joined #moarvm
19:30 TimToady wow
19:31 woolfy joined #moarvm
19:36 Guest1337 joined #moarvm
19:41 cognominal joined #moarvm
19:50 cognominal joined #moarvm
19:53 TimToady looks like a bunch of 'em want $!named
20:06 colomon joined #moarvm
20:06 FROGGS yeah, this condition is (accidentally?) false in this case: https://github.com/MoarVM/MoarVM/blob/​master/src/6model/reprs/P6opaque.c#L62
20:23 * jnthn back
20:30 benabik joined #moarvm
20:33 FROGGS I really think there is something missing when mixin in in QAST::SpecialArg
20:33 jnthn Yeah, something is wrong there...not sure quite what yet
20:33 jnthn Tried to get it down to a simple test case, but no luck yet
20:33 jnthn (as in, just a class and a role)
20:34 FROGGS do you have an attribute in that class/role?
20:34 jnthn yeah
20:34 jnthn Even tried adding a parent class with an attr
20:50 jnthn FROGGS: Stranger, if you just do:
20:50 jnthn named('lol')
20:50 jnthn oops
20:50 jnthn use QASTNodesMoar;
20:50 jnthn my $op := QAST::Op.new( :op('null'), :named('no_handler') );
20:50 jnthn It works...
20:51 jnthn um, works under the cross-comp.
20:51 jnthn And same error on self-host. Weird.
20:52 FROGGS IMO the while loop triggers it
20:53 jnthn oh, stranger still...
20:53 jnthn oh, for sure
20:53 jnthn It sets :no_handler(1)
20:54 jnthn Weird.
20:55 FROGGS I'd say it calls get_attribute with an unkown class_key, which is not the one the class was changed to
20:55 FROGGS (just comparing the pointers)
21:02 jnthn What's really odd is that I can write a program that simply sits in a loop making QAST::Op nodes with a named set on them, and it just works
21:02 jnthn Yet when it's done from, say, the actions, it goes wrong.
21:03 FROGGS you're mixin in something in QAST::SpecialArg in your test?
21:03 FROGGS or in your classes?
21:04 jnthn https://gist.github.com/jnthn/6400630
21:05 jnthn That works
21:06 FROGGS Invalid string index: max 166, got 167
21:06 FROGGS at <unknown>:1  (nqp.moarvm:ENDSTMT:0)
21:06 FROGGS I get that
21:07 jnthn ohhh
21:07 jnthn Well, no idea what that is :)
21:07 jnthn But I think I found the smoking gun...
21:07 FROGGS O.o
21:08 jnthn yah
21:09 jnthn https://gist.github.com/jnthn/6400648 does it
21:09 jnthn Either on selfhost or cross-comp.
21:09 FROGGS true
21:10 jnthn So, role environment handling is wrong somewhere
21:11 FROGGS ohh waht the, the produced ast is huuuuuuuge
21:11 FROGGS (from the nqp-cc)
21:13 FROGGS and it doesnt even contain the script as it seems
21:15 FROGGS when running it via gdb and --crash it looks like it fails in bind_attribute this time
21:15 FROGGS makes sense
21:20 * jnthn cross-references nqp-jvm
21:25 jnthn aha
21:25 jnthn grmbl
21:31 FROGGS what is it?
21:32 dalek MoarVM: 6bcce7b | jnthn++ | src/6model/reprs/MVMCode.c:
21:32 dalek MoarVM: Fix role environment handling.
21:32 dalek MoarVM:
21:32 dalek MoarVM: In turn, fixes .named(...) on QAST nodes.
21:32 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/6bcce7b079
21:32 jnthn was that
21:34 FROGGS looks totally unrelated to me :o)
21:34 FROGGS well, not totally
21:35 jnthn Well, if you understand role type environment == lexical scope, maybe it's less weird :)
21:35 jnthn And $?CLASS in a role comes from the type env.
21:35 jnthn And that's what goes into class_handle
21:37 colomon joined #moarvm
21:38 jnthn More fixes coming soon :)
21:38 FROGGS :o)
21:38 diakopter yeah, my attempts at the static frame ops were... wild guesses.
21:39 diakopter with about 5% certainty they were correct
21:41 diakopter oh, someone needs to add the moarvm executable as a dependency on the cross-compiler targets that invoke it
21:41 diakopter someone != me, right now
21:41 * diakopter looks at TimToady and wonders if he has a commit bit
21:43 FROGGS diakopter: the moarvm executable is only used by selftest, and that depends on all which makes it
21:44 diakopter I meant the cross-compiler makefile
21:44 FROGGS right
21:44 diakopter nqp-cc/Makefile
21:44 FROGGS yes
21:44 FROGGS me too
21:45 FROGGS selftest: all
21:45 FROGGS prove -e "../moarvm nqp.moarvm" t/nqp
21:45 * jnthn wonders what we're up to now after his last patch :)
21:45 diakopter I must not have reconfigured
21:45 FROGGS running it already
21:46 * diakopter has no idea how fast it runs
21:46 FROGGS 46
21:46 jnthn We pass 46 in selfhost, cross-comp does 68?
21:46 FROGGS 67 test files in t/nqp
21:46 diakopter 46 light years per year?
21:47 jnthn Working on fixes for 3 different things here
21:47 diakopter heh.
21:47 FROGGS yes, we pass 46 test files, and their bytecode is a light year long
21:47 FROGGS (if you write big enough)
21:47 * diakopter guesses jnthn is working on static frame ops
21:48 diakopter the travel on the Esc key on this keyboard is... like 1mm
21:48 diakopter same for all the top-row keys, actually.
21:49 diakopter interesting. the travel gets shorter the higher you go on the keyboard
21:49 diakopter fingers have less leverage on the end I guess
21:50 * diakopter waits for jnthn's patches
21:50 diakopter "wouldn't want to duplicate work; ho hum. ;)"
21:50 diakopter ^ me quoting myself
21:50 FROGGS I guess he is working on the segfault in type_to_local_type
21:51 diakopter FROGGS: how does the all target in nqp-cc/Makefile build moarvm.exe ?
21:52 dalek MoarVM: 35402b8 | jnthn++ | src/mast/compiler.c:
21:52 dalek MoarVM: Handle null type.
21:52 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/35402b8c7c
21:52 dalek MoarVM: 9cb280d | jnthn++ | src/6model/reprs/P6opaque.c:
21:52 dalek MoarVM: Pre-compose P6opaque has no REPR data.
21:52 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/9cb280d8b4
21:52 dalek MoarVM: da05a3a | jnthn++ | nqp-cc/src/QASTRegexCompilerMAST.nqp:
21:52 dalek MoarVM: Fix thinko in dba compilation.
21:52 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/da05a3a6fb
21:52 FROGGS ahh, no, it just builds nqp.moarvm for example
21:52 FROGGS ohh, the dba thing too
21:52 FROGGS jnthn++
21:52 diakopter I said "the moarvm executable"
21:53 jnthn Note that rebuilding the moarvm executable doesn't automatically imply we need to re-build anything else...
21:53 jnthn In fact, I rely on being able to re-build that separately at the moment to be productive :)
21:53 FROGGS jnthn: absolutely
21:54 FROGGS building nqp.moarvm takes ages (feels like 10 minutes), will it stay that way?
21:54 diakopter takes 2 min here
21:54 FROGGS hmmm
21:54 jnthn FROGGS: Probably not, given the cross-comp is a throwaway on the way to bootstrap
21:55 FROGGS awesome
22:00 dalek Heuristic branch merge: pushed 66 commits to MoarVM/serialize by diakopter
22:04 TimToady looks like something's trying to use VMArray as a match object or some such
22:04 dalek MoarVM: dcf55bc | jnthn++ | nqp-cc/src/QASTRegexCompilerMAST.nqp:
22:04 dalek MoarVM: Fix to regex op compiler.
22:04 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/dcf55bc167
22:04 jnthn TimToady: ^
22:04 diakopter ah.
22:04 diakopter bah.
22:04 TimToady jnthn++
22:05 diakopter start to work on something... need to pull/rebuild again...
22:05 diakopter repeat
22:05 FROGGS 57 passing O.o
22:05 TimToady just don't be in a lather, speaking of horses
22:05 * FROGGS pulls+builds
22:06 diakopter slather your blather flather
22:07 * TimToady rinses
22:08 diakopter "why do you need a new shampoo bottle every day?" "I just follow its instructions"
22:09 TimToady there's a salsa band next door; getting a free concert here :)
22:09 diakopter jnthn: speaking of push_op, it takes..... FOREVER
22:10 diakopter and it's called ... a million times, literally
22:10 jnthn diakopter: aye...
22:10 diakopter building .moarvm would speed up immensely...
22:10 diakopter it does a ... linear search.
22:10 diakopter *facepalm*
22:11 TimToady now fails 6 tests
22:12 diakopter crazy.
22:12 diakopter 'course, not all the tests from nqp are imported yet
22:12 * FROGGS .oO( yeah, some are more imported than others... )
22:13 TimToady the nqp tests are unevenly distributed
22:13 diakopter heh heh "Substring length (-5) cannot be negative"
22:13 TimToady yes, that one's entertaining
22:14 diakopter nqp: say(substr("hhhhhh", 5, -5))
22:14 diakopter ...
22:18 * diakopter decides to work on profiling/optimization since jnthn is fixing things too fast
22:18 diakopter :D :D :D
22:18 jnthn diakopter: t\nqp\42-cond-loop.t I'll happily delegate
22:18 jnthn diakopter: It explodes in the GC ;)
22:22 diakopter bah
22:23 FROGGS only 5 failing test files, can't believe it
22:23 diakopter the object pointer address is 0x0028000000000000
22:23 diakopter *headdesk*
22:23 diakopter means something's not being marked..
22:23 FROGGS you typecast integers to pointers?
22:23 FROGGS humm, okay
22:23 TimToady is that where your stack is?
22:23 diakopter heh
22:23 diakopter yes I have oodles of ram
22:24 diakopter oh, you were serious
22:24 TimToady virtual address doesn't have to have anything to do with physical ram
22:24 TimToady most systems put their stacks way up high
22:24 diakopter +&item_gen20x000000000039e370 "ã9"unsigned char *
22:25 diakopter current stack
22:25 diakopter I think.
22:26 jnthn eek
22:26 jnthn That's odd
22:26 diakopter looks up one C callframe
22:26 diakopter +&tc0x000000000039e430MVMThreadContext * *
22:27 diakopter yep, building downward
22:28 TimToady well, it's probably too "clean" a number to be your stack, unless it's the root
22:28 diakopter hunh.. I can actually look at register values
22:28 diakopter weeuhd
22:29 jnthn ah, got to the root of the proto-regex failure...
22:29 TimToady diakopter: maybe you found the NSA's special location in memory :)
22:30 TimToady I mean, after all, where does all that garbage go?
22:30 FROGGS jnthn: this line? nqp-src/NQP.nqp:3374:            my str $rxname := nqp::substr($fullrxname, $loc + 5, nqp::chars($fullrxname) - $loc - 6);
22:31 jnthn FROGGS: Yeah, but the problem is that %*RX<name> is empty
22:32 FROGGS that was my guess
22:32 jnthn it's 'cus:
22:32 jnthn token nibbler {
22:32 jnthn :my $OLDRX := nqp::getlexdyn('%*RX');
22:32 jnthn :my %*RX;
22:32 jnthn :my $*SEQ := 0;
22:32 jnthn {
22:32 jnthn for $OLDRX { %*RX{$_.key} := $_.value; }
22:32 jnthn }
22:32 jnthn On Parrot and JVM, nqp::getlexdyn starts a frame out from the current one.
22:32 diakopter hee
22:32 diakopter oops.
22:32 jnthn And contextuals in the current frame are identified as such.
22:33 diakopter <- must've not've read the nqp spec closely enough... oh wait...
22:33 jnthn Fixing it to start one out works *but* breaks other things 'cus lexicals that happen to be $*FOO but are declared in the current frame are not compiled as simple lexical lookups... P)
22:33 diakopter augh
22:34 TimToady we have to redesign P6 now?
22:34 diakopter might as well start from the RFCs again
22:34 FROGGS that is the point where I am looking up the frame of my bed...
22:34 FROGGS gnight all
22:34 TimToady could we skip the mugs this time?
22:34 timotimo let's base it on google go this time
22:35 diakopter FROGGS: :)
22:36 * diakopter is somehow reading the source of msvcrt
22:36 diakopter crt0.c - C runtime initialization routine
22:36 TimToady virtual CRTs, yum
22:36 diakopter *       This is the actual startup routine for apps.  It calls the user's main
22:36 diakopter *       routine [w]main() or [w]WinMain after performing C Run-Time Library
22:36 diakopter *       initialization.
22:36 diakopter #include <dos.h>
22:37 TimToady ooh, copyright violation :)
22:38 TimToady you have to include the copyright notice before legally commiting a copyright violation like that :P
22:38 benabik DMCA takedown for the irc logs in 3...2...
22:38 TimToady *mitting
22:39 timotimo no copyright intended
22:39 TimToady doubtless someone has patented crt files too, and probably trademarked it too
22:40 benabik Only copy wrongs?
22:41 * TimToady remembers when /bin/false, an empty file, had to have a copyright notice put into it...
22:44 jnthn Think I've got 32-protoregex.t fixed locally; making sure I didn't regress anything.
22:45 sorear an empty file?  they didn't even bother with the shebang?
22:45 * sorear thinks everything in /bin should be execveable
22:46 TimToady no #! line defaulted to /bin/sh
22:46 TimToady besides, they didn't invent the shebang, berkeley did
22:46 sorear was that a kernel feature back then, or is it still that way and I'm just crazy
22:47 TimToady I think the library figgered it out
22:47 TimToady iirc
22:47 sorear (why wouldn't an empty file be "true" ?)
22:47 TimToady oh, yeah, it was /bin/true
22:47 TimToady /bin/false was just 'exit 1'
22:48 diakopter probably exit(1)
22:48 * sorear is suddenly reminded of the old joke about false being the most portable and reliable Unix program since it works even when it's not installed
22:48 TimToady diakopter: probably not, considering it was shell code, not C
22:48 diakopter oh heh.
22:49 sorear [gt@sorear1 gt-import]$ /bin/false --version
22:49 sorear false (GNU coreutils) 8.4
22:49 sorear Copyright (C) 2010 Free Software Foundation, Inc.
22:49 sorear ~progress~
22:49 * diakopter disregards jnthn's plea to indulge GC insanity and instead goes a'profiling
22:50 TimToady $ sh /dev/null; echo $?
22:50 TimToady 0
22:54 diakopter it's hard to know which function calls to optimize when none takes longer than 0.0099 ms and your profiler won't show more significant digits
22:55 TimToady the ones with a million linear searches?
22:55 diakopter that's at the nqp level
22:55 diakopter dont' have a profiler for that yet
22:55 jnthn The GC bug moves around, it seems...
22:56 dalek MoarVM: 22d8e75 | jnthn++ | / (2 files):
22:56 dalek MoarVM: Fixes to dynamic variable handling.
22:56 dalek MoarVM:
22:56 dalek MoarVM: Brings things inline with other backends, fixing the bug affecting
22:56 dalek MoarVM: 32-protoregex.t.
22:56 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/22d8e75832
22:56 diakopter well if there's corrupt data it can sometimes not fail certain places
22:56 jnthn (e.g. the one that crashed before works but others fail)
22:58 diakopter TimToady: but yes, that needs fixed too
23:02 TimToady yeah, back up to 12
23:04 TimToady should make it easier to dodecangulate the problem
23:07 diakopter 1 million calls to MVM_string_get_codepoint_at_nocheck in 55-multi-method.t
23:08 jnthn ell, it happens when it's scanning the old space post-GC, and curiously before the thing it chokes on is (so far) always an array...
23:08 diakopter unrelatedly, also 1 million calls to decode_utf8_byte
23:08 diakopter WAT.
23:09 diakopter what in the world is it decoding.......
23:09 foo_bar_baz joined #moarvm
23:10 diakopter oh. deserialize.
23:10 diakopter !!!!!!!!
23:10 sorear base64 encoded utf8 encoded text?
23:10 * diakopter goes to time deserialize
23:10 diakopter sorear: yes :D
23:10 sorear er, other way around
23:11 jnthn I'm pretty sure we can assume it's ASCII... :)
23:11 sorear gotta watch out for those bytes that base64 as ö
23:11 jnthn öh-oh...
23:14 diakopter the serializer should look in its sc dependencies for dupe strings
23:14 diakopter because this is just crazy.
23:17 diakopter deserialize_strings called MVM_string_utf8_decode 9,317 times
23:19 diakopter what, is the vast majority of a .moarvm serialized strings?
23:19 diakopter at least 1MB worth of what was loaded..
23:20 diakopter exactly 1/3
23:20 diakopter of the bytes of all the .moarvm in nqp are serialized strings
23:20 diakopter "exactly" used loosely
23:22 diakopter jnthn: we really need a version of compiler.c that compiles directly to a compunit in memory... eventually
23:23 diakopter meh, I take that back
23:23 jnthn diakopter: There's probably some saving to be had there...
23:24 jnthn (on compiler.c)
23:24 diakopter there was only 221ms inclusive in MVM_load_bytecode of its 10 calls
23:24 diakopter (total run 15.5 seconds, profiled)
23:27 diakopter there has got to be a way to turn off this "feature" of visual studio profiling.
23:28 diakopter where it treats every loop through the interpreter runloop as a separate function call
23:28 diakopter but doesn't tell me which case it went to
23:29 diakopter jnthn: oops, actually total run time 10 seconds
23:40 diakopter oh! but it does differentiate the interp_run calls by memory address.
23:40 diakopter WEIRD.
23:42 diakopter .. but I have no access to those addresses once the process ends..
23:49 * diakopter goes to find a better profiler
23:50 * jnthn ain't having much luck finding the bug
23:53 TimToady obviously you are not at the Balmer peak, but then again, neither was Balmer, apparently...
23:54 benabik joined #moarvm
23:57 jnthn Think I'll put it aside for today. Can't do "hello world" to passing 50+ of t/nqp isn't bad for a day's work :)
23:58 timotimo ooooh
23:59 TimToady fershure

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