samcv yeah if you build with clang i'm guessing you may get the same thing though 00:00
MasterDuke clang version 4.0.0-1ubuntu1 (tags/RELEASE_400/rc1) 00:03
same with or without _nocheck
samcv i get 1.6894568 with clang and 1.8 on gcc. but if i change to nocheck on clang i get 2.3 seconds
MasterDuke slightly slower in either case than gcc
samcv i have clang 4.0.1 00:04
you seem to have rc1?
mine says clang version 4.0.1 (tags/RELEASE_401/final)
hm
MasterDuke afk for a bit, but might be able to check on my arch linux machine afterward (using kubuntu 17.04 on this laptop)
samcv ok cool
i'm using: 00:17
my $a = slurp "tolstoy.txt"; use nqp; my $t1 = now; nqp::index($a, "abdiicate") for ^400; say now - $t1
where that txt is found here www.gutenberg.org/files/2600/2600-0.txt
doing it 400 times i get ~5 vs ~7. when you get back run that test and let me know
00:31 lizmat joined
MasterDuke on the laptop, with clang, that exact test gives ~10.2s for regular, 7.0s for _nocheck 00:32
on the laptop, with gcc, that exact test gives ~8.9s for regular, 7.4s for _nocheck 00:35
now trying on the desktop
on the desktop, with gcc, that exact test gives ~9.6s for regular, 9.5s for _nocheck 00:40
on the desktop, with clang, that exact test gives ~10.6s for regular, 10.7s for _nocheck 00:43
clang version 4.0.1 (tags/RELEASE_401/final)
gcc version 7.1.1 20170630 (GCC) 00:44
samcv: so it looks like _nocheck ranges from no speedup to 30% faster, depending on hardware and compiler 00:45
samcv yeah
that's still insane how much slower it is at times :\
MasterDuke it was never really slower for me 00:48
samcv yeah maybe i got it backwards my bad 00:49
but regardless it shouldn't make *that* much of a differenec for a 3+MB file
:\
oh well
maybe it's not always inlining properly or something?
MasterDuke heh, it's pretty small, i'd hope there's no problem inlining it 00:54
samcv not sure why else it would have such a difference in speed 00:59
MasterDuke no idea here 01:02
samcv clang says it is a mild hint to the compiler 01:05
i mean that's the same in gcc. they just make different choices i guess hm
that's what i'm guessing at least
well in configure.pl it detects clang as gcc. not sure how relevant that is 01:08
01:31 lizmat joined 01:52 ilbot3 joined
samcv on this test i'm getting 7.9163688 for clang and 11 seconds for gcc 02:24
only difference is --compiler flag
it's 13.75 before my grapheme caching change though. but still annoying i don't see as much improvement 02:27
and most people use gcc
03:51 sivoais joined 06:02 stmuk joined 06:13 unicodable6 joined
Geth MoarVM/master: 8 commits pushed by (Samantha McVey)++ 06:17
06:33 travis-ci joined
travis-ci MoarVM build errored. Samantha McVey 'Merge pull request #661 from samcv/grapheme_iterator_cached 06:33
travis-ci.org/MoarVM/MoarVM/builds/271568505 github.com/MoarVM/MoarVM/compare/d...998d5896b5
06:33 travis-ci left 06:59 brrt joined
brrt .tell nine not sure what is your intention with the SAVE_RV node, but i think | mov TMP6, R12 is suspscious, as iirc R!2 == TMP5 07:11
yoleaux brrt: I'll pass your message to nine.
brrt also, WORK[arg.v.i64], why?
i should be saying though, very cool work :-) 07:12
oh, i see 07:13
there's two more sane strategies you could us
*use
one, allocate an extra register (functionality for that exist in guess-which-branch); two; use the 'args' space for your frame to allocate the temporary 07:14
nine brrt: the intent of SAVE_RV is to move the return value into a callee saved register, so it will survive the call to MVM_gc_mark_thread_unblocked that I have to do between calling the function and boxing the return value
yoleaux 07:11Z <brrt> nine: not sure what is your intention with the SAVE_RV node, but i think | mov TMP6, R12 is suspscious, as iirc R!2 == TMP5
brrt (e.g. see what unless_i do)
TMP12 is not callee-saved
(or is it?) 07:15
r12
let me think before i say something silly
nine In the best case MVM_gc_mark_thread_unblocked doesn't even use r12 and thus we don't have to access memory at all.
brrt no, i think you're right
nine It is according to the comments :)
line 25
Written by a Bart Wiegmans. No idea how much he knows about JITs ;) 07:16
brrt not that much
depending on when it was written :-P
okay, right
r12 is callee saved, i renember now, that's conveniently uniform between windows and posix 07:17
giving that, you have a minor issue in your code :-P
you forgot the other part of callee-saved 07:18
nine which is?
brrt you have to save it for your caller
so in the function prologue/epilogue, your're going to need to store it
nine oooh
That kinda makes sense 07:19
brrt hmmā€¦. now that i know what you want it for, if it is really just that short storage, you might be better of using the stack
nine Which means that I cannot save memory access at all by that
brrt we have ample stack space left for a pointer
and you can use a .define to define a symbolic represetnation of the stack position 07:20
nine Can I just use good old fashioned push/pop for that? Haven't seen that in JIT code so far
brrt you can but apparently on some (windows) platforms the official ABI is to have stack frames 16-byte-aligned 07:21
don't ask me why, and in fact i don't think it is practically required
as in, everything just works if you disregard it
other than that minor nitpick, do whatever feels natural :-) 07:22
nine++ for digging into this
nine Cool :) Thanks for those hints! 07:26
brrt np 07:38
samcv brrt, is there a way to compare code for a specific function 07:39
because i want to debug why gcc is like 20% slower on the KMP function
brrt it can be done, yes
i suppose you'd instruct objdump
samcv do you know how to do that? 07:40
brrt not offhand, no
you can basically just say gobjdump -d your_file.o 07:45
and it will prefix the symbols with the correct function names
it's generally useful
08:02 leont joined 08:08 zakharyas joined 08:17 robertle joined
samcv hm 08:21
brrt yeah, that's less useful than you might want 08:37
jnthn morning o/
brrt good hi jnthn 08:47
jnthn, re: COPY_ARRAY; a MVM_STATIC_INLINE couldn't take over the type implicitly 08:48
i could introduce a MVM_VECTOR_COPY, but i'd have to convert the array pointers to 'full' MVM_VECTOR structures, which means that we are storing the allocated size uselessly 08:49
(maybe a macro MVM_VECTOR_SIZE would be handy)
other than that, i agree with pretty much all your comments :-) 08:52
jnthn brrt: Yeah, just commented; I missed that detail 08:53
lizmat jnthn: something from perl6-users: can we rely on the main thread always having thread ID 1 ? 08:58
09:08 Skarsnik joined
jnthn lizmat: Umm...so far as VM-internal IDs go, presumably. For the native IDs, that'd be OS-specific and probably "no" 09:10
Also I'm not sure you can portably assume it across backends
brrt what about a method 'is-starting-thread' 09:11
jnthn Just store it somewhere and === it I guess :)
my $main-thread = $*THREAD; at startup
lizmat ok
thanks!
jnthn That'd be more robust/portable. 09:12
jnthn wonders why somebody wishes to do this :)
lizmat yeah, trying to figure that out as well :-)
brrt i'm going to be presumptive, and say, probably to do something in a react block 09:13
conditionally on the main thread
btw, i recently got my hands on 'Learning Perl' 09:21
and read the preface
it said 'Perl is an easy language to use, and a hard language to learn'
and i thought to myself
that pretty much explained the fate of perl in the last 20 years 09:22
Geth MoarVM/jit-legacy-cleanup: 19 commits pushed by (Bart Wiegmans)++
review: github.com/MoarVM/MoarVM/compare/2...b150b63d57
09:23
09:53 Geth joined
Geth MoarVM/jit-legacy-cleanup: 84f70712b9 | (Bart Wiegmans)++ | src/jit/compile.c
Move size check into COPY_ARRAY

