timotimo jnthn: would you accept a fact "visible at a deopt point" that we would put on versions of registers that are current whenever a deopt annotation is hit? 00:27
(and then i'd also introduce a "transferrable_facts" mask that would prevent this fact from being propagated by "set" instructions ... or something to that effect)
one thing that annoys me a bit is that we still have to have data in redundant registers, even if they could safely be omitted 00:28
01:11 kjs_ joined 02:48 ilbot3 joined 02:50 JimmyZ joined 02:58 zakharyas joined 03:22 JimmyZ joined 04:59 JimmyZ joined
dalek arVM/longlit: c697119 | TimToady++ | src/6model/reprs/NFA.c:
add debugging to NFA runner
08:50
08:56 kjs_ joined, kjs_ left 09:02 woolfy joined, lizmat joined 09:10 woolfy left 09:33 FROGGS[mobile] joined 09:51 lizmat joined 10:28 woolfy joined 10:43 FROGGS joined
jnthn timotimo: As far as I can tell, the trick with bumping usage over de-opt boundaries is already sufficient to let us delete writes that won't be needed beyond the point. 11:52
timotimo hm, ok, so if i have something like 11:57
opthatwrites r5(10)
set r20(3) r5(10)
i can turn that into opthatwrites r20(3) if and only if r5(10) only has one usage and that is the set
jnthn Correct.
That'll nail a lot of cases. 11:58
Since a lot of sets are "chains" that eventually write to a more persistent location.
timotimo i'll be car-ing a lot today, i'll see if i can get something whipped up tonight 12:00
have you seen what our sink code specializes to in many cases? 12:01
jnthn Not recently
Though I know I rewrote the sink code generation a while back to it should stand a chance of specializing away in many cases.
timotimo if i understand correctly, we definitely get a sp findmeth with a cache, but the "can" invocation is "left behind"
jnthn oh... 12:02
But...we should in general have a good clue what the type of the thing we're sinking is. Odd.
timotimo i should find a specific spot where this happens before i bother you with it any more, i guess 12:03
nqp::push($rpa, $!nextiter) if $!nextiter.defined; 12:06
seems like we try to sink there
jnthn Interesting :) 12:07
timotimo that's Parcel of List
oh
it could be trying to sink the else-part of the if branch
ah, yes, it sinks the return value of the if 12:08
which is either what push_o returns (is that the list or the first argument?) or the wval the else-branch gives (which i believe is Nil) 12:09
another instance where we don't get rid of the sink is in ListIter's reify; the very first unless ... { } block gets sink'd 12:11
so maybe it's a thing in general that branches don't sink very happily yet 12:14
doing something like constant folding across PHI could be interesting 12:33
jnthn We don't do much with our PHIs yet... 12:34
timotimo yup 12:37
if we have a PHI where on one side we have a known constant argument and on the other we have an unknown argument we could in theory move the operation before the PHI and have only one side of it constant folded 12:38
12:45 btyler joined, woolfy joined 13:29 zakharyas joined 15:29 woolfy left 16:39 vendethiel joined 17:46 hoelzro joined 17:51 FROGGS_ joined 18:18 tgt joined 18:23 woolfy joined 18:35 lizmat joined 19:28 brrt joined
brrt \o 19:31
long story short
i want to create a static binary for perl6-m
why? static binaries are the future with regard to deployments / devops; also a static binary should play well into a process isolation system 19:32
but.. what i find is that moar is started with any number of libpaths and a single .moarvm binary. so i think we'd need to 'collapse' that somehow 19:35
jnthn Not to mention that you need a solution for the ext ops which are dyn linked
brrt hmm 19:37
that, too
didn't think of that
japhb And the future of deployments is actually the present: containers 19:44
I believe someone had built a docker container with r-m in it .... 19:45
btyler containers are awesome, but (imo) require a lot more commitment/learning than plopping an executable blob somewhere 19:51
brrt containers are more awesome with static binaries :-) 19:52
btyler I'd be happy to put together a r-m dockerfile if there isn't one floating around
I think it's telling how much positive reaction golang got RE being able to just toss a single executable around to deploy 19:53
brrt my point is that - with containers and all - people are rather not in the business of figuring out all dependencies and making them match nicely
btyler totally
20:27 kjs_ joined
brrt anyway.. what i wanted to know is, is there any way to determine without evaluating anything which modules and libraries a moarvm bytecode file requires? 20:33
i have a sneaking suspicion the answer is going to be 'no' 20:34
jnthn 'no' 21:04
brrt :-) 21:05
why not
jnthn Well, in no small part 'cus you can't do the same at Perl 6 level... :P
brrt hmm 21:06
so that invalidates a static perl6 fakeexcutable, no? 21:07
jnthn It's not that Perl 6 itself is unpredictable/non-static in what it needs 21:08
It's that Perl 6 module loading in general is
So you could still make a manifest of stuff to bundle
brrt ok, clear enough 21:09
:-) i suppose the rakudo makefile knows about what is needed 21:10
jnthn You could even implement a mechanism such that loadbytecode instructions first consult the stuff you've got bundled.
brrt hmm. that should be simple, considering that loadbytecode pre-consults the loaded bytecode hashtable 21:13
TimToady note that official modules are supposed to be immutable, so are static once given a permanent identity 21:15
so maybe we should warn if you make a fakecutable out of something that isn't locked down 21:17
brrt as far as i'm concerned, i only want to make a perl6-binary
not having fakecutables for user stuff is perfectly acceptable 21:18
jnthn But also nice if we can :)
brrt agreed
might also help with startup time 21:19
TimToady as soon as you've checked something into git, it has a sort of permanent identity
brrt oh, we already have a MVM_cu_from_bytes
TimToady so maybe that could be a temporary expedient for user files
jnthn brrt: Yes, I designed it that way to try and make such cleverness possible :) 21:20
brrt excellent 21:22
brrt afk 23:04
23:04 brrt left 23:08 colomon joined