04:37 vendethiel joined 06:48 FROGGS joined 07:23 brrt joined
brrt \o 07:25
yes, i think i will start with size propagation first
nwc10 o/ 07:26
dalek arVM/even-moar-jit: 1f134dd | brrt++ | src/jit/ (3 files):
Propagate value sizes from the tree

Size information comes from LOAD, CONST, and predefined values, and for correctness it is important for certain nodes (e.g. nz and or 'test') to have their correct values supplied.
08:07
brrt now the next thing is actually the harder problem... 08:08
according to github, i did nothing the past few weeks.... :-o weird 08:11
oh, it's not counted because it's not in master 08:12
very wow
jnthn Good morning, #moarvm 08:19
brrt good morning, jnthn 08:22
jnthn dobré JITro, brrt o/ 08:24
brrt wonders about the language used :-) 08:25
nwc10 it's slavic, and I'm going to assume Czech
jnthn Yes, Czech
brrt how is learning czech going? 08:27
FROGGS špatný :D 08:29
damn, that language has not much in common with the languages I know
dobré means good, that's something I'd understand at least 08:30
dunno what a suffix ro could mean though
jnthn FROGGS: dobré jitro just means "good (late) morning" :) 08:32
FROGGS ohh 08:33
a language that has a word for late morning certainly deserves karma 08:34
so, Czech++
jnthn brrt: So far it's been more osmosis than actual study, though thanks to knowing bits of some other Slavic languages I've been able to absorb enough to survive the grocery store, ordering beer/food at the bar, and buying a tram ticket... 08:36
nwc10 pivo! 08:37
jnthn got himself a study book at the weekend
brrt nice :-)
brrt knows hardly anything of slavic languages
i'm not sure how to do store insertion just yet 08:38
jnthn Well, you work into something labeled "potraviny" and then you're in a store...oh, wait, we've switched back to the JIT?? :) 08:39
brrt :-)
not sure now
ehm, jnthn, when is a spesh candidate actually destroyed? 08:49
nobody now calls MVM_jit_code_destroy
jnthn brrt: When the MVMStaticFrame is GC'd 08:55
brrt aha 08:56
jnthn (It has a gc_free function in MVMStaticFrame.c)
(Which apparently needs something added to it ;))
brrt aye
working on it :-) 09:00
i'm going to assume we're not going to free the callsize 09:04
*callsite
jnthn No
Those are interned across the VM
09:05 vendethiel joined
brrt ok 09:06
dalek arVM: 48f3fa5 | brrt++ | src/ (3 files):
Destroy spesh candidate in staticframe gc