Is duplicated, so why not embed it, and make the code simpler.
10:00
brrt jnthn, if no objections, i'm going to merge jit-legacy-cleanup :-) 10:17
jnthn brrt: All my comments are dealt with? :)
brrt i think so
jnthn Looks like it to me 10:18
+1
brrt (all systems go!)
re: the move of the sequence number from jit code to spesh, i'm not 100% positive, but should we be adding it to the spesh candidate, or to the spesh graph 10:19
i'm thinking candidate, but am i correct in thinking that the candidate is produced before the graph? 10:20
Geth MoarVM/master: 29 commits pushed by (Bart Wiegmans)++
review: github.com/MoarVM/MoarVM/compare/4...19caf7da3b
10:25
jnthn Not any more
The candidate is now produced after code-gen time 10:26
But before JIT
brrt hmmmm 10:35
what would be the right place to assign a sequence number?
jnthn brrt: What's the purpose of the sequence number? 10:36
brrt to uniquely identify specific frames by time-of-specifalization (i.e. only when blocking)
so that you can have a spesh-bisect similar to jit-bisect
jnthn But...we already have that feature? 10:37
MVM_SPESH_LIMIT
brrt do we? 10:40
how do you do that without sequence numbers?
or well, i see how you would
jnthn There's a global count of how many frames we spesh'd
Well, actually, how many specializations we produced 10:41
brrt hmmm 10:42
so to build a bisect based on that would actually be really simple
10:44 travis-ci joined
travis-ci MoarVM build passed. Bart Wiegmans 'Merge pull request #669 from MoarVM/jit-legacy-cleanup 10:44
travis-ci.org/MoarVM/MoarVM/builds/271630723 github.com/MoarVM/MoarVM/compare/4...caf7da3b32
10:44 travis-ci left
jnthn samcv: Dunno if this warning means anything to you: 11:00
src/strings/unicode.c:73800:78: warning: unknown escape sequence: '\X' {"KEYCAP: 6",342},{"KEYCAP: 7",343},{"KEYCAP: 8",344},{"KEYCAP: 9",345},{"KEYCAP: \X{23}",346},
samcv not really i can fix it temporarily. i mean that is KEYCAP: #
which never worked anyway
11:02 brrt joined
jnthn Think I've figured out rt.perl.org/Ticket/Display.html?id=131961 11:04
samcv oh nice
also did you see the issue in moarvm/moarvm i opened about it requesting the same bytes forever
jnthn No
samcv well it requests 0 bytes for infinity for certain utf8 files
that are missing bytes at the end of the file 11:05
we hypothesized it kept asking for more since it expected more, but there was no more in th efile
so it just repeated forever
jnthn Hmm 11:06
Probably not a bug at MoarVM level
But rather in the Perl 6 I/O code, which is presumably mis-handling zero-length buffers
Or EOF or similar
dogbert17 oh, 131961 is it the Malformed utf8 problem 11:07
jnthn Yeah. I dunno how we'll get a test for it though :P
I mean, I don't really want to commit the huge file :)
I guess a smaller test is possible
dogbert17 I had a smaller golf
jnthn Ah, cool
dogbert17 sec
jnthn Maybe you'd like to do the test? :)
dogbert17 jnthn: irclog.perlgeek.de/moarvm/2017-09-02#i_15107306 11:08
jnthn grrr, DNS resolution failure on irclog 11:09
dogbert17 here's the gist of it:
create a file with this specific code: perl6 -e 'print "a" x (2**20 - 1) ~ "Ā«"' > golf
then run: perl6 -ne '' golf
jnthn ah, cool
Presumably just .lines of the file works too 11:10
dogbert17 probably
[Coke] will be very happy :)
11:11 brrt joined
jnthn yay, got a test that fails before my fix and passes after 11:14
dogbert17++
dogbert17 jnthn++ 11:15
nice SPW talks btw
jnthn :) 11:17
Geth MoarVM: 1dd4486899 | (Jonathan Worthington)++ | src/strings/utf8.c
Correct buffer handling in UTF-8 fast->slow path

