Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2014-04-06

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

All times shown according to UTC.

Time Nick Message
00:33 timotimo jnthn: when you come back, tell me if i should be building an op that takes a "which boolification spec should i be using?" parameter that can be populated at specialize time when the type is known, or if i should be emitting particular bytecodes to actually do the boolification if it's simple enough for me to do "by hand"
00:55 timotimo nice. i managed to get if 1 { say "eeeeeh" } else { say "nah" } executed in a loop to specialize to only the true branch
01:04 TimToady .oO(dead code specialization)
01:47 ilbot3 joined #moarvm
01:47 Topic for #moarvm is now https://github.com/moarvm/moarvm | IRC logs at  http://irclog.perlgeek.de/moarvm/today
01:56 timotimo my if changes seem to break two spec test files
01:56 timotimo t/spec/S26-documentation/07-tables.t and t/spec/S26-documentation/09-configuration.t
01:56 timotimo (or all of the specialization rather than just my changes; i only diff'd between my stuff and MVM_SPESH_DISABLE=yes)
01:58 timotimo https://gist.github.com/timo/bdc334ebfc28cea9f406 - i wonder if this needs an additional check for dc.o == NULL there?
01:59 dalek MoarVM/spesh: 0bf73b6 | (Timo Paulssen)++ | src/spesh/optimize.c:
01:59 dalek MoarVM/spesh: opt if_o/unless_o if value known and BS simple
01:59 dalek MoarVM/spesh:
01:59 dalek MoarVM/spesh: really every BoolificationSpec except CALL_METHOD
01:59 dalek MoarVM/spesh: can be done at specialization time.
01:59 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/0bf73b6a4f
01:59 timotimo i'm willing to assume that it's not caused by the if_o/unless_o opt i just came up with and go to sleep
08:36 FROGGS[mobile] joined #moarvm
09:32 jnthn timotimo: It should turn the generic boolification thing into bytecode to do the right thing.
10:41 jnthn timotimo: The S26 failures appear not to be a regression caused by you.
11:05 dalek MoarVM/spesh: 3c08332 | jnthn++ | src/core/frame.c:
11:05 dalek MoarVM/spesh: Add missing null check in spesh guard handling.
11:05 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/3c08332a9e
11:05 jnthn That fixes the SEGV in S26.
11:13 timotimo wow, so i even had the right idea how to fix it :)
11:27 timotimo just for good measure, if_n and unless_n should be very easy, right? 0 and NaN would count as false and everything else as true?
11:28 jnthn r: if NaN { say 1 }
11:28 camelia rakudo-parrot c2cc4f, rakudo-jvm c2cc4f, rakudo-moar c2cc4f: OUTPUT«1␤»
11:28 timotimo oh
11:28 jnthn Just zero is false
11:28 timotimo so only 0e0
11:28 timotimo that seems easy
11:29 timotimo nqp: if "" { say 1 }; if " " { say 2; }; if "\0" { say 3; }
11:29 timotimo er.
11:29 camelia nqp-jvm: OUTPUT«Unable to parse expression in blockoid; couldn't find final '}'  at line 2, near "say 1 }; i"␤  in panic (gen/jvm/stage2/NQPHLL.nqp:396)␤  in FAILGOAL (gen/jvm/stage2/NQPHLL.nqp:403)␤  in blockoid (gen/jvm/stage2/NQP.nqp:989)␤  in pblock (gen/jvm/stage2/NQP.n…»
11:29 camelia ..nqp-moarvm: OUTPUT«Unable to parse expression in blockoid; couldn't find final '}'  at line 2, near "say 1 }; i"␤   at gen/moar/stage2/NQPHLL.nqp:369  (/home/p6eval/rakudo-inst-2/languages/nqp/lib/NQPHLL.moarvm:panic:105)␤ from gen/moar/stage2/NQPHLL.nqp:376  (/home/p6eval/rakud…»
11:29 camelia ..nqp-parrot: OUTPUT«Unable to parse expression in blockoid; couldn't find final '}'  at line 2, near "say 1 }; i"␤current instr.: 'panic' pc 15634 (gen/parrot/stage2/NQPHLL.pir:5766) (gen/parrot/stage2/NQPHLL.nqp:425)␤»
11:29 timotimo nqp: if "" { say(1) }; if " " { say(2) }; if "\0" { say(3) }
11:29 camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«2␤3␤»
11:30 timotimo so only the empty string would be false for if_s and unless_s?
11:36 jnthn Yeah, but there's an if_s0 or so also I think
11:37 jnthn r: if "0" { say 1 }
11:37 camelia rakudo-parrot c2cc4f, rakudo-jvm c2cc4f, rakudo-moar c2cc4f: ( no output )
11:37 jnthn And certainly a bool spec case for that.
11:39 timotimo there is a bool spec case for that, aye
11:40 jnthn By now you're probably noticing the 6model design pattern here: if you know a type, you can remove virtualities normally resolved through the STable. :)
11:41 timotimo aye :)
11:41 timotimo pretty nifty in general
11:41 jnthn Yeah. Was part of the initial design, but took until now to be building things to take advantage.
11:42 timotimo do i have to differentiate whether the register is a num32 or a num64 for if_n?
11:44 timotimo if so, where do i look to figure that out?
11:45 jnthn if_n always expects a 64
11:45 timotimo good
11:45 jnthn See srce/core/oplist for the answers on such things, btw
11:45 timotimo ah, that seems easy :)
11:46 * timotimo teaches the fact database about nums
11:58 jnthn time to get the train to Stockholm... &
11:58 timotimo i like trains
11:58 timotimo CHHHHHOOOOOOOOOooooooooooo~~~~
12:03 dalek MoarVM/spesh: 87e396f | (Timo Paulssen)++ | src/spesh/facts. (2 files):
12:03 dalek MoarVM/spesh: teach facts about literal n32 and n64
12:03 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/87e396ffc6
12:03 dalek MoarVM/spesh: f7fe878 | (Timo Paulssen)++ | src/spesh/optimize.c:
12:03 dalek MoarVM/spesh: can now handle if_n and unless_n
12:03 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/f7fe8782f6
12:06 dalek MoarVM/spesh: a06c456 | (Timo Paulssen)++ | src/spesh/optimize.c:
12:06 dalek MoarVM/spesh: forgot an important boolification spec mode to support
12:06 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/a06c45690b
12:10 timotimo so for optimizing ifnonnull, i wonder which facts imply that the .o will be != 0
12:10 timotimo apart from KNOWN_VALUE, in which case i can check
12:11 timotimo i guess if we know it's concrete, it wouldn't be 0?
12:11 timotimo and if we know it's supposed to be a type object, it also wouldn't be 0?
12:11 timotimo well, not 0, but null really
12:14 timotimo ifnonnull seems to be emitted quite frequently; though the implementation is extremely cheap
12:14 timotimo but not as cheap as a straight goto :)
12:15 timotimo (and there's a sync_point there, which may have interesting implications on performance i guess?)
12:19 timotimo cool. rakudo still builds with my ifnonnull implementation (and why wouldn't it)
12:24 dalek MoarVM/spesh: 14846a6 | (Timo Paulssen)++ | src/spesh/optimize.c:
12:24 dalek MoarVM/spesh: handle ifnonnull at specialize time, too
12:24 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/14846a6ab3
12:28 jnthn timotimo: Uh...doe we ever hit that in reality?
12:29 dalek MoarVM/cgoto: 7ccd7f1 | (Gerhard R)++ | src/core/interp.c:
12:29 dalek MoarVM/cgoto: Implement runloop using computed gotos
12:29 dalek MoarVM/cgoto: review: https://github.com/MoarVM/MoarVM/commit/7ccd7f115e
12:29 timotimo actually not
12:29 JimmyZ ah..
12:29 jnthn I don't think we ever will, tbh.
12:29 timotimo as i see now we almost exclusively have ifnonnull after atpos_o
12:29 jnthn right
12:29 * timotimo kicks it again
12:30 dalek MoarVM/spesh: 9f576ed | (Timo Paulssen)++ | src/spesh/optimize.c:
12:30 dalek MoarVM/spesh: actually, we'll hardly ever hit ifnonnull with a known value
12:30 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/9f576ed71e
12:32 dalek MoarVM/spesh: 5b9273f | jimmy++ | src/spesh/optimize.c:
12:32 dalek MoarVM/spesh: Remove a malloc
12:32 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/5b9273fd25
12:32 timotimo i was *just* about to do that :D
12:32 timotimo JimmyZ++
12:33 tadzik it was missing a free() too, wasn't it? :)
12:33 timotimo yes
12:33 tadzik or is it still in the code?
12:33 tadzik ok
12:33 timotimo i just added the free and then thought "wait a minute, i don't need to malloc here!"
12:33 tadzik :)
12:33 tadzik OH WHAT A BEER <3
12:34 timotimo how was your bus ride?
12:34 timotimo you got home safely?
12:34 tadzik yes, even managed to get some sleeps
12:34 timotimo sounds good :)
12:34 jnthn ooh, a beer :)
12:34 tadzik it's delicious
12:34 timotimo what cool stuff are you up to now that you have a computer again, rather than just a phone? :3
12:34 tadzik an Imperial IPA called "The Empire Strikes"
12:34 jnthn tadzik: What is it? Something interesting? :)
12:35 jnthn Oh! :D
12:35 tadzik 7.8% too
12:35 tadzik it's marvelous
12:35 jnthn Sounds it.
12:35 jnthn I like imperial ipas )
12:35 timotimo who put marbles in your beer?!
12:35 timotimo oh, wait
12:35 tadzik I'm considering going back to the shop and buying the amount I can drink before the expiration date
12:36 * tadzik reads the spesh branch
12:37 jnthn If we want spesh in the next MoarVM release, we probably should think about merging it sometime in the next week.
12:37 timotimo a fine piece of work so far, no doubt
12:37 jnthn I'm going to work on REPR spesh.
12:37 timotimo do we know why the parallelism tests fail on spesh?
12:37 jnthn No
12:37 jnthn It was meant to be thread safe :)
12:38 jnthn As in, candidate.c and interp.c both have stuff aimed at that
12:40 tadzik how does it fail?
12:41 zakharyas joined #moarvm
12:42 timotimo doesn't, apparently o_O
12:42 jnthn heh :) That just menas it's non-deterministic.
12:42 timotimo oh!
12:42 timotimo i know what's up
12:42 timotimo it just exited with nonzero because moar ABORTs when it shuts down
12:42 timotimo and i read that as "the tests crashed"
12:43 timotimo which is both true and not the thing i meant
12:43 jnthn yeah, I need to fix htat.
12:43 jnthn *that
12:43 * tadzik is surprised that the code is not full of "int ern" puns
12:43 timotimo at least it doesn't keep spesh from being merged
12:43 timotimo "check if the string has been internet"?
12:44 tadzik int ernship
12:48 timotimo okay, now for the code to turn general boolification spec into concrete bytecode if possible
12:49 tadzik what does DC in MVM_SPESH_GUARD_DC_CONC mean?
12:49 timotimo jnthn: what do i have to watch out for if i need to "allocate" new registers in bytecode i'd like to emit?
12:50 jnthn tadzik: "decont"
12:50 jnthn timotimo: uh, you can't do that
12:50 timotimo that'd be a problem then :)
12:50 tadzik ah :)
12:51 timotimo how do i turn an if_o into a unbox_i + if_i if i can't has a new register?
12:51 jnthn tadzik: It's allowing us to specialize based on what's inside a scalar
12:51 jnthn Which is a really common case in Perl 6.
12:51 tadzik but the actual value is not specialized for, right?
12:51 tadzik like, "this int is always 1"
12:51 jnthn Not in general
12:51 tadzik ok, I'll keep reading
12:51 jnthn Though in cases like sub foo($x = 1) { ... }; foo()
12:52 jnthn We could know $x is 1
12:52 timotimo and we already do, afaict
12:52 timotimo though ... maybe not?
12:52 tadzik hm
12:52 tadzik which case in https://github.com/MoarVM/MoarVM/compare/spesh#diff-520b036258bc63b0834970478a950b64R265 does that come in?
12:53 timotimo i know we throw out the code that would get the value from the arguments if the callsite says "no optional parameters passed"
12:53 timotimo the cfg/ssa should then notice the register is only set in one place, unconditionally, and that the value is known
12:55 jnthn tadzik: args.c has the interesting stuff with regard to optinals.
12:55 jnthn *optionals
12:56 timotimo maybe we need to run the whole thing twice for the information to propagate properly and be used?
12:57 jnthn Well, then you end up doing it n times...
12:57 jnthn The issues is more that we need to be much more smart about PHIs.
12:58 timotimo i don't even know yet what exactly the parameters to the PHI do; i suppose it merges multiple versions of a register where only one would be valid into a single register?
12:58 timotimo like "depending on where we just jumped in from, the register's value would come from version 5 or version 7"
13:00 jnthn Right.
13:00 jnthn They're information merge points
13:00 timotimo and phi removal happens because either the block we jumped in from got kicked or because the register that things got merged into are not used in the given block any more?
13:01 tadzik "if (pos_ins[idx]) /* Dupe; weird. */" :D
13:05 jnthn timotimo: right
13:06 timotimo so, does phi removal already have an effect on the facts database? and if so, do we read from these new facts after they've been updated at all?
13:07 jnthn Yes, at the moemnt it influences usage counts.
13:09 timotimo so a phi, even if it gets removed, will still keep "known value" information from being used
13:09 timotimo i agree, there needs to be more smarts
13:09 timotimo not that i'd have many smarts to contribute :P
13:09 jnthn yeah, it's a bit subtle, I think
13:10 timotimo so, a hint for the register "situation"? is the "specialize slot" thing something i could (ab)use for that purpose?
13:11 timotimo it seems like only ops that know about specialization slots can take advantage of them
13:12 jnthn No 'cus those are static
13:13 jnthn There is no hint really. I didn't decide how we're going to handle this yet, which means there's no design for it.
13:13 jnthn We'll need it for inlines also.
13:13 timotimo OK, i'll wait for design to exist before i do the boolification "[owering"
13:13 timotimo lowering*
13:14 dalek MoarVM/spesh: 4bd7863 | jimmy++ | src/spesh/manipulate.c:
13:14 dalek MoarVM/spesh: slightly refactor codes, no function changes
13:14 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/4bd78633d7
13:18 dalek MoarVM/spesh: 30cedbe | jonathan++ | src/6model/ (38 files):
13:18 dalek MoarVM/spesh: Allow REPRs to participate in spesh.
13:18 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/30cedbe679
13:18 dalek MoarVM/spesh: e4b16bf | jonathan++ | src/spesh/optimize.c:
13:18 dalek MoarVM/spesh: Forward various ops to REPR for spesh if possible.
13:18 dalek MoarVM/spesh:
13:18 dalek MoarVM/spesh: No REPRs currently know what to do, however.
13:18 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/e4b16bf437
13:23 JimmyZ objdump shows this slightly refactor reduces 100 lines asm codes to 73 lines.
13:24 tadzik nice :)
13:25 timotimo oh wow
13:25 timotimo we're hopefully doing this very often :)
13:26 timotimo hm. i wonder what kinds of bytecodes the reprs can actually come up with
13:26 JimmyZ yeah, I want to do it in the deserialize codes to help startup time.
13:27 timotimo would we be creating special bytecodes that are custom-tailored to whatever repr we're optimizing?
13:27 timotimo JimmyZ: i didn't even really see what you changed %)
13:29 jnthn aww...after a week and a bit of beautiful weather here, seems the rain is here...
13:32 JimmyZ timotimo: I didn't change things, just sometimes the gcc is not smart enough to optimize codes..
13:32 jnthn JimmyZ: Did you profile to see where we spend time at startup?
13:33 jnthn Wow, some folks are making a 10 minute job of working out what seats they're meant to be sat in...
13:33 JimmyZ jnthn: I didn't... I can't build nqp on my win32 x86 system..
13:33 jnthn Still? Odd...
13:34 JimmyZ yeah.
13:37 JimmyZ But I see there is a lot indirect access code in loops in deserialize functions, so I think slightly refactors may help some rakudo startup time.. maybe I'm wrong..
13:38 jnthn Well, optimizing without profiling is a good way to be wrong.
13:38 JimmyZ yeah, I don't have a X64 box..
14:22 zakharyas joined #moarvm
15:00 cognominal__ joined #moarvm
15:27 dalek MoarVM/spesh: eb5bb8d | jonathan++ | / (5 files):
15:27 dalek MoarVM/spesh: Stub in spesh ops aimed at REPR spesh.
15:27 dalek MoarVM/spesh:
15:27 dalek MoarVM/spesh: These generally boil down to pointer operations that we determine will
15:27 dalek MoarVM/spesh: be safe during specialization. Note that they should also JIT rather
15:27 dalek MoarVM/spesh: nicely, once we get there.
15:27 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/eb5bb8dad0
15:27 dalek MoarVM/spesh: 24c4a68 | jonathan++ | src/spesh/optimize. (2 files):
15:27 dalek MoarVM/spesh: Expose some spesh functions outside of optimize.c.
15:27 dalek MoarVM/spesh:
15:27 dalek MoarVM/spesh: We'll want to use them in REPR spesh also.
15:27 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/24c4a683c3
15:32 btyler joined #moarvm
15:50 timotimo i'm wondering which reprs and ops get the spesh treatment first :3
15:51 jnthn Well, p6opaque is one key candidate
15:51 timotimo also lists are quite frequently used during compilation
15:51 jnthn Yeah; I just did VMArray create specialization.
15:51 timotimo cool :)
15:51 jnthn But when it goes to delete the HLL type resolution instruction it runs into something.
15:52 timotimo i'll be interested to know how exactly that looks
15:52 timotimo hmm.
15:52 jnthn Namely, that delete_ins didn't learn about annotated instructions just yet.
15:52 timotimo ah, yes
15:53 jnthn There's a usage bug in facts.c too; I went to fix it yesterday and ran into the same issue
15:53 jnthn So, should fix that I guess :)
15:54 timotimo usage of delete_ins or what?
15:54 timotimo apparently not
15:54 dalek MoarVM: ff074f7 | jimmy++ | src/strings/ (2 files):
15:54 dalek MoarVM: Small fixes to MVM_string_(latin1|windows1252)_encode_substr
15:54 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/ff074f7dce
15:55 timotimo JimmyZ: "lengthu"?
15:55 timotimo like, length_unicode?
15:55 JimmyZ yeah, same as acsii one
15:55 timotimo OK
15:55 jnthn +    if (length < -1 || start + lengthu > strgraphs)
15:55 timotimo i just didn't see a definition of lengthu so i assumed it was a typo
15:55 jnthn Not at all convinced that is right...
15:55 timotimo but i see it's right there
16:02 jnthn Cute; after specialization, an NQP sub foo() { nqp::list() }; now becomes:
16:02 jnthn sp_fastcreate r0(2), liti16(56), liti16(0)
16:02 jnthn return_o r0(2)
16:03 timotimo cute
16:03 timotimo how does the reference in the middle work?
16:03 timotimo 56?
16:03 jnthn 56 is number of bytes
16:03 jnthn 0 is the spesh slot holding the stable to shove in ->st
16:03 timotimo ah, okay
16:03 timotimo i was wondering where thet would be found :)
16:04 timotimo so all it does is allocate 56 bytes and set an stable and that's it?
16:04 jnthn Well, has to set a owner too
16:04 timotimo fair enough
16:04 timotimo that does seem pretty fast :)
16:05 jnthn But there's no virtual call through the ->allocate pointer, and no looking to see if there's an ->initialize
16:05 timotimo yeah, that's good
16:08 JimmyZ Just curious, does jvm/cli/mono have sp_opcode-ish things?
16:08 timotimo i think they go directly to machine code, no?
16:09 jnthn Yeah, most likely directly to machine code
16:10 jnthn I'd *hope* that I didn't event JIT-to-bytecode-with-offsets. It's too obvious to be new. I'm not sure what else is doing it though. :)
16:10 jnthn *invent
16:11 dalek MoarVM/spesh: da8f7cc | jonathan++ | src/core/interp.c:
16:11 dalek MoarVM/spesh: Implement sp_fastcreate.
16:11 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/da8f7cc883
16:11 dalek MoarVM/spesh: d16dd4d | jonathan++ | src/spesh/manipulate.c:
16:11 dalek MoarVM/spesh: Try not losing annotations in delete_ins.
16:11 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/d16dd4d507
16:11 dalek MoarVM/spesh: 722c970 | jonathan++ | src/6model/reprs/MVMArray.c:
16:11 dalek MoarVM/spesh: Specialize array creation.
16:11 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/722c970ca7
16:13 timotimo um, did sp_fastcreate end up in the oplist at all?
16:13 timotimo ah
16:14 timotimo i seem to have missed some commit announcements
16:17 JimmyZ JIT-to-bytecode-with-offsets? deopt?
16:17 vendethiel joined #moarvm
16:18 timotimo you can bet these VMs come with pretty advanced deopt strategies
16:18 timotimo hey ven
16:20 vendethiel hey timo
16:29 dalek MoarVM/spesh: 2d64624 | jonathan++ | src/6model/reprs/P6opaque.c:
16:30 dalek MoarVM/spesh: Specialize P6opaque create when easily possible.
16:30 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/2d64624a5a
16:30 jnthn About time to detrain...
16:32 timotimo anything simple you think you could offload onto me?
16:39 timotimo well, rakudo still builds so that's definitely nice :)
16:51 * timotimo is splitting a spesh log from the core setting compilation
16:51 timotimo aaaaand i forgot to | less -r
16:51 timotimo oh my.
16:53 timotimo it's now at 1.2 gigabytes of resident memory %)
16:54 timotimo maybe i should - if there's no matcher definet - directly output the lines to the files they belong to and throw away the strings directly
16:54 timotimo that ought to save a lot.
16:55 timotimo now i'm beginning to notice pauses in the output, that could very well be the GC
16:57 timotimo i wonder ... since it's so many strings, maybe in this case the separate thread for doing free on things actually would help?
16:58 timotimo i should have run it with the profiler :\
17:15 jnthn timotimo: Well, MVMHash could have a create thingy similar to MVMArray
17:16 timotimo i can try :)
17:28 timotimo now i'll have a look at actually doing MVMHash
17:31 timotimo it seems like i just literally copypasted it and replaced the sizeof of MVMArray with the sizeof of MVMHash
17:32 jnthn yeah, that's probably all it needs
17:33 timotimo yeah, and rakudo still builds
17:33 timotimo anything i should try in order to test if it was okay?
17:33 timotimo or should i just push?
17:34 jnthn If Rakudo builds and passes sanity test, should be OK
17:35 timotimo passed, will commit & push
17:35 dalek MoarVM/spesh: 42902dc | (Timo Paulssen)++ | src/6model/reprs/MVMHash.c:
17:35 dalek MoarVM/spesh: spesh for fastcreate of MVMArray.
17:35 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/42902dc717
17:43 jnthn nice :)
17:44 timotimo that was easy enough for me to do :)
17:51 timotimo jnthn: how does a summary of ops -'d and +'d for the differ sound?
17:51 timotimo "hllize   | 55 ----------" or something like that
17:52 jnthn timotimo: Could be interesting to see
17:52 timotimo i'll make the differ output the files immediately and directly forget the big strings before i run it again
17:52 timotimo half an hour for the core setting analysis is ... wow :)
17:52 timotimo 43 megabyte log file exploded to at least 3 gigabytes of ram usage
17:53 timotimo now since we use 32bit numbers per character interally anyway, it'd be 172 megabytes for a single copy of the string
18:06 jnthn time for some dinner &
18:06 dalek MoarVM/spesh: 646affd | jonathan++ | src/ (3 files):
18:06 dalek MoarVM/spesh: Add p6o attribute bind specialization ops.
18:06 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/646affdce5
18:06 dalek MoarVM/spesh: c2eae34 | jonathan++ | src/6model/reprs/P6opaque.c:
18:06 dalek MoarVM/spesh: Optimize bindattr_o on P6opaque when possible.
18:06 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/c2eae34ba9
18:45 timotimo hmm. letting it write out the strings immediately and forgetting about them led to it taking "only" 27 minutes rather than 31
18:45 timotimo 2536600maxresident - i still feel that's a bit too much
18:47 vendethiel joined #moarvm
19:32 jnthn om nom
19:32 jnthn 'twas spicy
19:34 timotimo :3
19:50 timotimo moarvm is still too slow :(
19:50 jnthn Well, yeah.
19:51 jnthn We'd not be working on optimization stuff if it was perfectly fine already, would we... :P
20:05 dalek MoarVM/spesh: a60a15a | jonathan++ | src/6model/reprs/P6opaque.c:
20:05 dalek MoarVM/spesh: P6opaque spesh for bindattr_[ins].
20:05 dalek MoarVM/spesh: review: https://github.com/MoarVM/MoarVM/commit/a60a15a948
20:19 nwc10 if I can rustle up some parallel universes, will it run in constant time? :-)
20:26 timotimo :)
20:29 vendethiel joined #moarvm
20:39 lizmat_ joined #moarvm
20:39 cognominal joined #moarvm
20:39 btyler_ joined #moarvm
20:40 timotimo i don't think i have the patience to implement the op diff summary tool in perl 6 :P
20:43 masak_ joined #moarvm
20:44 cognominal timotimo, you mean patience to implement, or to run because it would be too slow?
20:50 timotimo to run :)
20:52 cognominal so far, we are walking Perl 6
21:01 timotimo aye
21:09 cognominal what is the mnemonic device behind `1 ?   ... in https://github.com/MoarVM/MoarVM/blame/master/tools/update_ops.p6#L207
21:13 timotimo it works like a type capture
21:14 timotimo if you have an opcode that takes r(`1) w(`1) you have to have the same register type for both, but it can be any
21:15 cognominal makes sense to me.
21:21 colomon joined #moarvm
21:23 jnthn cognominal: Inspired by C# and ML's representation of generic args, I think :)
21:23 jnthn Pretty sure ML did it that way too, anyways
21:36 cognominal What is the prefix && in C?    used in https://github.com/MoarVM/MoarVM/blob/master/src/core/oplabels.h#L5
21:36 cognominal google is of no help on this one.
21:37 jnthn gcc-specific extension
21:37 jnthn gets the address of a label
21:37 jnthn used only if you build the interp with computed goto
21:39 cognominal thx jnthn++ ant timotimo++
21:42 timotimo ant helped?
21:47 jnthn Not enough to get a ++
21:52 timotimo to be fair, A++ is pretty darn good
21:57 timotimo i wonder ... since this is mostly string stuff, maybe parrot is faster than moar at this task
22:30 raiph joined #moarvm
23:20 timotimo jnthn: you already finished for the day?
23:44 lunchbox joined #moarvm

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