raydiak can someone check this out for me when they have a chance, and give me feedback and/or merge it? github.com/MoarVM/MoarVM/pull/172 05:40
FROGGS[mobile] looks good to me... 05:47
though, cant merge it atm :/ 05:48
raydiak thanks; mostly wanted to make sure it looked sane, C isn't a strong suit of mine so I just kind dug in and blindly poked :) 05:49
*kind of
FROGGS[mobile] I'd say it is perfect unless there is a hidden off-by-one that I dont spot that early 05:51
raydiak heh no big deal, someone will figure it out after some tests flap for a few months 05:54
arnsholt raydiak: Looks sane to me. Indeed, IIRC that's something the Parrot code already does. 09:20
raydiak oh good, haven't look at that one...checked out jvm but it's a bit overwhelming at this hour, wasn't sure where initialization happens or how to memset in java 09:22
arnsholt Yeah, the JVM code is very different
For Moar the Parrot version is the one to look at
raydiak well moar was nice and clean and I was lucky to see examples of doing almost exactly what I want to copy, didn't have to look at much else 09:24
if it's a CArray of CArrays, will elem_size equal sizeof(MVMObject *)? if so there's 2 duplicate consts in there I can fix 09:26
raydiak I see sizeof(void *) on line 55, so maybe not...or is the size of all pointers the same? why does it use void instead of MVMObject there anyway? 09:31
arnsholt I'm not sure in the absolute general case (weird architectures and such), but pointers are generally all the same size 09:57
nwc10 agree, and I doubt that libuv is yet ported to any of them. (if we can even find any these days) 10:00
jnthn I looked at the PR and didn't see any obvious problems.
timotimo o/ jnthn 10:38
how's today? :)
lizmat timotimo: jnthn is flying to Brussels atm 10:41
timotimo ah
well, i hope his flight is comfortable and on time :)
lizmat probably no connectivity on the plane
lizmat too
FROGGS IIRC he will be here at 1pm 10:42
FROGGS is in room 36 10:43
rurban_ on intel exist near, far and huge pointer sizes, for the linkers there exist tiny, small, medium compact, large or huge segments. on current architectures there only exists flat memory models, with huge pointers. on the jit level it might be optimized to smaller pointers. eg. in v8. but not in moar 11:41
e.g. en.wikipedia.org/wiki/X86_memory_segmentation 11:42
brrt yeah, moar jit treats all pointers as huge (8 byte) 13:49
lgtm too. i can probably merge it from here 13:50
timotimo is there performance to gain from using smaller pointers?
brrt on new machines i doubt that 13:53
but iirc you can use it to hack values and pointers in the same quadword 13:54
although i dont know the details and could well be wrong 13:55
btw i won't be at fosdem this year. dying pet situation :-( 13:56
github app doesnt allow me to merge 13:59
dalek arVM: 83c68df | raydiak++ | src/6model/reprs/CArray.c:
Zero-fill CArrays
14:02
arVM: 8e8539e | raydiak++ | src/6model/reprs/CArray.c:
Minor oversight, use an available const
arVM: 2cb9656 | brrt++ | src/6model/reprs/CArray.c:
Merge pull request #172 from raydiak/master