When transitioning between the two paths, we could incorrectly mark some bytes that made up part of a codepoint as having been consumed, when in reality we should have left them around for the next buffer.
timotimo fantastic! 11:19
Geth MoarVM: ee06f56f88 | (Samantha McVey)++ | 2 files
UCD: For sequences, convert from \x{ } to the Unicode codepoints

This doesn't affect using "\c[ ]" since names with # were not accessible but it *does* work with .parse-names or with the nqp call directly.
Currently the only thing that uses this is `keycap: #` which uses the \x syntax so that it parses correctly (though previous versions of the file had an actual `#` in there, which is why we didn't have this problem before).
11:24
samcv fixed the unicode thing
ilmari why not just $name =~ s/ \\x \{ ([[:xdigit:]]) \}/chr hex $1/gex;? 11:28
jnthn lunch &
ilmari 1) \d doesn't match a-f, 2) do we really want to decode _multiple_ layers of \x escapes?
brrt (if we don't, will Damian be able to do cool things?) 11:32
ilmari this is parsing Unicode data files, isn't it? 11:35
not damiancrack
brrt Geth didn't show my push 12:02
ilmari which one? 11:25 < Geth> Ā¦ MoarVM/master: 29 commits pushed by (Bart Wiegmans)++ 12:04
(timestamp in UTC+1)
isn't it supposed to detect merges better? 12:05
Skarsnik do I need to patch the jvm backend for github.com/MoarVM/MoarVM/pull/659 ? 12:07
12:14 leont joined 12:39 zakharyas joined 12:49 brrt joined
Geth MoarVM: e0ece7f828 | (Jonathan Worthington)++ | 4 files
Flush standard handles at exit.
12:58
13:01 brrt joined
brrt theres still a bunch of small changes in even-moar-jit to the legacy JIT 13:02
that i somehow missed
timotimo looks like i found the problem that causes different outputs for new and old heap snapshot formats 13:08
dogbert17 jnthn: did you see github.com/MoarVM/MoarVM/issues/653
jnthn Yeah, not yet sure what's going on there 13:09
dogbert17 I can't replicate MasterDuke's findings on my 32 bit box 13:10
13:13 travis-ci joined
travis-ci MoarVM build failed. Jonathan Worthington 'Flush standard handles at exit.' 13:13
travis-ci.org/MoarVM/MoarVM/builds/271676756 github.com/MoarVM/MoarVM/compare/e...ece7f8288a
13:13 travis-ci left
timotimo 100.61user 0.45system 1:08.87elapsed 146%CPU (0avgtext+0avgdata 722380maxresident)k 13:14
> 49.54user 0.51system 0:17.51elapsed 285%CPU (0avgtext+0avgdata 733140maxresident)k
i'm a bit surprised it doesn't change memory usage. that's quite good. 13:15
oh, hold on 13:20
that still has the change that prints all data to a text file
oh, no it doesn't
oh and i guess the first one had precompilation in it 13:21
dogbert17 I often get this when running spectests: 13:24
t/spec/S17-lowlevel/atomic-ops.t .................................. Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 18/28 subtests
timotimo that doesn't sound good 13:25
atomic ops not implemented on 32bit?
dogbert17 dunno, when running the file by itself it always passes
according to spectest something goes wrong with test 11 13:26
timotimo try having some load on your cpu
dogbert17 which is what I have when running the suite 13:27
timotimo time to work on variable-sized entries for collectables and references 13:30
dogbert17 timotimo: got it while under load 13:31
ok 10 - Updated value seen by non-atomic too
A IntLexRef container does not know how to do an atomic load
in block <unit> at repos/rakudo/t/spec/S17-lowlevel/atomic-ops.t line 45
IntLexRefContainer? 13:32
timotimo oh, huh, that's not supposed to happen
dogbert17 :(
13:35 MasterDuke joined
jnthn huh 13:35
Yes it does!
timotimo oh? 13:37
oh, it does know how to do that
not it does supposed to happen
(because grammar)
dogbert17 ah, that's the same error that MasterDuke got in github.com/MoarVM/MoarVM/issues/653 13:38
Geth MoarVM: 4e7821be4b | (Jonathan Worthington)++ | src/io/syncfile.c
Flush output buffer where needed.

This makes :rw and similar modes work out properly, along with ensuring tell gives the right output.
13:41
13:55 Skarsnik_ joined
Geth MoarVM: 6260e6fceb | (Jonathan Worthington)++ | src/io/syncfile.c
Ensure write to unwritable handle fails right off.

This is relied on in Rakudo, since it doesn't try to track modes to the point of doing I/O (which is OK, so long as we behave consistently even when buffering is turned on).
13:56
13:57 Skarsnik__ joined 14:01 Skarsnik_ joined
timotimo hmpf. simplest version of variable-length encoding for collectables compresses it down to 75% size :| 14:04
Geth MoarVM: 41e1b7cef5 | (Jonathan Worthington)++ | 5 files
Don't try and sync when flushing is enough.

At exit we only want to flush our own buffering, not try and fsync or whatever the platform equivalent is.
14:06
14:07 brrt joined 14:09 jdv79 joined
timotimo the references on the other hand benefit vastly 14:11
jdv79 so I was looking into RT#127772. i don't this: github.com/MoarVM/MoarVM/blob/mast...rops.c#L51 14:12
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=127772
jdv79 looks like a useless stat call to me 14:13
jnthn To me also 14:15
Presuming that uv_fs_stat just passes along whatever stat does 14:16
jdv79 the docs suggest so, yes
ok, i'll continue under the assumption that i'm not missing something
thanks
14:22 AlexDaniel joined
timotimo 5637523 24M -rw-r--r--. 1 timo timo 24M Sep 4 16:36 new_format_after_compression 14:37
5637511 45M -rw-r--r--. 1 timo timo 45M Sep 4 16:34 new_format_before_compression
dogbert17 timotimo++ 14:40
timotimo original format is 23 megabytes btw 14:42
jnthn So the new format is larger? 14:43
timotimo a little bit, yeah
14:45 brrt joined
timotimo i can make the collectables chunks shrink down to about 75%, too 14:46
the reason i'm doing all this is to make parsing faster, though 14:47
and it is significantly faster :) 14:51
more than 4x
m: say 36_980_688 / 1_540_862 14:53
camelia 24?
timotimo 24 bits per reference on average 14:54
huh 14:57
m: 15_292_008 / 1_540_862 14:58
camelia WARNINGS for <tmp>:?Useless use of "/" in expression "15_292_008 / 1_540_862" in sink context (line 1)?
timotimo m: say 15_292_008 / 1_540_862
camelia 9.9243203?
timotimo the old format beats the new format significantly with regards to size here
the collectables part is also noticably bigger
what gives o_O
ahahaha 15:03
yeah, the $size-per-reference in the file is the original size pre-compression 15:04
15:04 brrt joined
timotimo 7.6 bytes per entry 15:08
brrt is planning to do some documentation fixes and reopen the PR for even-moar-jit 15:10
timotimo the collectables in the old format have 19.5 bytes per entry 15:13
i think it's 28 in the new format
9.7 chars per entry in the references one 15:15
(vs references in the new format having only 7.6 bytes per entry on average)
jnthn: do you think the size hit is acceptable for the performance gain, or should i put the 75% compression into the collectables section, too? 15:16
the new format seems to compress better. 3.5mb vs 3.2mb 15:17
timotimo BBL
15:37 travis-ci joined
travis-ci MoarVM build errored. Jonathan Worthington 'Don't try and sync when flushing is enough. 15:37
travis-ci.org/MoarVM/MoarVM/builds/271704634 github.com/MoarVM/MoarVM/compare/6...e1b7cef56e
15:37 travis-ci left
Geth MoarVM: 9fdd7b37c9 | (Jonathan Worthington)++ | src/spesh/optimize.c
Remove some dead returns.
15:54
MoarVM: ab8032ebc0 | (Jonathan Worthington)++ | src/spesh/optimize.c
Better if_o/unless_o optimization in some cases.

When the test is for a type object, we would turn it into isconcrete. However, we may in some cases know the answer to that already. Thus, specialize the added isconcrete, and then re-specialize the branch in case we can now eliminate it.
timotimo nice
Geth MoarVM/heapsnapshot_binary_format: fdccbe3381 | (Timo Paulssen)++ | src/profiler/heapsnapshot.c
introduce a binary format for heapsnapshot

it starts with a version identifier to differentiate between the old format and this one. all records except the string heap are fixed sizes and the file ends in a table outlining the sizes of the individual segments.
... (7 more lines)
16:00
MoarVM/heapsnapshot_binary_format: cac6b6d492 | (Timo Paulssen)++ | 7 files
WIP gc_describe functions for new spesh datastructures
MoarVM/heapsnapshot_binary_format: 15fac4b2ed | (Timo Paulssen)++ | src/profiler/heapsnapshot.c
make references variable-length, add halfway to index

this reduces the average size of references entries from 24 bytes to something more like 7.6 bytes on average in one example dataset. The old format took 9.7 chars on average in the same dataset.
the halfway point in the index serves to allow a second thread to start parsing half-way into the blob, which is what allows the new heap snapshot parser to be so fast.
timotimo (rebased on latest master)
not so happy about the commit in the middle, but without parts of that the heap snapshot profiler would crash immediately 16:01
Geth MoarVM: bdw++ created pull request #674:
Merge 'expression' JIT backend
jnthn Hm, it would appear that doing a BB elimiantion pass right after we have deleted a conditional can be quite a win 16:05
As it marks writers dead
And we pick up on that in PHI merges sooner
m: say 1.11 / 1.29 16:07
camelia 0.860465?
timotimo i'd like to have a quick way to read just a single char from a file handle in binary mode; i don't really want to allocate a buf_8 for every one-byte read, so would i have to add a new op?
jnthn Um 16:08
Just read a buf and pick things off it in Perl 6
timotimo that's what i'm doing right now; i created a MyLittleBuffer class that reads in big chunks and then i can .shift off of the buf i get from it
jnthn The buf allocation will probably be swamped by the fact that every call down to the I/O handle acquires a mutex
timotimo hm, that seems fair 16:09
are you +1 on making getc on a binary-mode handle work like .read(1)[0] ?
jnthn Not really...
timotimo OK
jnthn c means char
I'd rather we don't confuse those APIs
Of course you could put the thing in latin-1 mode and ord the char that comes back... :) 16:10
And then enjoy the buffering
timotimo then i'll have to keep a counter around rather than being able to just shift
so i suppose i'll keep my buf and buffer approach 16:11
jnthn About the calc above, somehow I've managed to get 14% off the write a million lines benchmark with the immediate BB cleanup thing I described
timotimo wow
jnthn Well, in combination with what I pushed a moment ago
timotimo is it because we don't iterate to fixpoint?
jnthn I think it may have saved a late-bound can
timotimo cool
jnthn But what that kind of size drop I also start to wonder if we might have pulled say below the inline limit also 16:12
*time drop
timotimo right
jnthn These kinds of things add up
timotimo they sure do 16:13
jnthn Currently doing spesh stressing 16:14
Before I commit this
I wonder if this'll cause wider improvemnets though
Yeah, 70% inlined to 80% inlined 16:19
uh, 85% sorry
timotimo *nice* 16:20
jnthn Now everything inside of say is inlined
In fact, say is the only thing that ain't inlined
Geth MoarVM: dd04dd8094 | (Jonathan Worthington)++ | src/spesh/optimize.c
Do dead BB elimination pass after branch deletion

