00:14 lizmat joined
dalek arVM: aeef781 | TimToady++ | src/6model/reprs/NFA.c:
use continue consistently instead of break

Probably doesn't help the C optimizer, but the intent is clearer.
01:20
arVM: 9603db0 | TimToady++ | src/6model/reprs/NFA.c:
fix tab damage
01:22 colomon joined 01:28 travis-ci joined
travis-ci MoarVM build passed. TimToady 'fix tab damage' 01:28
travis-ci.org/MoarVM/MoarVM/builds/42150849 github.com/MoarVM/MoarVM/compare/4...03db0a55af
01:28 travis-ci left
timotimo weird. i only very occasionally get allocations in spesh'd and in jitted frames, mostly it's either all in spesh or all in jit 01:42
dalek arVM: f94d036 | (Timo Paulssen)++ | src/profiler/ (3 files):
[profiler] count allocs in spesh'd/jitted frames separately
02:33
02:40 jimmy_ joined 02:47 ilbot3 joined 04:16 zakharyas joined 08:00 FROGGS joined 08:27 kjs_ joined 09:44 zakharyas joined 10:25 kjs_ joined 10:38 daxim joined 12:28 brrt joined 12:59 JimmyZ joined 13:17 zakharyas joined 13:39 zakharyas joined
dalek arVM: f420a8f | (Timo Paulssen)++ | src/spesh/optimize.c:
can turn a bunch of can_s ops into can ops instead.

