github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
00:02 sena_kun joined 00:04 Altai-man_ left 02:01 Altai-man_ joined 02:04 sena_kun left 04:02 sena_kun joined 04:04 Altai-man_ left
nwc10 good *, #moarvm 05:22
06:01 Altai-man_ joined 06:04 sena_kun left 07:29 zakharyas joined 08:03 sena_kun joined 08:04 Altai-man_ left
jnthn morning o/ 09:19
moritz \jnthn 09:21
nwc10 \o
moritz (there are now vowels in jnthn, so adding an o seems wrong) :D
10:02 Altai-man_ joined 10:04 sena_kun left 11:02 squashable6 joined 11:36 zakharyas left 12:03 sena_kun joined 12:04 Altai-man_ left 12:48 zakharyas joined 12:59 AlexDani` left 14:01 Altai-man_ joined 14:04 sena_kun left 14:45 AlexDani` joined, AlexDani` is now known as AlexDaniel 14:46 AlexDaniel left, AlexDaniel joined
Geth MoarVM/hash-cleanup-MVP: 39 commits pushed by (Nicholas Clark)++
review: github.com/MoarVM/MoarVM/compare/2...436250eca1
14:58
nwc10 from the department for "I can't believe it doesn't SEGV"
it's not just "It compiles; ship it"
but it's not done yet. 14:59
jnthn: that still has those assert in it. I've not cleaned them up yet.
jnthn That and The Pain! 15:02
nwc10 I rebased that commit to HEAD
it was about 37
and likely to get lost
jnthn cleanup slight undersells what this branch does :) 15:03
nwc10 er 15:04
jnthn *slightly
nwc10 most of it is getting to the good place
last 2 commits are the reasonable part
turned out that I didnb't have lvalue_fetch implemented in the new thing yet
so need to do that
so
1) lvalue fetch
2) iterators
3) randomisation
and then
it's probably good to consider merging 15:05
but there are a couple more optimisations that could go in
also, much of the earlier commits in it (right up to the ones that take randmoisation *out*) could be reiviewed and cherry-picked right now.
if we think that this is a good direction.
15:09 dogbert17 left 15:10 Kaeipi joined, patrickb joined 15:13 vesper joined 15:14 elcaro_ joined, vesper11 left, [Coke]_ joined, [Coke]_ left, [Coke]_ joined, dogbert17 joined 15:17 synthmeat joined
nwc10 (what you don't have there is the development code and its regression tests. Which have a bit more stuff implemented that's not yet ported) 15:23
anyway, works on "my" machine, and my machine 15:24
we run on both kinds of OS - debian and raspbrian. (er, oh, Raspberry Pi OS, or whatever it rebranded to)
samcv: and that's why I've been asking all these stupid questions :-) 15:43
lizmat: and that's why I don't want to rewrite ucd2c.pl
lizmat hmmm... not sure what the reason is 15:44
nwc10 39 commits down, still have a few more to create 15:45
completely reworking the hash code
lizmat because reworking the hash code is more useful ? 15:47
nwc10 we'll see when we get to the point of benchmarking it
but I think that it already halves the memory overhead
(the memory the hash structures need. the deadweight) 15:48
lizmat that would be way cool
moritz I think regex captures would *really* benefit from the way that some javascript compilers optimize hashes 15:49
jnthn nwc10: This also, iiuc, gets us to it being a single blob of memory for the table, no linked lists, etc?
15:49 nebuchadnezzar joined
lizmat moritz: and how is that ? 15:49
moritz that is, they create anonymous classes with attributes that correspond to the keys
nwc10 jnthn: yes, but right now it's using two so that ASAN can hate me more.
moritz so that they get a very compact storage for precisely the current hash 15:50
jnthn Two blobs?
lizmat moritz: so implicit pseudo-hashes under the hood :-)
nwc10 yes
moritz lizmat: right
and in regexes, the combinations of keys in those matches would probably be pretty low
jnthn This should help a lot with the whole concurrent hash abuse crasehs too.
*crashes
nwc10 jnthn: yes, there are two malloc() calls right next to each other. It's trivial to replace them with 1 malloc() call (would actually be a call to the FSA) and then calcuate the sceond ponter.
jnthn OK, nice 15:51
nwc10 jnthn: sadly I think not. because open adress hashes move elements around when they insert or delete elements.
jnthn And then when we're using the FSA we can do the whole free at safepoint dance, and yay, safety :)
nwc10: We don't have to give correct answers. We just have to not SEGV.
nwc10 so any inserts on thread A will move things around for thread B's reader
jnthn That's fine so long as they don't read outside of the memory block, though? 15:52
nwc10 we will SEGV. I managed to make the hash fsck code SEGV by having inconsistent shapes
jnthn Ah, darn.
nwc10 yes, probably darn
lets get to Minimum Viable Product
and then see what else can be optimised/improved
it doesn't yet do everything that the current code does.
jnthn Yeah. I think this design is certainly more likley to be fixable than the previous one. 15:53
Though maybe at a slight cost
16:03 sena_kun joined 16:04 Altai-man_ left 17:26 zakharyas left 17:37 patrickb left 17:40 patrickb joined 18:02 Altai-man_ joined 18:05 sena_kun left 18:56 Merfont joined 18:57 Kaeipi left 19:11 zakharyas joined 19:29 MasterDuke joined 19:30 [Coke]_ is now known as [Coke] 20:02 sena_kun joined 20:05 Altai-man_ left 20:25 zakharyas left 21:00 MasterDuke left
Geth MoarVM/hash-cleanup-MVP: 5 commits pushed by (Nicholas Clark)++ 21:07
nwc10 a bug fix - utter daftness with the bucket shift, exposed by trying to build the new code on arm
(Which has different semantics for shifting by an amount larger than the size of the integer)
IIRC it's all undefined behaviour. I certainly wasn't meanign to do it 21:08
and ptr_hash_table.h etc is now the new fangled thing.
21:57 [Coke] left 22:01 Altai-man_ joined 22:05 sena_kun left 22:35 [Coke] joined 22:37 squashable6 left 22:41 squashable6 joined 23:12 patrickb left 23:30 AlexDaniel left 23:51 AlexDaniel joined, AlexDaniel left, AlexDaniel joined