MVMStaticFrame cleanup did not properly destroy the spesh candidates, so allocated JIT code was never cleaned up, either.
09:33
brrt :-o i just found myself a rather nice (45 minute break in madrid) flight to granada 09:50
jnthn needs to do that 09:52
Still waiting for annoying immigration-related crap to know if I'm booking for one or for two... :/
brrt google flights is a pretty good interface 09:53
well, fwiw, i don't know if i'm booking for one or two, but i expect one
how... difficult is it for an ukranian to immigrate into the EU?
isn't ukraine schengen zone?
jnthn Ukraine isn't even EU, let along Schengen. 09:54
brrt hmmm
jnthn It's not *meant* to be difficult.
nwc10 Schengen includes non-EU
brrt oh, right, that was the whole war situation was about :-(
jnthn s:2nd/was/is/ :-/ 09:55
brrt no, i suppose it shouldn't be, not after you're married in most cases
jnthn Just because the media got bored of talking about it doesn't mean it's over.
brrt wonders why europe lets a significant part of it's area blister like that
i... was under the impression there was a cease-fire of sorts?
wrong impression, i guess
jnthn "of sorts"
I mean, sure, it's better than it has been. 09:56
But hardly peace.
Anyway, EU law is fairly strong on this area in theory, but it seems in practice that various consulates have somewhat selective memory of EU law. 09:57
(on the immigration of a spouse thing, I mean) 09:58
But in reality, we've only just hit the point where we're starting to deal with the immigration-y bits
It took nearly two months for her to get an updated passport with the name change in.
brrt wow :-( 10:01
dalek arVM/even-moar-jit: c40e8a7 | jnthn++ | src/gc/collect. (2 files):
32 bits will be sufficient for this flag; nwc10++.
10:06
arVM/even-moar-jit: 48f3fa5 | brrt++ | src/ (3 files):
Destroy spesh candidate in staticframe gc

MVMStaticFrame cleanup did not properly destroy the spesh candidates, so allocated JIT code was never cleaned up, either.
arVM/even-moar-jit: c826133 | brrt++ | src/ (5 files):
Merge branch 'master' into even-moar-jit
10:07 TimToady_ joined
jnthn likes the moments where something you did on gut instinct in a design shows up to to be really right for a reason you didn't see coming 10:14
brrt ooh, tell us :-) 10:16
although, i'm off for lunch 10:17
FROGGS jnthn: aye, I share the excitement for these rare moments too :o) 10:48
11:43 brrt joined
jnthn lunch; bbi15 11:47
brrt that's a short lunch 11:53
jnthn Was just a case of warming leftovers from yesterday and nomming them :) 12:06
12:10 zakharyas joined
brrt that's usually faster 12:13
:-)
12:21 colomon joined
jnthn digs back into GLR stuff, after taking care of some small admin things 12:31
FROGGS .oO( small admin things == things in the fridge ) 12:32
jnthn ;) 12:34
Actually accounting and legal. Far less exciting. :)
Taking care of the things in the fridge was far more fun :)
12:38 TimToady joined 13:50 synbot6 joined 13:52 synbot6 joined 14:08 synbot6 joined 14:33 brrt joined 14:37 camelia joined
brrt hmm 14:40
i've though about it, and conservatively adding stores during expr tree building is probably best
you can always remove them in an optimization pass 14:41
timotimo that's how we ended/end up with a million "set" instructions :)
jnthn has reached the bit of the GLR involving getting Array in place 14:45
Which is argh because it's the first user-visible mutable thing :)
On the up side, probably also the only one :)
JimmyZ jnth++ # I don't know what word is better :) 14:51
err, jnthn++
brrt i thought GLR was outside of scope for jnthn?
yeah, well, i'm not saying it's easy timotimo :-) 14:52
correctness is important, annoyingly enough :-) 14:54
jnthn brrt: It was, until nobody else did it, so now it's on my plate also.
brrt i think a lot of things end up on your plate that way
jnthn Aye 14:55
I didn't really want to pick this one up because folks have this desire for it to always DWIM, and some of the IMs are contradictory, and trying to satisfy too many of them got us to where we are today. 14:57
Thankfully, there's at least now consensus that things that generate values and things that remember values need to be different types. 14:58
brrt i'm thinking i'm going to add a MVMSpeshGraphCursor type
jnthn Which does give a lot of nice things
brrt oh, yes, i think that makes sense
jnthn Though I'm going to take some crap when people realize they can't do @a.map(*.uc)[5]
Because map returns a Seq and that isn't Positional. 14:59
Well, I may take some...I can always hope not :P
brrt i suppose you can always say @a.map(*.uc).take(5)
orsomethinglikethat
jnthn Or @a.map(*.uc).list[5]
brrt yeah
jnthn I don't think we'll run into that one often. 15:00
brrt too me it'd make more sense to write @a[5].uc
if that's what you want
jnthn well, yeah, the fact I had to write a silly example kinda shows how relatively rare it's likely to be in real code :)
brrt right 15:01
although- i think you're going to see this one happen more often
my @b = @a.map(*.uc); say @b[5];
jnthn That one is *fine*
brrt why..oh
yes, i see 15:02
jnthn Because you're assigning the sequence into the array, which drains it.
brrt i keep forgetting the complexity of perl6
jnthn Well, I'm sorta trying to reduce the complexity ;)
But yeah, assignment isn't binding.
brrt i should make a t-shirt out of that
jnthn I'm sure this code's gonna survive though. It says right in the middle of it that it has a future. 15:03
has $!future;
See? :)
brrt my class punk { has no $!future; } 15:04
anyway: the point is this; if i pass a spesh graph cursor to the expr tree generator, i'm no longer obliged to consume a whole basic block 15:06
jnthn I've no problem with adding that if it's useful to what you're doing. 15:07
Well, no problem with *you* adding it... :)
brrt which is just as well, because some things (e.g. jumplist, vm-invoke) are *better* implemented outside the expr tree
:-)
i'm quite excited about perl6 these days 15:08
i also need a way to allocate a block of labels, not just one-label-at-a-time 15:09
so... many things :-o 15:11
JimmyZ @(@a.map(*.uc))[5] ... 15:12
brrt afk for tonight 15:13
see you!
TimToady well, .[] could be overloaded on iterator to have one-pass semantics, with restrictions on the ordering of the indices
brrt or you could sort the indixes
(i should shut up :-P) 15:14
TimToady a Schwartzian index...
brrt and then rearrange them after the fact
TimToady something like hyper
jnthn brrt: Have a nice evening :) 15:15
brrt yes, you too
(you all)
dalek arVM/even-moar-jit: d27a475 | brrt++ | src/jit/e (3 files):
Conservatively add stores

