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) |