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 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 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 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_ 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