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