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