00:31 vendethiel joined 00:59 ggoebel7 joined 01:03 vendethiel joined 02:49 ilbot3 joined 03:34 leedo joined 04:08 vendethiel joined 07:44 FROGGS joined 07:48 domidumont joined 07:54 domidumont joined 08:02 zakharyas joined
dalek arVM: 94b1b63 | FROGGS++ | README.markdown:
state that gcc on Windows® works too
08:18
08:59 vendethiel joined 09:35 virtualsue joined 09:46 brrt joined 09:51 vendethiel joined 10:36 vendethiel joined 10:59 vendethiel joined 11:02 brrt_ joined 11:09 virtualsue joined 11:17 virtualsue joined 12:08 virtualsue joined 12:27 vendethiel joined 12:38 virtualsue joined 12:40 leont joined 12:42 vendethiel- joined 12:53 ilbot3 joined 13:08 vendethiel joined 13:58 vendethiel joined 14:36 virtualsue joined 14:46 vendethiel joined 15:50 vendethiel joined 16:31 vendethiel joined 16:34 virtualsue joined 16:54 vendethiel joined 17:06 kjs_ joined 17:18 kjs_ joined 17:19 vendethiel joined
jnthn is back home, after a 5 hour trip that turned into an 11 hour trip... :/ 17:47
timotimo bleh. damn those planes
17:48 kjs_ joined
jnthn Yeah... 17:48
6 hour delay on a 2 hour flight
TimToady welcome home, anyway 17:50
jnthn Yes, nice to be back...and to be staying here for a good while :)
leont I know that feeling :-( 17:51
TimToady understands completely, having been right on the ragged edge over the holidays himownself
leont "You have 5 hours delay, here is a €10 coupon, it can almost buy you a decent breakfast" 17:52
jnthn Wow, you got a coupon! 17:53
At least KBP has free wifi... :)
17:53 patrickz joined
jnthn Anyways, tomorrow will be swallowed by recovering from the journey, visiting lawyer, and most likely a tedious but important errand. 17:55
And after that I'll probably start to ease myself back into things...slooowly. :)
timotimo +1 on the "sloooowly" bit :)
do you already have a list of "things i'd love to optimize first"? ;) 17:56
jnthn Well, -Ofun will probably be doing some stuff down at Moar level :) 17:57
timotimo how -Ofun does it feel to guide me while i'm hopelessly bumbling around at the NQP level? :P 17:58
jnthn (Improving invocation performance, looking at using PICs for type data collection, showing spesh/JIT work off to a background thread, etc.)
*shoving
timotimo right now, spesh/jit only accounts for sub 10% on most workloads i've tried :P 17:59
jnthn I've not really kept up at all with what's happened in the last weeks. :)
Hey, we're normally happy with 10% ;)
I was pondering that thread being a general "service" thread and pushing finalization off to it also. 18:00
To get GC times down some.
timotimo ah, yes, finalization
jnthn Anyway, no shortage of ideas, at least... :)
timotimo aye
i was hoping i could perhaps tackle the "lexical refs prevent inlining" problem 18:01
jnthn Having spent the last however many months mostly chasing semantic bugs down ahead of 6.c, I'd be quite happy to be focusing on something other than that for a bit, anyways. :) 18:02
timotimo but i have not looked at the code actually yet
yeah, definitely
jnthn (lexicalref) Yeah, that's a cop out. :) The point was that inlining of things getting passed them can often make them go away :) 18:03
timotimo i had been looking at a little benchmark of a eratosthenes sieve and using Int was faster than int
jnthn But it was a bit tricky to get the analysis right, let alone the transform. :)
So it got punted.
timotimo you mean the analysis and transform inside spesh? 18:04
jnthn Yes
timotimo right; for an operator that doesn't "is rw" in the argument list, though, it'd be lovely if we didn't take a ref 18:05
jnthn yeah, indeed :)
timotimo the "Int" version had things like <, + and such inlined, the int version ... nothing at all :|
jnthn There's plenty of inter-routine even-when-we-don't-inline info that it'd be nice to ponder 18:06
timotimo oh, would we need such a mechanism to say "we don't have rw in the signature"? i thought it'd be accessible by the same parts the inliner looks at anyway
18:07 vendethiel joined
jnthn Not sure it'll be a complex mechanism, I just think it's worth formalizing a little how it's done. 18:07
Escape analysis might want such things :)
timotimo ooooh
but that's spesh-level, not qast level
which is where i'm looking right now 18:08
jnthn Ah 18:11
timotimo er, "looking right now" is ... overpromising
jnthn Well, Rakudo's inliner should really be inlining ==, <, > and the like on native ints.
It was a one point, I thought. Maybe we lost that.
timotimo yeah, it stopped doing that when we introduced lexicalrefs 18:12
i thought i whined about it often enough? ;)
jnthn Um...yeah, you did, I ignored it 'cus my plate was full
Now it's...uh...well, folks didn't fill it up again yet :P
timotimo :D 18:13
bbiab
as i said, i'm hoping i could maybe make it work again, but it'll definitely require a bit of guidance
this time around i'll try to only ask you when i've rubber-ducked someone else, so i don't bug you more than necessary 18:14
jnthn It's something we'd really like to get working again :) 18:15
18:23 patrickz joined
JimmyZ welcome back, jnthn :) 18:27
timotimo jnthn: is there any reason to keep takeclosure calls "as early as possible" rather than putting them "as late as possible"? 18:33
i should make a measurement if it actually makes a difference in the cases i'm thinking of 18:45
18:54 kjs_ joined 18:55 TimToady joined
JimmyZ jnthn: irclog.perlgeek.de/moarvm/2016-01-08#i_11853242 # Do we need to re-order it? 19:00
19:01 vendethiel joined 19:05 domidumont joined
[Coke] (optimizations) I don't know how hard it would be to test optimizations (and where does it make sense to test them? a separate test suite run by rakudo but owned by moar?), but if we don't test, we'll backslide again. 19:11
(make opttest in rakudo that works like spectest but on a different repo) 19:12
timotimo it'd seem like we'd need a flag for every optimization to turn it on or off? or would it be enough to test --optimize=0 vs --optimize=3 ? 19:19
some optimizations depend on others, too
[Coke] we could go the compiler route (give everything a command line switch) or the friendly route (we know what works together, here's a few simple options). 19:20
I lean towards few options, because then we can cheat. 19:21
dalek arVM: 2c69687 | (Jimmy Zhuo)++ | src/core/oplist:
mark flattenropes, graphs_s and codes_s as DEPRECATED
19:47
jnthn Ain't the regex engine using flattenropes? 19:48
JimmyZ jnthn: I found it's needless
jnthn Why? 19:49
19:49 kjs_ joined
jnthn The regex engine could do with strings it can cheaply scan 19:49
JimmyZ jnthn: because before chars op don't need call flattenropes op 19:50
jnthn ??
That's entirely not the point of it.
The point is to turn the string into a flat buffer that's really cheap to index into. 19:51
timotimo jnthn: could this be the right place to look? github.com/rakudo/rakudo/blob/nom/....nqp#L1021 - perhaps here i'd have to check for int or intref and so on?
jnthn What replaces graphs_s and codes_s?
Is graphs_s just a dupe of chars?
JimmyZ jnthn: yes
jnthn And codes_s? 19:52
JimmyZ and codes_s not used anywhere
jnthn Rakudo really should be using it for .codes
I wonder how it implements that today...
timotimo isn't _s usually the one that has a literal string argument?
jnthn No, just means "works on a string" 19:53
timotimo ok
jnthn const_s works that way
timotimo ah
jnthn Anyway, I think the only one of those deprecations I agree with is graphs_s
Which it turns out is a dupe...probably.
JimmyZ github.com/perl6/nqp/commit/3af6e6f49d
jnthn JimmyZ: Rejected.
JimmyZ jnthn: see ^^^
jnthn Yes, graphs_s can go 19:54
JimmyZ jnthn: and I found codes_s is not used even in nqp and rakudo
jnthn But flattenrpoes stays
Yes, but you're noticing things and then drawing dumb conclusions.
multi method codes(Str:D:) returns Int:D { 19:55
#?if moar
self.NFC.codes
That should really use codes
We just didn't get around to doing that.
JimmyZ jnthn: so codes_s will be useful, but not now?
jnthn Right
And flattenropes is useful now. 19:56
Consider ($foo ~ $bar) ~~ /.../
timotimo flattenropes means we can't regex-match things created with the x operator without allocating lots of memory? 19:57
jnthn timotimo: You can't rely on that anyway 19:58
timotimo OK
jnthn And it's a bit contrived
Whereas "I just concatenated some things together I got in over a socket, and want to see if I can parse out a full message" is pretty common 19:59
JimmyZ jnthn: why not move flattenropes code to chars op, since we may do nqp::chars($foo ~ $bar);
jnthn Why could we do that?
We already keep the number of chars cached 20:00
We don't need to flatten
Anyway, the answer is no, flattenropes stays.
As does codes_s
timotimo a quick comment about my link above, jnthn?
m: my int $foo; sub test(int $a is rw) { say $a.WHAT }; test($foo); 20:01
camelia rakudo-moar 42a583: OUTPUT«(Int)␤»
timotimo how did i get IntLexRef from .WHAT again ...
jnthn It'd have to be .VAR.WHAT I think
JimmyZ jnthn: ok, I just can't understand it :P , from github.com/perl6/nqp/commit/3af6e6f49d , flatten $tgt is only used by chars op
timotimo oh, of course
m: my int $foo; sub test(int $a is rw) { say $a.VAR.WHAT }; test($foo); 20:02
camelia rakudo-moar 42a583: OUTPUT«(IntLexRef)␤»
timotimo m: use nqp; my int $foo; sub test(int $a is rw) { say $a.VAR.WHAT; say nqp::isint($a); say nqp::isint($a.VAR) }; test($foo);
camelia rakudo-moar 42a583: OUTPUT«(IntLexRef)␤0␤0␤»
timotimo neither of those give 1 for isint?
jnthn JimmyZ: Note that it flattens in-place.
timotimo: No, since that's more about "can I unbox it to a native int" or so 20:03
timotimo does "that" refer to isint or the link to trial_bind i put in the channel? 20:04
JimmyZ jnthn: irclog.perlgeek.de/moarvm/2016-01-08#i_11853242 # Do we need to re-order it?
jnthn timotimo: isint
timotimo OK; that'd mean isint isn't enough for the trial binder, because if there's an is rw, it won't ever give 1 20:05
but i'm not sure what's the right wording to make it acceptable. is istype IntLexRef correct?
jnthn JimmyZ: Well, I'd been keeping it ordered partly 'cus I was concerned about whether compilers would be smart enough to realize it can become a jump table if we out-of-order it, and partly 'cus it just seemed sensible. It may be worth checking if the first is true.
timotimo hm. more something like is its archetype lexref and its nativetype the right one 20:06
jnthn (I don't know; I'd hope MSVC is good enough for it not to matter, for example)
(And GCC/Clang use computed goto...)
JimmyZ jnthn: I tested it, MSVC is good enough 20:07
jnthn OK, good to know.
Well, and bad in that we don't get a cheap MSVC speed-up :P
Anyway, don't feel strongly on it
JimmyZ not sure about tinycc etc
jnthn If somebody patches them to fix the ordering, I'm fine with that. But I'm not going to rush to do it myself :) 20:08
timotimo mhh, that's a clever one-liner for finding out the ordering
dalek arVM: 4f86f20 | (Jimmy Zhuo)++ | src/core/oplist:
some ops won't be DEPRECATED
20:09
JimmyZ 04:09 here ,good night 20:10
jnthn JimmyZ++ # thanks
'night o/
timotimo gnite JimmyZ
jnthn Time for a stroll, after all day cooped up in an airport...then probably rest. :) Will be about a bit tomorrow, I expect. :) 20:11
timotimo sure 20:12
have a good one!
20:49 patrickz joined
hoelzro Frame_N in a MoarVM dump roughly corresponds to an MVMFrame deserialized by deserialize_context, right? 22:48