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
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
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
dalek arVM: a4a7267 | jnthn++ | / (6 files):
Stub in new multi-dimensional array related ops.
10:59
jnthn lunch & 11:00
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
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
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
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
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
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
timotimo well, *now* i notice it'd have helped to see the facts of the only read operand instead 21:51
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