01:48 ilbot3 joined 05:33 domidumont joined 05:52 domidumont joined
dalek arVM/even-moar-jit: 2d9434e | brrt++ | docs/jit/register-allocator.org:
Map out more of the cruft that needs removal
06:48
06:48 brrt joined 07:48 zakharyas joined
jnthn morning, #moarvm 08:58
moritz \o jnthn 09:07
brrt \p 09:10
timotimo \q 09:11
brrt haha
timotimo that's my pony tail 09:17
brrt then in my case it should be \u
(beard and balding) 09:18
timotimo aaw
brrt would rather not, but can't be helped 09:21
jnthn Hm, I suspect a day or so before the relaese isn't the best time to do the Unicode 9 bump :) 09:23
brrt noā€¦ i suspect not 09:24
(the everlasting drum of the release march)
jnthn :) 09:28
It'd probably go fine, I'm just a little risk-averse :)
I suspect I'll do some bug fixes this morning, and then continue doing I/O stuffs this afternoon :) 09:29
brrt ugh, i'd check if the IO-Socket-Async thing was better now, and haven't yet 09:30
konobi oh... did i mention that there's a portable version of libumem available which gives lots of fun insight, debugging, guards and analysis of memory management (as an LD_PRELOAD or shared lib) 09:34
brrt i think you did not 09:35
konobi i found it very useful when working on nodejs and stopping myself from kicking myself in the ass with memory leaks and faulty references/pointers, etc. 09:36
especially with the stack being as dynamic as it is in async code
dalek arVM: ef129c4 | jnthn++ | src/core/threadcontext.c:
Fix missing finalization queue cleanup.

