00:21 MasterDuke joined
MasterDuke timo: not quite sure what's meant by "size parameters moved into the allocated blob"? 00:23
body->slots and body->ssize would be combined? 00:25
something like `MVMuint64 ssize = (MVMuint64)body->ssize_and_slots` and `*slots = &(body->ssize_and_slots) + sizeof(MVMuint64)`? 00:28
btw, timo++, fixing my silly realloc error
should i PR what i have now? or do it all together? 00:30
01:54 ilbot3 joined 04:56 geekosaur joined 05:05 geekosaur joined 05:07 yoleaux joined 05:51 Skarsnik joined 06:02 Skarsnik_ joined 06:11 brrt joined 06:12 domidumont joined 06:23 domidumont joined 06:26 domidumont joined
brrt good * #moarvm 06:49
nwc10 good *, brrt 06:50
brrt i'm still… puzzling about doing register allocation using dynamic programming
that should be a best-of-both-worlds kind of solution
but, the difficulty is, the dimensional space for spill/no-spill decisions is kind of large 06:51
so what i'd need is a way to 'build' one dimension on top of the other, as it were
also, good * nwc10 06:52
07:34 brrt joined 08:31 robertle_ joined 08:44 brrt joined
jnthn morning o/ 09:02
brrt good hi jnthn 09:05
samcv morning jnthn 09:31
jnthn is continuing with this scheduler adventures 09:32
samcv fun :) 09:42
MasterDuke jnthn: since i believe you are the one who originally suggested it: what's meant by "size parameters moved into the allocated blob"? 10:31
jnthn Today we have start/elems/ssize and then the element data 10:34
The suggest is to store ssize in the same piece of memory as the element data
*suggestion
So that you could then read that pointer *once*
And have a piece of memory and its size 10:35
MasterDuke something like `MVMuint64 ssize = (MVMuint64)body->ssize_and_slots` and `*slots = &(body->ssize_and_slots) + sizeof(MVMuint64)`?
jnthn Yeah, something like that
Though that will throw power-of-2 allocation sizes off some 10:36
MasterDuke what about body->elems? include it also?
jnthn The key thing is that we want to be able to do a single pointer deref
And then never read outside of it
Thus how we can get safety if multiple threads try to mess with the safe VMArray 10:37
*the same
Just freeing the memory at a safepoint ain't quite enough
Because we could still read outside the bounds of that memory in a race 10:38
MasterDuke right, the related question is, when should the *_at_safepoint functions be used?
jnthn We could move elems/start too, but we can't really trust them
We'd probably have to always use them at the moment
ssize is the actual thing that tells us if we're going to read in-bounds or not 10:39
MasterDuke ah, so i should change the code i have now in gc_free to use MVM_fixed_size_free_at_safepoint? 10:40
jnthn Oh
That's the one exception
In gc_free we are at a afepoint 10:41
*at a safepoint
grr, lag
MasterDuke ah. the only other free in VMArray.c is for the repr_data, which i didn't modify at all 10:42
Geth MoarVM: 3c3a52f961 | (Jonathan Worthington)++ | 8 files
Implement getrusage op
jnthn Oh right
But you'll need to safepoint version of realloc
MasterDuke yeah, i added that 10:43
jnthn So that's why there's no other frees needing it; 'cus it's the reallocs that need it :) 10:44
MasterDuke i modified set_size_internal to use my new MVM_fixed_size_realloc, should it be the *_at_safepoint version instead? 10:45
jnthn Yes 10:46
I guess you already took care of this, but the safepoint version of realloc can't delegate to MVM_realloc for overflows 10:47
It really must do the defensive copy
MasterDuke nope, i'll make both those changes
jnthn Cool 10:48
MasterDuke++
10:49 Ven`` joined
MasterDuke should i PR what i have now? or do the ssize+slots thing also? 10:50
jnthn I think separate PR for the FSA changes would be good 10:51
Since it's additive that should be an easy/quick review 10:52
MasterDuke k, will do that once the spectest finishes
jnthn Then maybe one for the switch to use FSA at all for VMArray, and we can merge that after the weekend release
And then another for the step afterwards to make it fully safe 10:53
Geth MoarVM: MasterDuke17++ created pull request #688:
Add MVM_fixed_size_realloc
11:34
MasterDuke ^^^ is a cherry-pick and squash of the commits from my branch i linked earlier that just deal with adding MVM_fixed_size_realloc(_at_safepoint), but don't use them anywhere 11:37
next i'll cherry-pick and squash the commits that use those for the FSA support in VMArray and PR that 11:38
11:50 vendethiel- joined
Geth MoarVM: MasterDuke17++ created pull request #689:
Use FSA in VMArray
12:02
MoarVM: 1e6f4afae5 | (Samantha McVey)++ | src/6model/reprs/MVMHash.c
Init. points as NULL in MVMHash.c & remove a few unneeded vars
12:43
MoarVM: 6971e14524 | (Samantha McVey)++ | 2 files
Add documentation on UCA collation implementation

This is an overview on some aspects of the Unicode Collation Algorithm, as well as details for my implementation of it in MoarVM.
samcv night all o/
lizmat night samcv! 12:48
jnthn o/ samcv++ 12:50
13:03 Ven`` joined 13:43 timo1 joined 14:08 AlexDaniel joined
Geth MoarVM: a5c9c963fc | (Jonathan Worthington)++ | 2 files
Include debug names in some wrong REPR errors
14:51
MoarVM: 4a7248e9ec | (Jonathan Worthington)++ | src/io/asyncsocket.c
MVMROOT the object intended, not an integer

