timotimo yeah 00:00
we do have a VMString we're dealing with, though
so not immediately trivial, but not difficult, either 00:01
01:49 ilbot3 joined 03:40 AlexDaniel joined
samcv timotimo, i mean how big are these logs? 04:32
MB
05:58 domidumont joined 06:00 brrt joined
brrt good * #moarvm 06:00
i've been doing moar thinking about the whole set question 06:01
i've considered using binary heaps - not such a good idea, have worst-case O(N) search, and O(log N) add/remove
oh, and O(N log N) merge, which isn't too hot 06:02
sorted arrays - which have the benefits of being cheap, usually, albeit at high algorithmic cost for pretty much every operation, except merge 06:03
06:04 domidumont joined
brrt hash tables - they do pretty well, but i don't like the memory cost of them, and merge is relatively expensive for most implementations 06:04
i'd use a hash table without doubt if this were perl
balancing binary tree also a good possibility, but they're pretty complex, and in terms of algorithmic complexity they don't buy you much in compared to the binary heap 06:11
anyway, because there is a point to this story;
bitmaps look pretty good all of a sudden
the numbers they hold, we never need to enumerate them, but we do need to merge them, and check for existence 06:12
we use consecutive numbers for the live ranges (i.e. or keys), so for most of our code the bitmap is (probably) going to be smallish
i can put that exactly, though 06:13
06:20 domidumont joined
brrt i use 1 bit per bitmap key; i use 32 bytes to represent one as a number (which is admittedly overkill) 06:32
meaning if i 'fill' my sets with 1 key out of 32, i 'win' 06:46
i could reduce the live range number size to 16 bits, probably with impunity, but then i still need to fill on 1/16 06:49
and obviously, bitmaps have O(1) read/update/delete operations, and O(N) union, which is pretty good altogether 06:53
07:13 brrt joined 07:17 brrt joined
stmuk ARM needs --no-telemeh to build 07:18
07:20 brrt1 joined 07:21 brrt joined
stmuk ah that's turned off by default anyway 07:22
samcv stmuk, what ARM platforms has MVM been tested on? 07:52
08:08 zakharyas joined
stmuk well I tried it on a PI3 08:30
in fact the process OOMed right at the end of the build which it didn't previousily so I probably have to add more swap 08:31
(with 2017.04.3 .. I'll try rakudobrew later)
but it looked like it would have completed :)
dogbert17 is building the latest rakudo (with rakudobrew) on an RPi2 atm 08:36
08:37 robertle joined
samcv fun :) 08:52
09:44 zakharyas joined
dogbert17 'This is Rakudo version 2017.04.3-172-gf2af3db built on MoarVM version 2017.04-56-g8ad18b8', now running on my RPi2 10:12
samcv \o/ 10:30
10:36 AlexDaniel joined 10:49 dogbert11 joined 11:01 geekosaur joined 11:07 geekosaur joined
timotimo stmuk: arm shouldn't need --no-telemeh, i'm checking for _WIN32 and _X86 or _X86_64 11:30
stmuk: or is that check wrong?
11:33 ggoebel joined
stmuk it needs it with 2017.04.3 otherwise there is an error 12:15
timotimo what is the error?
stmuk I saw the same as parrot raiser in rt.perl.org/Public/Bug/Display.html?id=131255 12:16
its in the attachement 12:17
timotimo why would --no-telemeh fix that error?
this is about dyncall 12:18
stmuk I don't know .. but it does
timotimo wtf wtf wtf wtf wtf wtf
brrt yeah, it's weird timotimo
timotimo we shouldn't be using the -Werror on our 3rdparty dependencies 12:19
brrt no, but that's a separate problem, innit
timotimo yeah, but that's what's causing the compile failure
brrt although, i guess that's what *would* happen if we make them in the same makefile
i'm thinking, 3rd party dependencies are a pretty good reason for a recursive makefile? 12:20
timotimo i'd advocate only activating -Werror=declaration-after-statement when you pass something like --developer
Zoffix
.oO( developers! developers! developers! developers! )
12:21
jnthn I thought we did delegate to the dyncall makefile to build dyncall?
Yes 12:22
$(CMD)cd 3rdparty/dyncall && ./configure && CC='$(CC)' CFLAGS='$(CFLAGS)' $(MAKE) -f Makefile $(NOOUT)
Oh, but we pass on our CFLAGS 12:23
timotimo that's a bad miss :)
let me see about that
how about CFLAGS for moarvms sourcecode, and THIRDPARTY_CFLAGS for the rest? 12:24
jnthn Given dyncall runs its own configure anyway, why are we doing this at all? 12:25
*that* should pick the appropraite flags, no?
timotimo oh 12:26
probably, yeah
i haven't actually done anything there besides finding out where the stuff comes from, but ... we do keep the CC, right? 12:54
jnthn Yeah, that's probably sensible
It is worth looking at the history though 12:55
12:56 jpg51 joined
timotimo it was pulled in in 2014 by gerdr 12:57
"import new build system"
do you know where that came from?
jnthn No, 'fraid not 12:58
Means we've had it that way for a long, long, time though
timotimo aye
and i'm absolutely puzzled why --no-telemeh would change anything about this
timotimo diffs makefiles to be sure 13:01
13:01 eviltwin_b joined
timotimo okay, the HAVE_TELEMEH symbol really should start with MVM for purity reasons, but that shouldn't change a thing? 13:03
13:10 ggoebel joined 13:14 stmuk joined, hoelzro joined 13:26 hoelzro joined, stmuk joined
Geth MoarVM: samcv++ created pull request #591:
Add can_fit_into_8bit funct, put logic used many places into one funct
14:18
14:34 brrt joined
MasterDuke_ when can you use MVM_fixed_size_alloc vs MVM_malloc? 16:02
if the thing you're allocing will never need to be resized? 16:03
jnthn When, at the time of free, you have the size available
That also
Also it's only really useful when the things you're allocating are fairly small 16:04
Over a certain size it just calls malloc
MasterDuke_ so you can't use it while deserializing a VMArray because of the possibility that what you've deserialized might get resized? since you would know its size at free, right? 16:06
jnthn Well, in theory you could 16:07
But you couldn't use realloc
Actually I've got a planned VMArray refactor that *would* switch to using the FSA, primarily because if we use the free-at-safepoint mechanism then we can avoid various threading issues. 16:08
(Currently you can cause a nasty crash by mis-using VMArray from multiple threads)
MasterDuke_ ah ha, if you're going to work on it i won't bother 16:09
i was just looking at a heaptrack profile of `-e ''` and the top spot for most allocations (double the next, which itself is quadruple the next) is VMArray.c:1119, which is `body->slots.any = MVM_malloc(body->ssize * repr_data->elem_size);` in deserialize 16:12
jnthn Yeah which in turn is from deserializing huge arrays that form NFAs 16:14
timotimo yup. annoyingly we deserialize both the NFA object (containing all the data) and the arrays that describe the NFA (containing the same data in a slightly different format) 16:15
jnthn Yeah 16:16
Well, we sometimes need the other forms, like if you derive the grammar
But we can get them from the NFA packed form
In that (uncommon) case
And let the common case enjoy less memory use and faster startup
timotimo yup, i wrote an op that does that
but i wasn't able to properly change the code so it removes the arrays at one point and re-instates them from the NFA itself at another 16:17
16:33 robertle joined 16:51 domidumont joined 17:53 brrt joined 18:31 AlexDaniel joined 18:36 avar joined 19:10 zakharyas joined 20:23 AlexDani` joined
samcv i'm gonna try building MoarVM on my android phone 22:25
yoleaux 18:48Z <Zoffix> samcv: is bustitude with some ops on docs site known? Like docs.perl6.org/routine/..%5E is a 404 (that's ..^ op)