Only a small leak, but it adds to the clutter when looking at valgrind leak check output.
10:24
10:50 travis-ci joined
travis-ci MoarVM build passed. Jonathan Worthington 'Fix missing finalization queue cleanup. 10:50
travis-ci.org/MoarVM/MoarVM/builds/159836447 github.com/MoarVM/MoarVM/compare/7...129c42cad8
10:50 travis-ci left
brrt wonders if it is time to switch from MVM_JIT_EXPR_ENABLE to MVM_JIT_EXPR_DISABLE 10:51
jnthn Not 2 days before release ;) 10:52
brrt haha
jnthn I guess it passes spectest etc though?
brrt well, even-moar-jit isn't merges
merged yet
jnthn ah
brrt afaik yes
or at least 'as well as master' 10:53
jnthn :)
brrt but that is in part because it does only very, very tiny fragments yet
jnthn I guess on the branch it makes sense...how far are we from that being mergable?
brrt that.. is an excellent question, and i'm glad you asked
my goal for 'mergeable' has been so far: 'will not explode if people without deep internal knowledge add new templates and tiles to it' 10:54
nwc10 brrt: what branch(es) should I test with ASAN?
brrt and includes 'can represent the full range of MoarVM opcodes as templates' and 'can compile all templates that are currently implemented'
nwc10 (not that this is likely to show up all JIT issues. valgrind is more likely to spot others)
brrt nwc10: if you'd test even-moar-jit with MVM_JIT_EXPR_ENABLE=1 set, then I'd be very grateful :-) 10:55
so, with that saidā€¦. the missing piece that i'm slowly assembling is a regional register allocator (as in, can deal with IF, CALL and friends) 10:56
the other bit is that I really have to add a few more security pieces to handle all annotations correctly
it is about a weeks worth of work to make it mergeable, but at my current pace, that will take at least another month 10:57
perhaps two
after that, mountains of work left, but less of it 'core' 10:58
jnthn Curious. rt.perl.org/Ticket/Display.html?id=129161 seems to leak because SCs never get kicked out of the weak hash...
(that is, they go unclaimed)
brrt is not sure if he has valgrind on this machine 10:59
brrt has not 11:00
konobi libumem you can run as a preload, so you don't have the emulation overhead of valgrind to contend with 11:02
timotimo kind of like asan, or is umem more than that? 11:04
konobi it's specifically for memory operations 11:05
timotimo oh, so it also handles accesses? regular writes and reads?
how can a preload do that o_O
konobi libc
that's also why libfaketime is so damn handy 11:07
brrt i think it is solaris specific though?
konobi nope, OmniTI made a portable version years ago
brrt cool 11:08
konobi the docs refer to solaris, but it's all actually pretty agnostic platform wise
so with ldpreload you can use a bunch of environment variables to enabled/disable/set/get functionality 11:09
timotimo brrt: "can represent the full range of moarvm opcodes as templates" just means all features that you might need in order to implement each op is there?
brrt yes, and things won't break when doing so 11:10
timotimo OK
you don't blog often enough for me to know what the status towards "can compile all templates that are currently implemented" is :P
nine brrt: so once even-moar-jit is merged, it's mostly a matter of going through profiles and dumps and find opcodes that prevent JITing and implement their support? 11:11
brrt timotimo: that is a very fair point
nine: yes
that is the intention
has been the intention for over a year :-$
timotimo ;) 11:13
konobi so a moarvm opcode is a class with instances, that need functionality... i see a role! mwuahahaha 11:18
timotimo i'm not sure that's accurate
konobi well, representable as one =0) 11:19
timotimo though tbh, many opcodes come with a check "does this object have the right REPR?" and/or "is it initialized?"
konobi rw values
jnthn lunch & 11:20
timotimo we really only have two opcodes that have an rw value
konobi fun for debugging via meta reflection
anywhos... i'm down the MOP rabbit hole again ^_^ 11:21
timotimo OK :)
brrt timotimo: actually rw values are treated as read-only values 11:24
because simpler
or, just as 'read' values 11:25
and they are handled simply by passing the address rather than the value
....
hang on
hmm
no, that doesn't have any ugly repercussions, actually 11:26
konobi is there a pre-existing mop library for C?
nine brrt: looking forward to that. Sounds like fun :)
timotimo well, in the JIT maybe, but code gen and spesh have to handle it differently 11:27
timotimo packs up for driving home
brrt hopes to deliver it soonish
timotimo yay
brrt konobi: i have no idea what you could mean with a MOP library for C :-)
but suggests that soonish for me may be longer that for you
timotimo there's gobject 11:28
that's pretty much a mop library
konobi yup 11:30
a language really only needs 3 features to support a mop... and the 3rd one is usually fudgeable (and sometimes the first two too) 11:31
jnthn returns from lunch and continues leak hunting 12:15
konobi brrt: ah yes... this is what got me working with libumem outside of solaris again... dtrace.org/blogs/ahl/2004/07/13/num...0-libumem/ 12:17
brrt konobi: thanks for the link :-) 12:18
konobi there's practically no overhead (i know of places where it's used in production by default) so it's really handy for running with a harness to catch errors early
jnthn Well dammit, turns out at some point we ended up with EVAL leaking again... :( 12:20
brrt :-( 12:21
i'd venture to suggest that volunteer projects such as MoarVM benefit disproportionally from automated regression tests
konobi www.usenix.org/legacy/event/usenix...nwick.html
brrt but that it is, on the other hand, rather time consuming to set them up 12:22
jnthn wonders how to write a test for this particular case
konobi i actually use bats (TAP for bash) often for more esoteric things
jnthn I didn't last time I fixed it. 12:23
konobi brrt: in the libumem case, it's nice and easy... install on machine, set env vars, consume output after tests are run 12:24
brrt no, it seems like a hard test 12:26
jnthn Seems I fixed it anyway 12:35
A lot faster than last time, because this time I didn't take the diversion of writing a heap profiler :P
moar-ha++
brrt hehe :-) 12:36
that is a cool tool, for sure
jnthn The fix is a one line patch
nwc10 we owe your beer fridge. If only there was some
oh wait
news.perlfoundation.org/2016/09/per...abi-2.html
jnthn Right :)
nwc10 the bit marked "Leave a comment"
konobi brrt: when loaded as preload, just run as normal... you get stats and info in generated artifact files (contents, location, etc. all settable with env vars) 12:40
brrt konobi: I'm fairly sure it is cool. But at this point, I can't really do anything with it, because I'm not working on moarvm atm :-) 12:41
i'll be sure to read the documentation you've sent me
but haven't yet :-)
dalek arVM: 4938b65 | jnthn++ | src/core/bytecode.c:
Mark SC used in bytecode loading as claimed.

Otherwise, it might be considered unclaimed and so go uncollected, thus leading to things like EVAL leaking memory.
12:42
konobi cool 12:44
15:59 domidumont joined 16:41 Ven_ joined
dalek arVM: 2eedba8 | jnthn++ | src/6model/ (2 files):
Fix a-bit-too-few error in multi cache.

The indexes we store for args are indexes into the args buffer (which includes names) rather than the callsite flags, meaning that they can be up to twice as long. Fixes a bug where we could fail to find some entries when caching callsites with many named args, resulting in the same entries being put into the cache again and again.
17:52
17:55 Ven_ joined 18:09 Ven_ joined 18:24 FROGGS joined 18:38 Ven_ joined 18:54 travis-ci joined
travis-ci MoarVM build errored. Jonathan Worthington 'Fix a-bit-too-few error in multi cache. 18:54
travis-ci.org/MoarVM/MoarVM/builds/159951368 github.com/MoarVM/MoarVM/compare/4...edba88d2b0
18:54 travis-ci left
jnthn bah, hung during a git pull 19:33
geekosaur git doesnt handle network glitches well 19:34
(this is actually a problem for me as the upstream NAT router has far too few NAT slots; at times it loses NAT table entries in under 30 seconds...) 19:35
mst geekosaur: ssh proxy via your own box? 19:36
geekosaur I redirect some stuff over a hotspot currently and just retry for anything I don't want to blow extra money for 19:37
20:52 Zoffix left