Fixes occasional crashes in async socket servers since the port/host information was added
15:01 Ven`` joined 15:04 Skarsnik joined 15:24 brrt joined 15:35 Skarsnik_ joined
timo ouch, that was my mistake 15:47
16:26 leont joined 16:57 domidumont joined
Geth MoarVM: zoffixznet++ created pull request #690:
Use safer macro formatting
17:33
18:19 zakharyas joined
Geth MoarVM/heapsnapshot_onlymajor_filter: 9154dcce6a | (Timo Paulssen)++ | 2 files
allow heapsnapshot to only record major collections
18:44
MoarVM/heapsnapshot_onlymajor_filter: 48470d57ca | (Timo Paulssen)++ | 2 files
proper is_null check, allow forcing last snapshot
18:47 zakharyas joined
Geth MoarVM/heapsnapshot_onlymajor_filter: f147cf96ff | (Timo Paulssen)++ | src/profiler/heapsnapshot.c
fix compiler warning
18:54
MoarVM/heapsnapshot_onlymajor_filter: e499fcbbbe | (Timo Paulssen)++ | src/profiler/heapsnapshot.c
root some vars while decoding strings into VMStrings
19:08
timo starts a "make a table of all snapshot's summaries" feature and notices that ram isn't quite cheap 19:56
oopsie, exhausting the whole thread pool with awaiting threads when trying to parse multiple snapshots in parallel for this 20:04
completely without guidance this will probably cause catastrophical memory use, too, before the "forget snapshot" function is called even once 20:05
oh, huh 20:06
m: my @foo = do { await start { do for ^10 { my uint64 @ = 1, 2, 3; }.Slip }, start { do for ^10 { my uint64 @ = 1, 2, 3; }.Slip }; }; for @foo -> @pieces { say @pieces.^name }; 20:07
camelia array[uint64]
array[uint64]
array[uint64]
array[uint64]
array[uint64]
array[uint64]
array[uint64]
array[uint64]
array[uint64]
array[uint64]
array[uint64]
array[uint64]
array[uint64]
array[uint64]
array[uint64]
array[uint64]…
timo m: use v6.d.PREVIEW; my @foo = do { await start { do for ^10 { my uint64 @ = 1, 2, 3; }.Slip }, start { do for ^10 { my uint64 @ = 1, 2, 3; }.Slip }; }; for @foo -> @pieces { say @pieces.^name };
camelia Slip
Slip
timo jnthn: ^- i have a feeling this isn't supposed to be like that? 20:08
m: use v6.d.PREVIEW; my @foo = do { await start { do for ^10 { my uint64 @ = 1, 2, 3; }.Slip }, start { do for ^10 { my uint64 @ = 1, 2, 3; }.Slip }; }; for flat @foo -> @pieces { say @pieces.^name };
camelia Slip
Slip
timo m: use v6.d.PREVIEW; my @foo = do { await start { do for ^2 { my uint64 @ = 9, 9; }.Slip }, start { do for ^2 { my uint64 @ = 1, 2; }.Slip }; }; say @foo.perl 20:09
camelia [slip(array[uint64].new(9, 9), array[uint64].new(9, 9)), slip(array[uint64].new(1, 2), array[uint64].new(1, 2))]
timo m: my @foo = do { await start { do for ^2 { my uint64 @ = 9, 9; }.Slip }, start { do for ^2 { my uint64 @ = 1, 2; }.Slip }; }; say @foo.perl
camelia [array[uint64].new(9, 9), array[uint64].new(9, 9), array[uint64].new(1, 2), array[uint64].new(1, 2)]
20:09 eater joined
jnthn timo: Looks interestingish; worth an RT 20:11
timo filed a bug 20:22
Geth MoarVM: 0925bb8f26 | (Samantha McVey)++ | 3 files
Make a few documentation updates for collation/strings
timo perl #132091 20:31
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=132091
timo i ... i think i need to take a heap snapshot of the heap snapshot analyzer ...
cool, it segfaults 20:32
i suppose it's high time i made some soup
MVM_gc_worklist_add(tc, worklist, &(tc->instance->all_scs[sc_idx]->sc)); 20:36
sc_idx is 3020696576 here :D
[Coke] timo: I assume the implicit request on 132091 is that you don't want that change, yes? 21:33
.... ww.
22:11 travis-ci joined
travis-ci MoarVM build failed. Samantha McVey 'Add documentation on UCA collation implementation 22:11
travis-ci.org/MoarVM/MoarVM/builds/275451859 github.com/MoarVM/MoarVM/compare/3...71e1452453
22:11 travis-ci left
samcv travis race 22:12
timo hm, so ... if we properly have an "MVMCollectable common" at the beginning of every single collectable object ... we can totally put a big entry in there that gets declared a red zone when run under valgrind 22:24
Geth MoarVM: 73e4351caf | (Zoffix Znet)++ (committed using GitHub Web editor) | src/6model/reprs/P6bigint.h
Use safer macro formatting

To ensure it works right, regardless of what arg is used
22:28
MoarVM: f042d9eb61 | (Jonathan Worthington)++ (committed using GitHub Web editor) | src/6model/reprs/P6bigint.h
Merge pull request #690 from zoffixznet/patch-1

Use safer macro formatting
timo it explodes no earlier when run under valgrind :\ 22:38
even with gc debug being cranked up to 2