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 |