Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2015-07-01

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

All times shown according to UTC.

Time Nick Message
00:29 vendethiel joined #moarvm
01:14 vendethiel joined #moarvm
02:00 TimToady joined #moarvm
02:07 vendethiel joined #moarvm
05:18 vendethiel joined #moarvm
05:24 vendethiel joined #moarvm
06:14 vendethiel joined #moarvm
06:36 FROGGS joined #moarvm
06:37 vendethiel joined #moarvm
06:56 Ven joined #moarvm
07:16 vendethiel joined #moarvm
07:17 Ven joined #moarvm
07:24 zakharyas joined #moarvm
08:58 jnthn Righty. I can procrastinate the shaped arrays no longer...
09:01 masak \o/
09:02 * masak .oO( my @array :shape(Banana); )
09:02 jnthn .oO( phone... )
09:03 * masak blesses the channel with https://www.youtube.com/watch?v=j5C6X9vOEkU
09:04 tadzik for some reason I thought it'd be asdf movie
09:41 * jnthn is killing off VM-level existspos
09:43 brrt joined #moarvm
09:43 brrt hmm
09:43 brrt i find that not every little fragment is trivially translated into a fillable template; e.g. bindlex/getlex use a loop
09:44 jnthn ('cus it's easily implemented using elems)
09:44 jnthn o/ brrt
09:44 brrt not sure if that's very much of a problem
09:44 brrt \o
09:45 jnthn Well, at least, it's going away as a REPR function; guess the op can stay
09:46 brrt i'm... ok with that :-)
09:46 brrt what about sparse arrays
09:47 brrt or to make the argument very simple
09:48 brrt perl -e 'my @a; @a[10] = 1; print "OH HAI" unless defined $a[1];'
09:49 brrt masak++ wow
09:50 jnthn brrt: We already don't handle that with existspos
09:50 brrt oh
09:50 brrt well
09:50 brrt then i get it
09:52 brrt what is it with reality that it's always much harder than theory
09:57 brrt (it means you didn't think enough / know enough)
09:57 brrt you're going to call me mad
09:58 brrt but i'm actually writing a SEXP-parser for the tree expression fragment template preprocessor script
09:58 brrt i guess you would be right
10:03 brrt i have a justification, but i read frm a reliable source that i don't need justification for a postmodern piece of work
10:03 brrt s/frm/from/
10:03 brrt oh, and i'm even going to add (let (foo bar)) pseudo-expressions to create a DAG
10:06 brrt but first, lunch &
10:06 brrt left #moarvm
10:18 jnthn 6pe++ # can solve yet another type interning problem
10:51 dalek MoarVM: 25a91f9 | jnthn++ | src/ (11 files):
10:51 dalek MoarVM: Eliminate exists_pos as part of the REPR API.
10:51 dalek MoarVM:
10:51 dalek MoarVM: It isn't especially valuable, given we're not likely to want to do
10:51 dalek MoarVM: sparse representations at the VM level; they're not in the Perl 6
10:51 dalek MoarVM: design anyway.
10:51 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/25a91f9fe3
10:53 Ven joined #moarvm
10:56 Ven_ joined #moarvm
10:59 dalek MoarVM: a4a7267 | jnthn++ | / (6 files):
10:59 dalek MoarVM: Stub in new multi-dimensional array related ops.
10:59 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/a4a7267969
11:00 jnthn lunch &
11:19 Ven joined #moarvm
12:01 * jnthn back
12:45 dalek MoarVM: 4820bc2 | jnthn++ | src/6model/ (7 files):
12:45 dalek MoarVM: Stub in new multi-dim REPR functions.
12:45 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/4820bc208d
13:39 dalek MoarVM: 7a9dd24 | jnthn++ | src/ (3 files):
13:39 dalek MoarVM: Implement some of the basic multi-dim ops.
13:39 dalek MoarVM:
13:39 dalek MoarVM: For now, no REPRs actually handle them, however.
13:39 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/7a9dd24ee6
13:39 dalek MoarVM: 15dfcf2 | jnthn++ | src/6model/reprs/MVMArray.c:
13:39 dalek MoarVM: Support some of the multi-dim API in VMArray.
13:39 dalek MoarVM:
13:39 dalek MoarVM: While it can only ever hold a single dimension, it can make code more
13:39 dalek MoarVM: uniform if it supports the ops on a single dimension to some degree.
13:39 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/15dfcf2e4b
13:39 jnthn Kamelot++ # new album is today's hacking music
13:50 JimmyZ_ joined #moarvm
14:54 ilbot3 joined #moarvm
14:54 Topic for #moarvm is now https://github.com/moarvm/moarvm | IRC logs at  http://irclog.perlgeek.de/moarvm/today
14:58 jnthn break &
15:00 timotimo JimmyZ_: what were you refering to? both me and the log bot were thrown out and missed whatever line you reacted to :\
15:07 vendethiel joined #moarvm
15:08 sivoais joined #moarvm
15:15 timotimo i kind of want to try getting the minimal constant folding into spesh again
15:15 timotimo if only for "not" and perhaps gt/lt/... ops
15:15 timotimo especially not constant folding "not" loses us a few opportunities to eliminate some BBs
15:19 timotimo of course the last time i tried it, it ended up crashing things %)
15:19 timotimo adding more obviously correct optimizations could possibly cause the not-obviously-broken optimizations to appear more quickly and debugging may become easier :P
15:39 timotimo i'll push merge_facts_at_phi first, though
15:39 timotimo that seems very stable
15:51 JimmyZ_ timotimo: see the function code I mentioned
15:51 timotimo last message i saw from you was 193719  JimmyZ__ │ For those who love linux but envy Windows xp/7 , haha
15:51 timotimo and then 165009   JimmyZ_ │ oh, that would be great
15:51 JimmyZ_ ah..
15:52 JimmyZ_ bad andriod irc keyboard
15:52 timotimo oh
15:54 JimmyZ_ timotimo: my reply about "great" was to jnthn++
15:55 timotimo the last message i got from jnthn was about Kamelot :|
15:57 dalek MoarVM: 7f12591 | timotimo++ | src/spesh/optimize.c:
15:57 dalek MoarVM: make optimize_smart_coerce more robust to wrong facts
15:57 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/7f1259164f
15:57 dalek MoarVM: 1d7bd07 | timotimo++ | src/spesh/optimize.c:
15:57 dalek MoarVM: at PHI ops, we may be able to merge common facts
15:57 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/1d7bd077e1
15:57 dalek MoarVM: a4bc72c | timotimo++ | src/spesh/dump.c:
15:57 dalek MoarVM: highlight registers that are written to by PHI nodes
15:57 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/a4bc72c8fb
15:57 dalek MoarVM: 9a1236b | timotimo++ | src/spesh/ (2 files):
15:57 dalek MoarVM: "use"ing facts from guards now works even for merged facts
15:57 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/9a1236bd39
15:57 dalek MoarVM: b6d4a36 | timotimo++ | src/spesh/optimize.c:
15:57 dalek MoarVM: fix comment
15:57 timotimo ^- i did this thing
15:59 JimmyZ_ I would like to add IS_TYPE_OBJECT and switch IS_CONCRETE to it. easier understanding( and save a cpu 'not' instruction sometimes), if nobody objects it.
16:00 timotimo don't you think we often have !IS_CONCRETE be optimized by the compiler to remove the double negation?
16:00 timotimo isn't IS_CONCRETE a macro anyway?
16:00 * JimmyZ_ always got confused about the name IS_CONCRETE
16:01 JimmyZ_ timotimo: I am not sure.
16:06 JimmyZ_ ..oO(4 months ago)
16:08 timotimo what is 4 months ago? my code?
16:08 JimmyZ_ yeah
16:09 JimmyZ_ is it about reducing the phi ins?
16:10 Ven joined #moarvm
16:12 timotimo no, not quite
16:12 timotimo it's about giving the target operand of a PHI node a few facts if all the incoming arguments had some fact shared
16:13 JimmyZ_ I see.
16:13 timotimo of course, some facts have a bit of extra; you can't just merge the bits, because we have things like "known type" and "known value" where the values have to be compared, too
16:14 timotimo when i put the constant folding for not_i in, i get Cannot iterate object with P6str representation
16:14 timotimo while building rakudo
16:14 timotimo so something's clearly going wrong ... but what?
16:15 timotimo i'm going through all things that set "known value" in spesh and double-check each
16:18 timotimo in theory we could emit an op that compares a register against its "known value" and loudly complains when the two don't match
16:24 JimmyZ_ wouldnt dump the spesh code help debugging it?
16:25 timotimo i don't think it outputs the "known value", just that we pretend to know it
16:25 timotimo and we also don't output what the value ends up being
16:32 Ven joined #moarvm
16:32 dalek MoarVM: ec3496c | timotimo++ | src/spesh/dump.c:
16:32 dalek MoarVM: put the "merged from n regs" back into the same line
16:32 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/ec3496ccb2
16:47 timotimo it seems like the actual error about p6str not being iteratable is kind of an error from trying to print out a different error
16:48 JimmyZ_ but got catched?
16:49 timotimo https://gist.github.com/timo/5030046457d7ae52181a
16:49 timotimo with an nqp::islist in the right place, i get this error instead
16:50 timotimo we were expecting X::PseudoPackage::InDeclaration to actually be a list of the parts to be joined with ::
16:50 timotimo but in this case it was just a string
16:50 timotimo so maybe, in order to get the rest of the problem found, i'll actually commit this change
16:51 JimmyZ_ good luck
16:51 * JimmyZ_ sleeps
16:53 timotimo thank you :)
16:53 timotimo and good night
17:05 dalek MoarVM: 44582c3 | timotimo++ | src/spesh/dump.c:
17:05 dalek MoarVM: remove accidental duplicate newline
17:05 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/44582c3ca9
17:05 vendethiel joined #moarvm
19:17 zakharyas joined #moarvm
20:00 Peter_R joined #moarvm
20:40 FROGGS joined #moarvm
20:41 vendethiel- joined #moarvm
20:45 timotimo it bothers me that i got pretty much nowhere with that line of inquisition :\
20:58 timotimo changing things in is_pseudo_package sometimes makes the core setting compile again
20:58 timotimo well ... sometimes it does
21:00 jnthn timotimo: I guess you've diffed the spesh log of is_p_p before and after your change?
21:09 timotimo diffing spesh logs ... bleh
21:09 timotimo i used to use the diff_spesh_log tool
21:09 timotimo it needs a refresh
21:10 timotimo especially using the addresses i put everywhere to corellate chunks of spesh that belong to th esame code object but different callsites
21:11 jnthn yes, those are a pain
21:11 timotimo but yeah, i can diff it. it'll just be annoying
21:11 jnthn for diffing
21:11 timotimo in this case we just have on with :decl and one without
21:12 timotimo hmm
21:12 timotimo diffing a full run of the core setting vs one that dies very early %)
21:19 timotimo no difference in the spesh logs
21:19 timotimo so the problem must lie somewhere else
21:19 timotimo i thought perhaps it's about inlining, but it's a method and we don't inline those statically
21:19 timotimo and i believe we don't output the name of what we inline in the spesh log
21:20 timotimo but i may be wrong about that; actually, we do output line number information at the beginning of every BB, so i should be able to find one that hits the right name range
21:20 timotimo fwiw, i'm glad we survive core setting compilation even with NODELAY=1
21:29 timotimo i think i want to put a list of facts known about the register an op writes to directly onto the same line as the operation
21:43 TEttinger joined #moarvm
21:51 timotimo well, *now* i notice it'd have helped to see the facts of the only read operand instead
22:08 japhb joined #moarvm
22:34 dalek MoarVM: 9d50b51 | timotimo++ | tools/graph_spesh.p6:
22:34 dalek MoarVM: graph_spesh catches up to latest spesh log format
22:34 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/9d50b51845
22:34 dalek MoarVM: 641bcec | timotimo++ | src/spesh/optimize.c:
22:34 dalek MoarVM: align a few lines after i64 -> i changes
22:34 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/641bcece16
22:35 timotimo and another important thing is getting the BB order correct by correlating memory addresses of BBs
22:35 timotimo so we can figure out inlines and removed BBs
22:46 timotimo ugh, that'll be a whole lot of work and also a lot of data to keep around

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