This means that writers in eliminated basic blocks will be marked dead right away, which in turn means that we'll be able to be more certain in a bunch of PHI merges. The more precise type information can then lead to better downstream optimizations.
In a Perl 6 write a million lines benchmark, as well as the immediate gains this leads to a further inlining, giving 10%-15% time reduction and bringing the benchmark to within 1.2x of Perl 5.
16:24
jnthn m: say 8306128726 / 9554038194 16:30
camelia 0.86938408214?
jnthn Similar sized reduction according to callgrind too
16:31 dogbert2 joined
timotimo i'll need a change in API for the heap snapshot profiler now 16:37
i currently write to a file handle i open right before i write the heap snapshot, but the hll code will want to specify the filename, except the only way to do that would require the filename to be decidde at the beginning of profiling rather than at the end 16:38
jnthn Ah, hmm 16:39
I think maybe we pass a hash of profiling options though?
timotimo right
jnthn So we could send the filename in that way
timotimo any worries about the filename being stolen in between start and finish of the profile run? 16:40
jnthn Not really, I mean it could in theory happen today 16:47
timotimo right 16:48
should i immediately kick out the old format from moarvm and just keep it around in the heapanalyzer? 16:49
jnthn I don't know there's much point having both, if you're confident the new one is working well 16:50
timotimo i should definitely test with more than one snapshot before i do the merge *cough* 16:52
16:54 robertle joined
timotimo hmm, if we have the filename up front already, it would perhaps be an interesting idea to stream out individual heap snapshots and later add the string heap, static frames, types, ... 16:54
jnthn Hmm, of the time that we spend doing the UTF-8 encoding, about 75% of it is in the codepoint iterator 16:55
timotimo: Yeah, that probably makes sense
timotimo in that case i'll have to juggle the sections around
but we might be able to save quite a bit of RSS over long-running programs
jnthn For sure 16:56
17:01 lizmat joined
jnthn dinner & 17:03
timotimo oops, 1.5 GB of heap snapshot
oops, hard drive filled up all the way 17:06
Skarsnik_ lol
timotimo throwing 9 gigs of backup stuff from the laptop to the fileserver 17:18
17:22 travis-ci joined
travis-ci MoarVM build failed. Jonathan Worthington 'Ensure write to unwritable handle fails right off. 17:22
travis-ci.org/MoarVM/MoarVM/builds/271700536 github.com/MoarVM/MoarVM/compare/4...60e6fceb24
17:22 travis-ci left
timotimo jnthn: would it ever be interesting to see what owner each individual collectable has? 17:24
17:55 leont joined 18:00 travis-ci joined
travis-ci MoarVM build passed. Jonathan Worthington 'Better if_o/unless_o optimization in some cases. 18:00
travis-ci.org/MoarVM/MoarVM/builds/271744461 github.com/MoarVM/MoarVM/compare/4...8032ebc055
18:00 travis-ci left 18:12 domidumont joined
timotimo there's still lots of bugs in handling multiple snapshots %) 18:30
18:32 solarbun1y joined 18:35 committable6_ joined 18:43 eater joined 18:48 ilmari[m] joined
timotimo just a copy-pasto, a change to some calculation not needing to factor in a header's size any more, and an off-by-one caught by my little ascii chunk headers 18:56
MasterDuke nice, about done? 18:59
Skarsnik_ should I restart the bots? 19:00
jnthn timotimo: Not really, I don't think 19:02
timotimo thought so 19:04
MasterDuke: nope, still got problems :D 19:08
MasterDuke heh, don't we all... 19:17
19:25 lizmat joined
timotimo while transporting my laptop to the dining room, i hit its edge against the door frame and it rebooted 19:26
MasterDuke hope stuff was backed up! 19:27
timotimo nothing was in peril
19:54 travis-ci joined
travis-ci MoarVM build passed. Jonathan Worthington 'Do dead BB elimination pass after branch deletion 19:54
travis-ci.org/MoarVM/MoarVM/builds/271755550 github.com/MoarVM/MoarVM/compare/a...04dd80945c
19:54 travis-ci left
Geth MoarVM/jit_nativecall: 16 commits pushed by (Stefan Seifert)++
review: github.com/MoarVM/MoarVM/compare/9...520d47068f
20:40
nine rebased it on master and worked in brrt++'s changes to the JIT
lizmat and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2017/09/04/...a-reading/ 20:59
21:17 dogbert2 joined
timotimo oh wow, that was a really bad miss 21:46
i've been grabbing the data from references into a uint8 even though only the first field will fit into that
in the old version
i've been looking for the error in all the wrong places 21:48
now the complete refs table as read by version 1 and version 2 match exactly 22:02
MasterDuke good deal 22:03
timotimo turns splitting back on
let's see if it properly calculates the sizes for both halves to match up 22:04
cool, they still match
the new heap snapshot format just came up smaller than the old one in an example test case 22:15
(i no longer write the kind of reference in a bigger integer since it's at most 2 bits anyway! 22:16
MasterDuke smaller and faster! does it also do julienne fries? 22:24
Geth MoarVM/heapsnapshot_binary_format: af10d049e6 | (Timo Paulssen)++ | src/profiler/heapsnapshot.c
fix accidental truncation of references values
MoarVM/heapsnapshot_binary_format: 7274060bc3 | (Timo Paulssen)++ | src/profiler/heapsnapshot.c
never store ref kind in more than 8 bit

currently there's only 2 bits dedicated to this.
22:24 Ven joined
timotimo 25% time spent in the gc when parsing those snapshots ... not such a great look :) 22:46
23:03 AlexDaniel joined
robertle square 23:04
timotimo MasterDuke: if you want, you can test the latest stuff i pushed to moarvm and the heap analyzer
timotimo goes to bed 23:06
samcv jnthn, how would you feel if for strands we cached a grapheme iterator? that way you could make subsequent calls to the same strand and get much faster access to sequential sections of the strand 23:13
jnthn Everything in MVMString and hanging from it must be immutable 23:42
An iterator is mutable
I'm not sure where else you'd be thinking of caching it
But if it's on MVMString or on a strand within it, then I don't see how that could be done without violating the immutability of strings 23:43
23:44 bisectable6 joined, committable6 joined, nativecallable6 joined, benchable6 joined, coverable6 joined, quotable6 joined, bloatable6 joined, greppable6 joined, unicodable6 joined, releasable6 joined, evalable6 joined, squashable6 joined, statisfiable6 joined
jnthn sleep time here; bbiab :) 23:46