doing can at spesh-time is still not working properly.
13:55
arVM: 94372f4 | (Timo Paulssen)++ | src/profiler/log. (2 files):
prevent arbitrarily many allocation counts for same object
14:05
14:16 hoelzro joined 14:19 travis-ci joined
travis-ci MoarVM build errored. Timo Paulssen 'prevent arbitrarily many allocation counts for same object' 14:19
travis-ci.org/MoarVM/MoarVM/builds/42198616 github.com/MoarVM/MoarVM/compare/f...372f4486ac
14:19 travis-ci left
timotimo uh oh 14:19
oh, the clang build just stalled for 10 minutes compiling interp.c?
but i didn't change anything there?
14:32 zakharyas joined
timotimo brrt: got a suggestion what i could have a look at next? :) 14:53
brrt have access to a mac? 14:54
:-)
timotimo nope
don't even want to touch that memory bug with a ten foot pole
it scares me a lot 14:55
brrt and it doesn't happen with linux/clang?
does anything weird happen under ASAN?
timotimo don't think so, but i could try
brrt please do
:-)
timotimo yeah, let's run a full spec test with asan
[Coke] timotimo: I'm now getting memory errors on osx/parrot also. have fun! ;) 15:00
timotimo oh lord
so ... how do i tell moar to use clang?
brrt perl Configure.pl --cc=clang --ld=clang 15:02
timotimo thanks
brrt and be patient
clang is ... not fast
timotimo with asan or without?
make: *** No rule to make target '3rdparty/uthash.h', needed by 'src/main.o'. Stop. 15:04
?!?
oh, heh.
so many warnings >_< 15:05
brrt oh yes, with asan
perl Configure.pl --cc=clang --ld=clang --asan
should do it
timotimo i added --debug=3 and --prefix=../install
brrt in the vein of drudgery but thankful work, any help on removing clang build warnings is appreciated 15:15
timotimo joins #clang to yell at some developers 15:17
brrt don't do that :-) they'll just point at the C specs to you 15:18
timotimo haha
brrt and call you a lousy developer for daring to use gcc :-P
timotimo yeah, it's very common for people who have been abused to carry the abuse forward
brrt but yeah, clang is slow, and verbose, and whiny 15:19
and it may yet provide insight :-)
(and it is also the default compiler for mac os x)
JimmyZ and freebsd 15:20
timotimo All tests successful.
brrt and freebsd soon
timotimo aaaaand i'm out o/-
brrt :-) that's good news at least
timotimo i agree 15:21
TimToady yes, I observed the long hang on interp.c with mac/clang last week, when my friend was compiling perl 6 16:10
obviously they've got some O() of higher order going when compiling large routines 16:11
either that, or they just chew up too much memory 16:12
but my bet is on the algorithm
timotimo weird; on my machine moarvm actually compiled somewhat quickly 16:16
TimToady his might've been an older machine 16:18
but we were definitely about to panic when it finally finished 16:19
brrt hmmm
TimToady then, of course, we ran into the memory bug, so I ended up aiming him at the jvm version instead to play with
brrt strange that this works in this
euh, strange that such an issue exists 16:20
happen to know if your friend has os x yosemite installed or the older version?
TimToady dunno 16:21
brrt hmmm 16:22
[Coke] moar non-jit completely borked on osx's daily run. 16:39
TimToady
.oO(Apple: tormenting implementors on behalf of the company...)
16:42
timotimo ;_; 16:44
hoelzro when I'm loading a precomp'd module A that loads B, should B.pm.moarvm be loaded? or should B's symbols all already be present in A.pm.moarvm? 17:25
TimToady the latter would be an available optimization only if B were considered immutable, meseemeth 17:41
and we consider local modules to be mutable, but officially installed ones immutable
hoelzro makes sense 17:42
I'm just noticing that loadbytecode is being called for B.pm, but not ModuleLoader.nqp
so I'm wondering if that has something to do with the odd precomp behavior we've been seeing
jnthn hoelzro: We always load B.pm.moarvm too 17:43
hoelzro jnthn: that's consistent with what I'm seeing
TimToady has his brane still mostly in NFAland 17:44
hoelzro but the merge_globals in ModuleLoader.nqp isn't being called on A + B
I'm wondering if that's related to the problem
TimToady and thinking the NFA engine needs to say how far it got both for optimizing rematches as well as for implementing <*abbreviatable> 17:45
jnthn TimToady: The "how far it got" thing plays into an opt I'd been pondering where, in the absence of captures, we just skip over must fo the imperative code in a regex
TimToady that's what I was referrin' to 17:46
jnthn Oh...
:)
TimToady but recording that info has some overhead
jnthn Well, my bigger problem was actually figuring out where to stick it too 17:49
timotimo <*abbreviatable> will cause code-gen to ignore capture creation etc? 17:51
TimToady well, since it starts with punctuation, it wouldn't capture without help anyway 17:53
<foo=*abbrev> would presumably capture what actually matched 17:54
internal captures would not be accessible unless you named the outer assertion
jnthn I can't actually remember what <*...> is precisely spec'd as 17:55
It was in my "yeah, not gonna be 6.0 unless somebody shows up with a patch" list, though.
Looks like somebody is considering it. ;)
TimToady it always succeeds with whatever prefix matched 17:56
jnthn Does it have to be followed by a literal?
TimToady for a literal, one can fake with a | ab | abb | abbr ...
jnthn Ah, so no, it doesn't :)
TimToady but it's specced to not limit to literals
but it's right in the bailiwick for the nfa engine 17:57
which already does precisely what it needs, but then throws away the info on how much actually matched
so I think it *would* be limited to what the nfa engine can do
the proper thing is probably to assume that the final fate (or lack thereof) is the only offset of interest most of the time 17:59
and if we have to backtrack on fates, we just force a rematch instead of optimizing
otherwise we have to associate an offset with each fate, and sort it along with, which is heavyish
especially since most fates are just thrown away
TimToady wonders how often parsing the setting actually backtracks on fates... 18:02
jnthn Yeah, I think I did some stats on how often we take the first match and it was a lot of the time
though it was ages ago so I don't remember too well
Was comparing before/after we had LTM in place for it
TimToady longlit will only improve that number
jnthn Cool 18:03
TimToady (I suspect)
jnthn Any measurable improvement observed?
TimToady well, it's not really about performance, but correctness
or maybe "correctness"
depending on how correct the spec is
I was mostly just trying to avoid giving away the farm on performance
did you get a chance to look at the XXX in jvm? 18:04
or were you asking about taking-the-first-entry-ness?
didn't measure that
probably not terribly significant, since taking the wrong fate probably results in a misparse, as far as longlit is concerned, unless the wrong parse knows enough to backtrack to the more specific parse 18:05
longlit is more about removing wtfs 18:06
jnthn No, didn't get chance to look yet :(
TimToady well, the lazy use of longlit entries ameliorates some of the hurt of allocating 200 entries
at least it doesn't have to initialize all of them every time now
jnthn Teaching a course I didn't do before just days after longhaul flight has been kinda time-consuming and exhausing... 18:07
Went well, though.
TimToady but I know parsing the setting needs at least 102 entries, so 100 isn't enough
jnthn Hm...can we not hang a re-usable array off the tc?
TimToady no rush, it's just I don't know enough Java to get it to stage0 right
jnthn Like I did in Moar for the rest of the fates...
TimToady I tried, but feyled stage0
jnthn Hm, can you remember how it blew up? 18:08
I'm...a little surprised at the blow-up...
TimToady couldn't parse nqpmo
jnthn Oh. Odd.
I was imagining some kinda class incompatible exception mighta happened.
But that woulda been odd too
TimToady could be
jnthn OK. I'll have to reproduce it and see :) 18:12
TimToady doubtless it'll just work for you :) 18:13
but it was something harder than just a realclean on my linux box 18:14
it was like on the first 'has' declaration in nqpmo that it misparsed 18:15
does give a stack trace at that point, but I couldn't glean anything useful from it 18:16
afk & 18:17
jnthn TimToady: Grr...my first patch Just Worked.. 18:26
18:26 FROGGS joined
jnthn TimToady: gist.github.com/jnthn/5741f26b0f02143181e8 works for me...can you try it, to see if it exhibts the same issue as whatever you tried? 18:29
TimToady well, I was trying ArrayList<Integer>, so that's a difference 18:56
btw, it occurs to me that the way we return fates in nqp-m is non-reentrant, unless something I don't see in there is cloning the fates per nfa invocation 18:59
but it seems like something must be cloning, or we'd get far more failures than we do, since you wouldn't be able to re-use tc->fates in any subrule, not just a recursive one... 19:01
hoelzro ok, I found something interesting with precomp: github.com/rakudo/rakudo/blob/nom/...d.nqp#L361 19:20
the current global context is not being provided to load_module 19:21
so it never merges symbols in from precomp
that doesn't seem correct to me
or am I wrong here?
TimToady jnthn: patch works here, but doesn't seem to run any faster 19:28
but I'm not running a pristine setup here, so several grains of salt are in order 19:29
oh, I see where the fates are cloned now 19:42
jnthn Yeah, we do clone 'em 19:50
Well, or push 'em to a fresh array iirc
and in an alternation we push them onto the bastack
uh, bstack 19:51
ok, if the patch works I'll commit it
TimToady but the fates are still handled in an inferior run loop, which could be potentially problematic
at least for protos
jnthn Inferior run loop?
Moar doesn't have those except for callback from C land...
TimToady src/QRegex/Cursor.nqp:326 19:52
alts go to teh bstack though
jnthn hoelzro: That's just a perfectly ordinary method call
oops
TimToady: ^^
hoelzro jnthn: the method call is fine, but I think it's missing the GLOBALish parameter 19:53
jnthn It's just looping over the alternatives in NQP code
TimToady which can invoke an inferior run loop
jnthn ?
We never re-enter the NFA, though...
TimToady a regex can have a closure
jnthn I think I must be missing something
TimToady but we're just calling the subrule
jnthn I mean, to me an inferior runloop means that we have two interpreters on the C stack... 19:54
hoelzro: Yes, that was me answering a TimToady++ question, not yours ;)
TimToady I guess we're in nqpland
jnthn hoelzro: The answer to yours is rather simpler, thankfully
hoelzro ah, ok =)
namely? =)
TimToady so I guess it's okay
jnthn hoelzro: We serialize the GLOBALish that the symbols are merged into
hoelzro: So you don't need to repeat the work. 19:55
It only needs doing once.
hoelzro I see
jnthn Same with all importing.
hoelzro I thought I'd found the bug =(
jnthn About GLOBALish
It's actually in UNIT
In fact, you can understand everything in terms of module loading and symbol handling in that way
The module loader has a dynamic, $*MAIN iirc 19:56
When we load a module, this dynvar is set
TimToady does precomp make any assumptions about the immutability of a local module?
jnthn To the UNIT lexical scope
TimToady: You'll need to be a bit more specific on "immutability" here
TimToady: I tend to see precomp as a cache 19:57
TimToady if you precompile with a 'use' of a local module, and then someone edits that
jnthn If you change the source of the module or the source of one of its dependencies, you invalidate the cache
TimToady okay
jnthn It's just that we don't actually handle that invalidation automatically yet
We just detect it happened
And tell the user "nope, this one is out of date"
We kay pre-comps on the SHA-1 hash of their source code.
It works pretty well for Git, so... :) 19:58
TimToady for known immutables, we lock it into the cache permanently
*we can
if the identity is sufficient to identify an immutable
jnthn True. 19:59
TimToady wild cards need not apply :)
just making sure our multi-versioning story stays straight...
jnthn *nod*
21:33 brrt joined 22:33 brrt left 23:05 woolfy joined 23:09 lizmat joined 23:13 kjs_ joined 23:21 woolfy left