01:54 crab2313 joined 04:10 FROGGS[mobile]2 joined 05:32 woosley joined 07:10 FROGGS[mobile] joined 07:18 FROGGS joined
nwc10 good *, MoarVM 08:21
08:25 woosley joined
timotimo hi there 08:30
08:31 FROGGS[mobile] joined 08:37 odc joined 08:38 woosley joined
jnthn o/ 08:45
timotimo i don't seem to have a very clear design yet for making the inlining cascade to cause previously marked-as-poisoned things that were inlined non-poisoned again :\ 08:47
nwc10 $ head -2 3rdparty/libatomic_ops/src/atomic_ops/sysdeps/ibmc/powerpc.h
/* FIXME. This is only a placeholder for the AIX compiler. */
/* It doesn't work. Please send a patch. */
so, that's no MoarVM on AIX either 08:48
timotimo aaw, shucks! 08:49
nwc10 at least, not without either a PPC assembler hacker, or a serious hack that provides a (much slower) implementation of the used subset of the atomic ops emualted using pthread primitives 08:54
timotimo oh yikes 08:55
jnthn It...has no atomic primitives? 09:01
nwc10: I think the library does know how to do it in terms of pthreads.
nwc10 no, I think it means "no-one has done it yet"
yes, seems to 09:03
libuv doesn't yet work on HP/UX, but there seems to be an open pull request: github.com/joyent/libuv/pull/1069 09:07
also, github's https certificate is rejected by both the AIX and HP/UX machines I have access to 09:08
meaning a manual hack of config to force the submodules over to git://
which is a pain
you can't win
timotimo i don't have permission to push to the moarvm.org repo
nwc10 dyncall-- # No, using BSD/GNU make syntax does *not* make your makefile Generic. FAIL. 09:20
time to drop some classic hardware on the weenies.
"that should learn 'em" 09:21
fortunately I have a gmake. Unfortunately I'm going to have to hack something else to make it use that
but, gah, portability. All the world is not a VAX.
timotimo heh.
yeah, portability is fucking hard.
nwc10 yes. But it's not helped if you start on an x86 GNU/Linux system with ELF 09:22
timotimo right.
nwc10 at least x86_64 got a bit more exacting with Position Independant Code
but the rest are utterly forgiving :-(
timotimo the web devs have the right idea with their "mobile first" ideology
nwc10 because the mobile browsers are the most unforgiving? small resources, and lacking features? 09:23
timotimo small screens, no mouse/keyboard
all that, yes
nwc10 nope, you're not going to get MoarVM on AIX because dyncall doesn't support it 09:25
ffi does
timotimo :\
jnthn On the one hand, argh dependencies. On the other - if we'd built it all ourselves, we'd (a) be further behind, and (b) stand a chance of working on even less platforms. 09:27
nwc10 yes, looks like libuv HP/UX will arrive soon 09:31
is dyncall significantly better than ffi?
libffi, that is
anyway, Yaks. Yaks, all the way down 09:34
JimmyZ dyncall supports PS2 and libffi doesn't? 09:38
timotimo it's like someone should build a proper, portable dynamic stuff-calling library or something 09:41
jnthn nwc10: Well, dyncall had (imho) the nicer API and was a bunch easier to make work on Windows... 09:42
moritz or preferably patch the existing ones :-)
nwc10 jnthn: I'm suspicious that the answer is ultimately going to have to be to support both, got get AIX 10:06
jnthn "to get"? 10:07
nwc10 to get MoarVM to work on AIX 10:08
jnthn ah
nwc10 uthash-- # no, __typeof() isn't portable enough
that one might sink HP/UX
jnthn nwc10: There's also one dyncall aptch from Andy for Solaris yet to go in. 10:10
*patch
I meant to get it in before, then bumped to latest dyncall to apply it on top and got issues...
And didn't get around to tracking them down yet. 10:11
nwc10 yay, bodged round that one
jnthn nwc10++ # porting 10:12
nwc10 this is just yak shaving to get a non-gcc non-clang compiler
jnthn (and non-MSVC too :)) 10:18
10:23 tadzik joined
nwc10 right, but I don't have a gmake on HP/UX 10:23
so that Yak is going to have to be nuked
oh, I did. 10:50
but dyncall doesn't support HPPA or Itanium either. So that's, er, useless.
anyway, I might have enough Yaks shaved to actually do the other thing.
why do both MoarVM and nqp have dyncall bundled? 10:57
jnthn nwc10: nqp has it bundled because that's where the Parrot interop was built. 10:58
nwc10 ah OK 10:59
12:51 crab2313 joined
timotimo jnthn: can has moarvm.org commitbit? 13:11
FROGGS timotimo: you wanna optimize it? :P 13:12
jnthn timotimo: sure, moment
probably for less jnthn typos :P
bah, I typed githug instead of github... 13:13
timotimo :) 13:14
moritz -)
s/^/:/
jnthn timotimo: should be done 13:15
timotimo yup 13:21
jnthn Do we want a commit hook for reporting here, or not care
?
timotimo it'd probably be pretty non-noisy, so if it's not much work, go for it 13:22
jnthn Should be set up now 13:33
Guess we find out next time there's a push :) 13:34
nwc10 jnthn: "bother". I can't see a clean way to set a #define that has a space in it, other than create something like a config.h file 13:35
in that, CFLAGS are passed down to the configure script of 3rdparty/libatomic_ops and *it* is choking on stuff with spaces
well, it's that or CFLAGS and "the other CFLAGS" in Makefile.in
jnthn urgh 13:39
nwc10 yes. that's roughly what I thought 13:40
jnthn sometimes forgets that libatomic_ops actually has a .c to build on some platforms.
nwc10 hey, that's still better than the platforms where it's #error 13:41
jnthn On Windows, there's a sufficiently sane interface to all this stuff that it can provide nice mappings to all the things with #define...
True :)
nwc10 anyway, at least one of the third party configure scripts is going to choke, even if that one is "fixed"
anyway, apart from that, I have static inline probing working 13:42
and building the C files
jnthn ooh! :)
nwc10 yes.
jnthn nwc10++
nwc10 $deity knows if it will work first time on Win32, but it does work with IBM and HP's compilers
jnthn Does this mean I have to stop writing macros? ;)
nwc10 even though the libraries don't
not *quite* 13:43
also, there's going to be some fun with header file ordering
jnthn Oh. :(
nwc10 because macros that contain macros don't get confused if the definition order is "wrong"
and macros that are actually doing "macro" things can't go 13:44
but most aren't
timotimo jnthn: you didn't re-upload my moarvm.org changes :P 13:45
jnthn l8r :P 13:47
timotimo k
jnthn I'll just set up an auto-pull thing
So then I can forget it.
timotimo it's just the footer padding change anyway
nwc10 parallel make appears to be bust on FreeBSD :-( 14:21
timotimo 0.19user 0.03system 0:00.23elapsed 99%CPU (0avgtext+0avgdata 89000maxresident)k 14:27
i wonder if this is the result of my partial inlining work?
i don't think i've seen a memory usage for say 1 this low yet 14:29
19584maxresident - nqp-m -e 'say(1)' with partially inlined stuff 14:31
20200maxresident - without 14:32
that's not bad, and it's going to get even better
also, it dips below 0.04 elapsed more often with the branch than without :3 14:34
oh, i was supposed to replace the block with Stmt, not Stmts 14:37
interestingly, that change made say(1) use *more* ram 14:40
jnthn A lot more, or a little more? 14:43
timotimo 19816maxresident
jnthn Stmt in theory, when applied correct, produces better code, but does a little more bookkeeping 14:44
timotimo ah, i didn't know about the bookkeeping parts
well, it'll all change massively again once i figure out how to make poisoning cascade properly :\
jnthn Well, it has to know what locals it should toss
Just a question: you are applying the lowering to param decls as well, yes? 14:45
timotimo shouldn't that info be flattened into the bytecode pretty well, though?
no, i bail out if i see params
how do i handle params properly?
jnthn Oh!!
In NQP, you can :scope('local') a param just fine.
timotimo oh!
jnthn The code-gen does pretty much exactly the same up to the final store. 14:46
timotimo good news :)
this shall probably hit for loops pretty hard, then
oh
jnthn uh, those ain't so simple.
timotimo except if it uses $_, which is dynamic, so i bail out
jnthn Yeah, and also you need to treat for's block as a declaration, really. 14:47
timotimo oh, because they have values, aye?
jnthn Just because of how we code-gen 'em really...
The code-gen expects to invoke. 14:48
timotimo OK
jnthn We can flatten them but it won't fall out of what you're dong.
doing
It needs a little more anayslyis.s
argh
analysis.
timotimo - QAST::Op(decont)Error while compiling op for (source text: "@collisions -> $name {\n unless has_method($target, $name, 1) {\n nqp::die..."): Operation 'for' expects a block as its second operand 14:49
yup :)
jnthn At least it's smart enough to say so :)
timotimo i'm not exactly sure how to figure out in what case i'm touching the block that expects to be the block for a for
except with a contextual
nwc10 jnthn: I mailed the compiler list some patches 15:15
jnthn nwc10: ok, I'll look this evening. 15:16
Thanks.
nwc10 cool. There's technically "no urgency" as I think we ought to wait for Andy D's go-ahead before "stealing" his code verbatim
(the first patch) 15:17
but he's been awake and mailing in the past hour, so that might not take long
timotimo he has no reason to not allow us to use the code, no? 15:18
jnthn negate much? :P 15:19
nwc10 he's contributed patches before. I fully expect him to say yes.
but it's a complete blatant copy, so I thought it polite and appropriate to ask permission
timotimo yeah, that was absolutely right 15:20
jnthn Indeed 15:25
16:11 crab2313 joined
timotimo At Frame 2, Instruction 11, op 'param_rp_o', operand 0, expected MAST::Local, but didn't get one -- not quite sure how i did that :D 16:17
jnthn Congrats :P 16:19
16:20 woolfy left
timotimo sometimes i get too easily discouraged, i find. 16:31
jnthn Well, some things we do here are genuinely tricky. 16:32
I certainly don't nail everything first time, and I certainly do run into bugs that get in the way and need fixing. 16:33
timotimo heh.
yeah, in this case it's just that i'd have to rethink the way i store the information for both poisoning and transformation in the case of not poisoned lexicals
at the moment i have a stack of hashes that go from name of lexical to a list of QAST::Var instances that need to be changed 16:34
and whenever i find a lexical be used deeper down than it ought to, i delete that key out of the hash
i might have to carry around a second hash that goes from name of lexical to deepest nested use and decrement all the values for all the used lexicals whenever i inline 16:35
FROGGS I've not hit a single bug when working on v5 :P
timotimo i bet you didn't :)
17:54 frodwith joined 18:02 tgt joined 18:36 jnap joined 18:40 benabik joined 19:03 FROGGS joined 19:50 benabik joined 19:51 lizmat joined 19:57 woolfy joined 21:38 eternaleye joined 21:51 woolfy left 22:08 cognominal joined 22:09 eternaleye joined 22:50 ashleydev joined 23:05 eternaleye joined 23:09 d4l3k_ joined 23:14 jnap joined