Zero-fill CArrays
brrt but webapp does 14:03
afk. have fun all
rurban_ brrt: have you looked into nan-tagged double's to represent unboxed numbers and everything else, like v8 does? I'm not sure yet if it's worthwhile 15:24
brrt rurban_: i have not. but i do think that's what i meant; i don't know if this has anything to do with pointer size distinction 15:32
it is in general much easier just to use huge pointers; moreover the nan-pointer distinction that v8 uses is more useful in 32 bit (i believe), and more useful yet if your primary number type is a floating point 15:33
as it is in javascript and as it isn't in perl6
if we'd have some certainty on small integers 15:34
rurban_ yes, they do arith with doubles only, only if the type inferencer proves it's an int, it will change it to int 15:35
same as lua also
one problem is that jo (jump overflow) i.e,. auto-promotion int->bigint/double is only available in jit 15:36
brrt 'proves it is an int' - that's interesting 15:37
rurban_ if array index or loop counter e.g.
brrt ah i see
especially if 'hidden'
hmm
rurban_ mozilla has a video online about their nashorn vm, which does the same
brrt ok, now i get what was meant with the 'small bigint jit path' 15:38
oh, care to share? :-)
rurban_ uh, not mozilla, oracle it is
JimmyZ can't follow you 15:39
rurban_ It was in Strange Loop last year...
www.youtube.com/watch?v=KKaHkkpdHxg 15:40
thestrangeloop.com/sessions/nashor...vm-in-2014
I still have to find a good description of nan-tagging in v8 15:41
brrt ever since i've seen pypy i've been pretty sceptic of the idea of a 'reusable dynamic language implementers toolkit' 15:42
:-) 15:43
but it's interesting at least
'like llvm, but for dynamic languages on the jvm' 15:44
rurban_ well, they'd need a MOP to do that. The problem for parrot also is the different object systems it has to support 15:45
brrt fwiw, i now do know a really good reason not to use LLVM for the moarvm JIT
rurban_ perl6-like roles, perl5 like classes+objects, js-like prototypes, ...
brrt oh, yes; and think about the primitives
(won't somebody please think about the primitives!) 15:46
JimmyZ what's the really good reason?
rurban_ I wont use it for C++ and its size
brrt llvm is, upon further examination, neither really close to moarvm nor to the metal
(llvm ir)
and the goal is to write a simple-and-efficient bridge between moarvm and the metal 15:47
rurban_ they only benefit would be the post-ir optimizations for the native backend
JimmyZ dynasm is good enough :P
brrt but for that, you'd need to use the llvm ir; and llvm ir doesn't map well to moarvm at all
rurban_ but the hard part are the pre-ir optimizations, e.g. on types, objects, constant folding, ...
JimmyZ rurban_: we have rakudo-v5 on moarvm
rurban_ I know 15:48
brrt well, that's what i have jnthn++ for
he does the hard parts
i take the glory
:-P
rurban_ With roles or generics you can easily simulate classes
JimmyZ I took the LHF :P
rurban_: parrot should know what should be in core, what should be out of core 15:49
well or plugin
rurban_ parrot doesn't cannot call methods properly yet 15:50
brrt plugins on a vm?
rurban_ neither does it do multis or roles properly
JimmyZ yeah, like rakudo ops
rakudo container
brrt i see 15:51
JimmyZ and 6model on parrot
6model is not in parrot's core :P
rurban_ 6model on parrot is a long way to go still
First I tried to get performance out of it, undo all the damage from the last 6 years
JimmyZ yeah, i saw the irclog, someone don't like 6model in core when it was developed 15:52
brrt rurban_++ for doing a thankless but valuable job 15:53
rurban_ but it needs to be in core. something betetr than 6model even, a dynamic MOP. 6 model is too specialized on perl6
JimmyZ rurban_: I still think whiteknight's gist of parrot goal is good
brrt afk
JimmyZ :P
rurban_ we need to abstract the dispatch model and the object model, and offer fast paths to the most common ones. 15:54
we still hardcode everything to class/object/undef
... and default 15:55
JimmyZ well, you need to make parrot popular, then let the people improve it. unless it will be dead before you find better things than 6model :P 15:56
rurban_ I only do parrot, because I need the same threading model for my own vm :) 15:57
which is way better than moar
but no threads yet
JimmyZ yeah, but if you leave parrot before it's popular? 15:58
rurban_ It's still easy to maintain it 15:59
problem is finding time to extend it
JimmyZ who want to continure maintain a things that after 20 years' maitain, it still nobody use it 16:00
rurban_ we will see
JimmyZ :P
rurban_ same as with perl5. internally horrible, but still usable from time to time 16:01
JimmyZ It's always better let it in core , until you find another better one than current better one 16:02
perl5 has many users...
parrot doesn't 16:03
rurban_ yep 16:09
jnthn points out that MoarVM doesn't have a clue what a class or a role are, and doesn't need to. 16:10
JimmyZ yeah, the 6model itself never knows what class/role is 16:14
rurban_: we also have a toy php/ruby compiler on 6model :P 16:18
raydiak would we be able to nativecast from CArray by just adding a similar-looking else block for it at github.com/MoarVM/MoarVM/blob/d235...all.c#L914 ? 23:14
or is that an intentional omission because of some other surrounding complexity I'mm unaware of?
*I'm
FROGGS raydiak: no intend... casting from CArray should work out 23:44
raydiak thanks...I went ahead and gave it a shot, but now trying to use the pointer w/memset via zavolaj gives me a segfault 23:46
FROGGS hmmm, I am too tired right now :o( 23:47
FROGGS I'll look into it tomorrow in case you gist something 23:47
raydiak no problem, I appreciate your help :) I'll make a gist if I don't figure it out 23:48