MoarVM opcodes include a store, much as I would wish they didn't. So now I conservatively add them during tree generation. I think some of them may be removed during a separate optimization pass.
15:23
arVM/even-moar-jit: e39bb32 | brrt++ | tools/tiler-table-generator.pl:
Define sortn routine for numeric sorting
jnthn TimToady: I...guess it *could*. Do we need it? 15:28
TimToady there might be some demand for the monotically increasing case, just as a kind of grep-on-position 15:36
jnthn *nod*
TimToady we could conservatively restrict it to that
jnthn It won't be hard to add later
For now I'm more trying to get the core model in place 15:37
TimToady sure
jnthn I'll certainly share the progress so far today (in the evening)
TimToady I'm wondering if we should bring it up using the old types as a scaffold, so we can convert the setting in some order other than first to last 15:38
so rename Array to OldArray and such, then gradually extirpate them
maybe we can just do it in order, my impression is that's how you did the previous refabrications 15:39
jnthn Yeah
TimToady wonders how we can ease the user's transition... 15:40
jnthn That's going to be...hard.
TimToady may need to run parallel distrib for a month or two
jnthn I think (so far) my plan of attack would be to keep evolving the new implementation of things until a point where it does the things other bits of the setting demand of it. 15:41
And then swap the one out for the other and debug until the thing builds.
If I can incrementally bring the setting up on a new VM, I'd hope I can pull it off for a new list implementation... 15:42
TimToady the setting itself only needed a few tweaks to make list assignment non-flattening, but making the inside of [] composer not flatten is a bit harder, at least in glrish
jnthn I've already got that not flattening in the new impl. 15:43
It's easier bottom-up...
TimToady I suspect as much
*suspected
jnthn I've gone with the more object-y API I suspected would work out better 15:45
Factoring it for inlinability
So far, I see that Moar's inlining thresholding needs some tweaks. :)
(It's not as aggressive as I'd like it to be.) 15:46
Though I think maybe part of it is that we should consider "how big is the code to inline *after* we've specialized it" 15:48
Time for a break; bbl 15:57
timotimo oh, brrt, i just realized i didn't touch the "parse graph.c" tool in at least a week :( 16:06
17:12 colomon joined 17:45 lizmat joined 18:01 FROGGS joined 18:06 zakharyas joined
jnthn returns 18:53
timotimo return_o jnthn? 18:57
jnthn feels objectified 18:58
timotimo that wasn't my intention
if you'd said you returned from noms, i'd return_n'd you 18:59
jnthn was in fact just nomming :)
So, what failing test did I leave for myself... 19:00
oh my...
nwc10 this is the anti-beer-fridge? 19:11
leaving future you something unpleasant?
jnthn The fridge has some nice things in it
Oh
Yeah
Well, it's not that nasty
Just infinite listy stuff
dalek arVM: 8aa709f | timotimo++ | tools/update_ops.p6:
[update_ops.p6] make module MAST::Ops a proper unit module
20:29
21:02 Ven joined 21:09 TEttinger joined 21:15 Ven joined 22:09 lizmat joined