github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm Set by AlexDaniel on 12 June 2018. |
|||
00:36
Kaiepi left
00:40
committable6 left,
nativecallable6 joined,
statisfiable6 joined,
bisectable6 joined,
greppable6 joined,
committable6 joined
|
|||
Geth | MoarVM/extra-usage-chains-fixes: b1a0fb8301 | (Timo Paulssen)++ | src/spesh/inline.c missing writer setting in inlining (return val boxing) |
01:01 | |
MoarVM/extra-usage-chains-fixes: 31779ab2c6 | (Timo Paulssen)++ | src/spesh/optimize.c Correct writer setting in coercing via elems |
|||
MoarVM/extra-usage-chains-fixes: 6caf14acb1 | (Timo Paulssen)++ | src/spesh/optimize.c (optimize_not_i) this could be wrong but it seems to advance speshing to an optimize_iffy, which i assume came next after this optimize_not_i. |
|||
timotimo | ^- the last commit may want a closer look. feel free to cherry-pick or rebase or straight-up steal the others | ||
still not getting past the first file in nqp | |||
01:29
stmuk_ joined
01:32
stmuk left
01:37
benchable6 joined
03:55
MasterDuke joined
05:04
stmuk joined
05:06
brrt joined
05:07
stmuk_ left
|
|||
brrt | \o | 05:56 | |
06:16
releasable6 joined
06:29
robertle joined
06:44
domidumont joined
06:49
domidumont left
06:50
domidumont joined
|
|||
brrt | what would we think of aliging nursery allocations either at or within a cache line | 07:00 | |
(assuming 64 bytes cache line size) | |||
nwc10 | first question I'd ask is how much "wastage" this rounding would cause? | ||
(I assume that it increases nursury throughput, but is that extra pressure massive?) | |||
actually, second question is "does the increase in cache misses due to using more memory overall cost more than the alignment wins?" | 07:01 | ||
brrt | the answer is 'I don't know' | ||
the reason I'm asking is that I want to figure out how much I can affort to make MVMString larger with an in-situ buffer | |||
nwc10 | OK, but they seem like useful things to estimate | ||
aha. So *it* would always grow to a cache line | 07:02 | ||
and everything else gets the extra space/alignment for free? | |||
brrt | That would be one possible way of doing it, yews | ||
I don't know how many small objects we have, most of them probably are, I think | |||
*afford | 07:03 | ||
nwc10 | OK, I'm not sure if I can add anything more intelligent to this than I'd be curious about those two questions | ||
brrt | It'd probably depend on the size distribution of objects | ||
my guess is that most objects will be smaller than 64 bytes | |||
at most, we're doubling our nursery usage because we'd be leaving 31-byte holes between allocations | 07:04 | ||
oh, hang on, MVMStringBody is 24 bytes, but we have to add the header to that as well | 07:05 | ||
ok, so with everything in it, we have 48 byte string object header | 07:10 | ||
to fill that up to 64 byte, we can still add 16 bytes, giving us a 24 byte string | 07:12 | ||
or, a 6 grapheme string | 07:13 | ||
that would mean most of rakudos keywords etc. would fit in-situ | |||
on the other hand, the fact that our header is 24 byte already, makes it quite unlikely that any objects can share cache lines | 07:19 | ||
07:31
brrt left
07:56
zakharyas joined
07:58
zakharyas left
08:03
dogbert17 left
08:06
benchable6 left
08:07
benchable6 joined,
nativecallable6 left,
statisfiable6 left,
bisectable6 left,
greppable6 left,
committable6 left,
committable6 joined,
greppable6 joined,
bisectable6 joined,
statisfiable6 joined,
nativecallable6 joined
08:08
releasable6 left
08:23
domidumont left,
lizmat joined
08:25
domidumont joined
08:30
AlexDaniel`` joined
|
|||
samcv | when is the --no-jit going to be fixed? would like to bump moar soonish | 09:03 | |
09:05
releasable6 joined
|
|||
nwc10 | samcv: not sure, but we're safe from football-shaped distraction for about 33 hours | 09:05 | |
Geth | MoarVM: 4830f82326 | (Samantha McVey)++ | src/jit/core_templates.expr Add add_I expr JIT template and sort expr templates |
09:10 | |
jnthn | samcv: Not sure how long it will take to fix; the way it breaks gave very few clues. I'll have a got at it later today | 09:21 | |
samcv | okay. thanks | ||
09:22
ilmari left
|
|||
jnthn | *go | 09:22 | |
09:23
ilmari joined,
ilmari left,
ilmari joined
09:28
travis-ci joined
|
|||
travis-ci | MoarVM build failed. Samantha McVey 'Add add_I expr JIT template and sort expr templates' | 09:28 | |
travis-ci.org/MoarVM/MoarVM/builds/401674450 github.com/MoarVM/MoarVM/compare/a...30f823263a | |||
09:28
travis-ci left
09:30
brrt joined
09:41
brrt left
09:43
klapperl joined
|
|||
jnthn | Taking a look at the no-jit issue now | 10:32 | |
Might be deopt related. | 10:35 | ||
The frame it's in when it crashes is also the last one that was reported to have deopted | |||
10:36
zakharyas joined
|
|||
samcv | jnthn: is that related to the appveyor issue too? | 10:40 | |
jnthn | No idea | 10:41 | |
Does it try a --no-jit build? If so possible | |||
(Or if it's a 32-bit build, then yes, because there's no JIT available for that.) | |||
10:41
brrt joined
10:50
AlexDani` joined
10:52
AlexDaniel left
|
|||
Geth | MoarVM: 0e11082046 | (Samantha McVey)++ | 13 files Make a faster HASH_ITER macro and make other hash optimizations HASH_ITER_FAST is faster and it doesn't randomize bucket order (though it's faster regardless of that). Makes the biggest difference when we are iterating a hash with a LOT of keys in it, such as adding a million keys to a hash then deleting and ... (8 more lines) |
10:59 | |
MoarVM: a2ca33bad9 | (Samantha McVey)++ (committed using GitHub Web editor) | 13 files Merge pull request #901 from samcv/iterspeed Make a faster HASH_ITER macro and make other hash optimizations |
|||
MoarVM: caef82f1bd | (Jonathan Worthington)++ | src/spesh/inline.c Correctly update OSR deopt index upon inlining Otherwise, we end up with the wrong index, which leads to overwriting the correct deopt offset with a bogus one. This caused a crash when building NQP with JIT disabled, introduced since we started being able to inline non-specialized code. This wasn't originally noticed, since the JIT doesn't care for those indexes, and so everything worked under JIT, and only failed in the case of running quickened bytecode. |
11:05 | ||
jnthn | samcv: ^^ seems to help, guess Travis will tell us soonish :) | 11:06 | |
lizmat | whee! | ||
samcv | yay | ||
jnthn | lunch time, bbiab | 11:07 | |
brrt | jnthn++ | 11:16 | |
(one line fixes++) | 11:17 | ||
11:27
travis-ci joined
|
|||
travis-ci | MoarVM build passed. Jonathan Worthington 'Correctly update OSR deopt index upon inlining | 11:27 | |
travis-ci.org/MoarVM/MoarVM/builds/401710670 github.com/MoarVM/MoarVM/compare/a...ef82f1bd5a | |||
11:27
travis-ci left
|
|||
samcv | \o/ | 11:31 | |
nwc10 | jnthn++ # a very well earned lunch | 11:32 | |
brrt | first approximation says that for most object types, we can never share a cache line | 11:33 | |
also, that we'd be using nursery space approximately 50% faster | 11:34 | ||
(so that we either need more nursery space or accept more GC) | |||
timotimo | i do believe the nursery size is this size because of l2 cache size? (or l3?) | ||
brrt | that is processor dependent though :-) | 11:35 | |
as in, you buy a more expensive machine, you get more cache | 11:36 | ||
timotimo | mhm | ||
11:51
zakharyas left
11:52
zakharyas joined
|
|||
samcv | brrt: windows appveyor says: src\jit\x64\emit.dasc:2927: error: missing operand size in `mov x?,i?': | 11:59 | |
ci.appveyor.com/project/samcv/moar...3we2x#L442 shows up on 32 and 64bit | 12:00 | ||
brrt | hmmm | 12:01 | |
nwc10 | paste.scsys.co.uk/578897 -- ASAN very very excited by the NQP build - use-after-free everywhere. | 12:02 | |
backtraces have src/6model/reprs/MVMHash.c | |||
lizmat | samcv: ^^^ | 12:03 | |
nwc10 | I *think* that it's that, but now testing the commit before jnthn's last one to be more confident | 12:04 | |
samcv | yeah guessing it's my change | ||
nwc10 | yes, not jnthn's most recent change | ||
in case it matters, I have | 12:05 | ||
+#define FSA_SIZE_DEBUG 1 | |||
and | |||
+#define MVM_ARRAY_CONC_DEBUG 1 | |||
jnthn | Phew, I'm off the hook for once :) | ||
nwc10 | and | 12:06 | |
MVM_SPESH_BLOCKING=1 | |||
MVM_SPESH_NODELAY=1 | |||
samcv: yes, it's commit 0e11082046de74f1c1cb78fda6993b668fe8eca1 | 12:14 | ||
Geth | MoarVM: cb9ddae582 | (Bart Wiegmans)++ | src/jit/x64/emit.dasc [JIT] Add sizes to ARG5/ARG6 memory definitions Otherwise DynASM on windows will rightly complain |
12:19 | |
brrt | samcv++ | ||
jnthn figures he should try and get his Rakudo rescalar branch into mergeable shape before pressing ahead with the du-chain stuff | |||
Geth | MoarVM: 26860430a7 | (Jonathan Worthington)++ | src/core/frame.c Don't leak a real NULL from getcodeobj We should only ever store a VMNull into a register, not a real NULL. |
12:28 | |
jnthn | m: use nqp; say nqp::iscont(item(my %h)) | 12:32 | |
camelia | 1 | ||
timotimo | that sounds like it's the source of these segfaults in guard instructions | 12:34 | |
12:36
travis-ci joined
|
|||
travis-ci | MoarVM build errored. Bart Wiegmans '[JIT] Add sizes to ARG5/ARG6 memory definitions | 12:36 | |
travis-ci.org/MoarVM/MoarVM/builds/401734087 github.com/MoarVM/MoarVM/compare/c...9ddae58238 | |||
12:36
travis-ci left
|
|||
brrt | oh, that is apt hate | 12:39 | |
jnthn | timotimo: Yeah, there were two crashing tests in rescalar thanks to that | 12:42 | |
timotimo | i think i also saw it in profiling related crashes | 12:44 | |
jnthn: i took the liberty to make an edit in your callwith/callsame example; you appear to have copy-pasto'd 42 in the second example instead of 4.2 | 12:45 | ||
only in the "cando" case, not the actual call example directly below it | 12:46 | ||
jnthn | timotimo: ah, thanks :) | 12:48 | |
13:14
zakharyas left
|
|||
samcv | nwc10: ok i figured out the asan errors | 13:37 | |
nwc10 | \o/ (I hope) | ||
samcv | well i fixed that issue. now i have a different one :P | ||
ah probably because i didn't change uthash.h i just edited it into that file. | 13:38 | ||
Geth | MoarVM: ed7ab67735 | (Samantha McVey)++ | src/strings/uthash.h Fix asan errors by assigning before assigning hh_next It worked fine most of the time, just had issues when you tried to free the entries while iterating. If you tried to free what held the next reference ASAN would complain, and would likely cause issues in the future. |
13:48 | |
MoarVM: c42255f865 | (Samantha McVey)++ | src/math/grisu.c Use a macro for unsigned long long on MSVC Before we were just ignoring the warning with a pragma. I thought I read that older MSVC's didn't support it, while newer will warn, but regardless, use the format MSVC wants. |
13:50 | ||
brrt | samcv++ (this has bitten me 100 times) | 13:51 | |
samcv | brrt: what did you end up doing? | 13:52 | |
also i was thinking of making MVM_C_CONSTANT_I32 since Unsigned is different size on linux than windows | |||
brrt | not the unsinged long thing, although I've fixed that with ... some other header | 13:54 | |
samcv | wonder do we check the size of long's and int's? | ||
oh which thing? | |||
the asan messages? | |||
brrt | yeah | 13:55 | |
samcv | sorry :P | ||
brrt | :-) | ||
it happens when you write C | |||
samcv | i tested it heavily, though less heavily with ones that free'd objects | ||
so i tested it all, then ended up changing almost all of them | |||
brrt | .oO( I wonder why they call C 'insecure' ) |
||
nwc10 | samcv: looks good. build ongoing | ||
brrt | one of my existential worries is that I'm writing C and ... in the future no-one will | ||
nwc10 | previosly there was an explosion of multicoloured pavement pizza within a few seconds | 13:56 | |
All tests successful. | 13:59 | ||
samcv | brrt: so you think there's a header file that defines ULL for windows? or what. | ||
wasn't sure you could define suffixes with macros | |||
Geth | MoarVM: cae4731e2c | (Carl Masak)++ | docs/bytecode.markdown Fix typo |
14:02 | |
brrt | hmm, i thougth that'd be stdint | 14:15 | |
(hey, masak lives ;-)) | |||
samcv: stdint.h has macros for sized integer constants | 14:42 | ||
in src/core/bitmap.h i'm using that for example to get an usigned 64 bit '1' | |||
UINT64_C(x); you could have the same for UINT32_C | 14:48 | ||
Redfoxmoon | one of my existential worries is that I'm writing C and ... in the future no-one will <-- no matter the amount of hipster languages, that will never change :P | 14:49 | |
samcv | brrt: oh nice | 14:50 | |
brrt | Redfoxnoon: I don't know | 14:51 | |
I would've thought C was 'stable' in place for a couple more years. But 'security' is becoming more and more important | 14:52 | ||
Redfoxmoon | *for sure* | ||
You can write secure C code | |||
brrt | but people don't | ||
Redfoxmoon | so? | ||
you can write shit code with hipster languages too... | |||
brrt | and learning to write secure C code is so vastly different from learning to write perl code | ||
or java code or even from c++ code | 14:53 | ||
14:53
dogbert17 joined
|
|||
brrt | substitute 'secure' with 'good' and it's still true | 14:53 | |
Redfoxmoon | :P | ||
but you still need C to write the bedrock for the new hipster languages | |||
brrt | you kind of don't | ||
Redfoxmoon | I don't exactly see perl becoming a true compiled language just yet. | 14:54 | |
timotimo | yeah, wouldn't they self-host? | ||
brrt | writing an assember isn't that hard of a job | ||
Redfoxmoon | :P | ||
timotimo | "it's too hard to write secure C, so we decided to write assembly instead" | ||
brrt | Redfoxnoon: no (although I'd like to have it :-)) | ||
a self-hosting language would need an assembler at some point | |||
Redfoxmoon | I'd like moarvm to not use any perl5 crap first | ||
:-) | |||
something-something native windows port | 14:55 | ||
timotimo | crap? that's not a nice thing to say. | ||
Redfoxmoon | perl5 is an ungodly mess :/ | ||
It's even worse when you're dealing with a PE target where you can't have undefined references at link time | 14:56 | ||
timotimo | what is PE? | ||
i knew it once | 14:57 | ||
Redfoxmoon | The executable format used by win32 on Windows :P | ||
timotimo | oh, i knew that | 14:58 | |
i thought it was something more general | |||
Redfoxmoon | so yeah. | ||
I wanted to add moarvm to midipix, a new posix layer for windows, but as our perl5 port is currently broken due to PE versus ELF issues | 14:59 | ||
that's impossible:-) | |||
brrt | Redfoxnoon: I happen to like perl5 | ||
Redfoxmoon | perl5 is an okay language, the reference implementation is not | ||
brrt | have you tried Perlito :-) | 15:00 | |
Redfoxmoon | I dare say it's horrible | ||
isn't that dead | |||
brrt | anyway, can the perl 5 porters folks help you | ||
well, not really | |||
Redfoxmoon | I asked, but since we're using perl-cross to build the thing -at all- | ||
I don't think they're gonna be willing to put any serious effort in. | |||
brrt | hmmm | ||
anyway, I can't speak for that | 15:01 | ||
having perl5 as a build-time dependency is something we've discussed | |||
dogbert17 | turns out that brrt's objprimunsigned fix managed to resolve github.com/MoarVM/MoarVM/issues/890 | ||
Redfoxmoon | cross compilation with the default build system for perl5 is...bad:-) | ||
it basically requires an SSH server on the target to run tests on. | |||
brrt | dogbert17: yay! | ||
timotimo | how else are you supposed to test, though | 15:02 | |
brrt | (don't run tests then?) | ||
Redfoxmoon | :') | ||
dogbert17 | brrt, will make a comment to that effect and close it | ||
brrt | ty | 15:03 | |
Redfoxmoon | Yeah I wish. | ||
jnthn | Anyone know any reason not to bump MOAR_REVISION in NQP at present? | ||
lizmat doesn't | 15:04 | ||
and would welcome one | |||
Redfoxmoon | it might be doable to manually feed in *EVERYTHING* it needs to test for in the default build system for perl5 needs | ||
but then there's still the PE versus ELF issue | |||
lizmat | jnthn: want me to do it ? | ||
jnthn | lizmat: No, already got it done, just wanted to ask before pushing :) | 15:05 | |
lizmat | okidoki | ||
jnthn | I did a SEGV fix earlier than is depended on by the rescalar branch | 15:07 | |
dogbert17 | I believe that we're problem free atm (famous last words) | ||
jnthn | Well, certainly the problem free() was fixed by samcv++ :) | 15:08 | |
dogbert17 | I'll rebuild and try to break it but I suspect that nwc10 has already found everything of note :) | 15:10 | |
15:10
brrt left
|
|||
timotimo | jnthn: will we be using the results from du-chains to fix spesh usage counts on master before the release and merge du-chains after the release? | 15:11 | |
jnthn | No, because the API for mainpulating spesh usage counts changes with it | 15:13 | |
I think we'll be able to get it fixed up and merged this week | |||
timotimo | i meant not the code but the knowledge about missing places for usage calc | ||
but that's fine, too :) | 15:14 | ||
lizmat | that brings test-t below 2 seconds for me | 15:15 | |
timotimo | what was it before? | ||
lizmat | just above it | ||
timotimo | OK, so not likely going to get tux below 2, too ;) | ||
lizmat | I don't think so, but below 2.2 would be possible, I think | 15:16 | |
jnthn | lizmat: Which "that"? | ||
lizmat | your MoarVM bump | ||
jnthn | ah :) | ||
lizmat | well, we'll know shortly, I guess | ||
jnthn: your last merge commit seems to have made things slower, is that to be expected ? | 15:22 | ||
timotimo | by how much? | ||
jnthn | lizmat: It's not surprisng. | 15:23 | |
I've still a list of things to tune | |||
lizmat | .930 -> .965 for test-t --race | ||
jnthn | m: say .930 / .965 | 15:24 | |
lizmat | also: memory use for building seems to top out at 1.24G atm, not sure what it was before | ||
camelia | 0.963731 | ||
jnthn | I didn't yet put in optimizations for hash auto-viv, nor Nil assignment | 15:25 | |
Those could easily account for something | |||
lizmat | ok... so one step back to be able to take N steps forward | ||
:-) | |||
timotimo | hopefully NĀ² or better :P | ||
lizmat | hmmm... noise | ||
now I got a test-t run of .908 | 15:26 | ||
which would make it better than before | |||
grrr | |||
jnthn | Yes. The change here is to provide a path to doing various other important things, so much as the immediate win. | ||
heh :) | |||
The -20 ones are perhaps less noisy | |||
I figure I'll focus on the du-chains stuff next, then return to more opts for the Scalar stuff after | 15:29 | ||
Geth | MoarVM/du-chains-and-opts: 8e63146013 | (Timo Paulssen)++ (committed by Jonathan Worthington) | src/spesh/inline.c missing writer setting in inlining (return val boxing) |
15:35 | |
MoarVM/du-chains-and-opts: c1cc62679d | (Timo Paulssen)++ (committed by Jonathan Worthington) | src/spesh/optimize.c Correct writer setting in coercing via elems |
|||
15:45
zakharyas joined
|
|||
Geth | MoarVM/du-chains-and-opts: baa7f66947 | (Timo Paulssen)++ (committed by Jonathan Worthington) | src/spesh/optimize.c Fix optimization of isfalse to set writer |
15:48 | |
jnthn | timotimo: Took first two as is, third with corrections. Thanks! | ||
Geth | MoarVM/du-chains-and-opts: 23ecdc5a76 | (Jonathan Worthington)++ | src/spesh/usages.c Add check that all readers in DU chain are present This makes sure that we don't have any reads that are not represented in the users list. |
15:54 | |
15:59
domidumont left
16:20
domidumont joined
|
|||
Geth | MoarVM/du-chains-and-opts: 59fc280ce3 | (Jonathan Worthington)++ | src/spesh/usages.c Ensure a big PHI can't cause an overflow |
16:28 | |
MoarVM/du-chains-and-opts: 0ef24ff9f0 | (Jonathan Worthington)++ | 2 files Correct various missing usage bumps |
|||
MoarVM/du-chains-and-opts: 673a8a2734 | (Jonathan Worthington)++ | src/spesh/optimize.c Don't do the usage validation so often It's rather costly, and slows things down a good bit too much to do it after each processed instruction. |
|||
MoarVM/du-chains-and-opts: b558cc9e25 | (Jonathan Worthington)++ | src/spesh/args.c Fix spesh arg box writer/usage handling |
16:34 | ||
jnthn | Damn, the usage checks are slow :) | ||
But it's getting a lot further now :) | |||
Oh, it's doing them every BB | |||
Geth | MoarVM/du-chains-and-opts: 11fcf2a85e | (Jonathan Worthington)++ | src/spesh/optimize.c Check usages one after main opts Checking it after every basic block is too much of a slowdown, now that we get quite far with the checks enabled. |
16:43 | |
jnthn | With MVM_SPESH_BLOCKING=1 on, that branch now reaches the NQP test suite and fails 2 tests | ||
Will do it under NODELAY after fixing that, to tease out some more issues | |||
And once that lot is working, will write the third check, which is making sure that there's no bogus entries in the usage list | 16:44 | ||
cooking & | 16:46 | ||
16:59
zakharyas left
17:17
brrt joined
|
|||
[Coke] misreads BB as "big blind" | 17:21 | ||
yoleaux | 16:48Z <Zoffix> [Coke]: sent you an email about my grant | ||
17:24
AlexDani` is now known as AlexDaniel
17:56
brrt left
18:02
MasterDuke left
18:54
domidumont left
19:24
domidumont joined,
AlexDaniel left
19:25
domidumont left
|
|||
lizmat | And another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2018/07/09/...to-perl-6/ | 20:17 | |
moritz | lizmat++ | 20:33 | |
20:51
MasterDuke joined
21:27
MasterDuke left
|
|||
samcv | lizmat++ | 21:27 | |
21:29
MasterDuke joined
21:36
brrt joined
|
|||
brrt | I have a mad plan | 21:49 | |
I want to make MoarVM fork()-safe | |||
I'm fairly sure this is possible | 21:50 | ||
jnthn | *sob* | 21:56 | |
I...really? :) | |||
brrt | why the cry? | 21:57 | |
jnthn | I suspect it's technically possible but...at what cost? | ||
brrt | of leveraging completely unrelated functionality, of course | ||
we already have a gc sync point mechanism, don't we | |||
so, we can ask nicely for all threads to join up, and provided they're not infinitely looping in nativecall, eventually they will | 21:58 | ||
when that happens, the fork-ing thread either has to stop, or pause, the uv loop thread and spesh thread | 21:59 | ||
jnthn | The thread pool scheduler is by a bunch of threads waiting on a condvar | ||
brrt | better still | 22:00 | |
jnthn | And never willingly exits | ||
Of course to some degree we control the execution | |||
But still, locks, threads waiting for locks, etc. | |||
brrt | again, provided no deadlock happens | ||
and i'm not saying this mechanism isn't about to be very expensive | 22:01 | ||
timotimo | one way to kill threads is to send a task over that throws a specific exception to stop the work loop | ||
brrt | i'm fine with ridculously expensive mechanisms | ||
(yes, or maybe some simpler sentinel value) | 22:02 | ||
what i'm not entirely at ease with, is telling people that the only concurrency mechanism we give is a thread | |||
there is more than one way to do it, etc | 22:03 | ||
Geth | MoarVM/du-chains-and-opts: 2f88d0e249 | (Jonathan Worthington)++ | src/spesh/plugin.c Set writers on spesh plugin getattr code-gen |
||
brrt | so yeah, I think there'll be a cost, but that cost would only be payed by a user who actually forks() | 22:06 | |
*paid | 22:07 | ||
i'd be happy already if nothing came out of it but a way to run ASAN-clean without MVM_SPESH_BLOCKING | 22:11 | ||
i.e. that allocations in the spesh thread would not be considered leaks | |||
MasterDuke | it'd also be nice if --full-cleanup worked | 22:14 | |
brrt | yes :-) | 22:15 | |
TimToady | +1 to making impossible things merely difficult | 22:19 | |
as long as no implementors are tormented in the process...oh wait... | 22:20 | ||
brrt | hehe | ||
I'm not saying it'll be a smashing success | |||
in all likelihood it won't | |||
TimToady | for some p5 shops, fork is a poor-man's deployment mechanism where a process is being used as a container | 22:22 | |
so a mess of forks at the beginning, then steady state | 22:23 | ||
this might help such a shop | |||
jnthn | It may. Note that precomp is also done via async proc spawning, which isn't a problem if you installed all modules properly | 22:24 | |
But it's not quite as simple as "if the user didn't themselves spawn a thread then fork() is OK", because both Rakudo and MoarVM internally make use of threads. | |||
TimToady | well, just thinking about how they migrate their current million-line P5 program piecemeal to P6 | ||
jnthn | s/But/So | ||
But if we can make it survive the usages of threads in MoarVM and Rakudo that the user doesn't themselves cause, we may well be able to do it. | 22:25 | ||
Heck, the precomp thing could even use a fresh scheduler and then tell it to kill its threads after. | 22:26 | ||
That only leaves the spesh thread and the VM event loop thread | |||
brrt | I think that's doable, yes, and more ambitiously i'd ask the question 'do we want the user to specify if we want to restore their thraeds' | ||
but that is maybe a bit too much madness | |||
jnthn | It is, and also this may end up with us having to build our own locks. | ||
Which other things might force on us anyway. | |||
brrt | hmmm | ||
jnthn | (The JVM does that.) | ||
brrt | fair enough. didn't think so much ahead about locks tbh | 22:27 | |
jnthn | Ah, but that's what makes this hard :) | ||
They provide a "park" mechanism | |||
When you have that then you can interupt a bunch more threads that you otherwise could not. | |||
TimToady refrains from making a pun on channels and locks | |||
jnthn | :D | 22:28 | |
brrt | i'm too nonenglish to see a pun, so i'm missing it :-) | 22:31 | |
anyway, /me -> sleep | |||
i'll think about it some more :-) | |||
jnthn | .oO( The pun, for the fork thing? :P ) |
22:32 | |
*or | 22:33 | ||
jnthn wrote the third bit of the DU chain checker, now that we're almost working with the other one | |||
Which checks if we have uses left in the chain that don't show in the graph | |||
timotimo | i.e. a user (instruction) that has been removed from the next/prev links of the instructions themselves but is still in the users list? | 22:34 | |
jnthn | Or an instruction where the operand changed but we didn't delete the usage first | ||
Basically, all the places we mis-manage usage decrements and so might keep an instruction alive when we needn't | |||
timotimo | good | ||
jnthn | reading sp_getarg_o of 0(2) not in graph | 22:35 | |
That's fascinating, given the instruction writes r0(2) :P | |||
22:36
brrt left
22:41
AlexDaniel joined
|
|||
lizmat | m: { say "foo" } # this Block is run because it is sunk, is it not ? | 22:42 | |
camelia | foo | ||
jnthn | oh, duh, I got the diagnostic output wrong, it's a PHI that was doing the reading... | 22:44 | |
lizmat | m: say .file ~ ":" ~ .line with Block.can("sink")[0] # but the Block.sink is Mu.sink, which doesn't do anything | 22:45 | |
camelia | SETTING::src/core/Mu.pm6:13 | ||
lizmat | so I guess bare blocks are codegenned differently ? | 22:46 | |
jnthn | Yes, it's a compile-time decision | 22:48 | |
In circumfix:sym<{ }> iirc | |||
MasterDuke | while people are around, anybody have thoughts/comments on my tuple of PRs to rename nqp::getstrfromname? | 22:49 | |
lizmat | +1 from me | ||
Geth | MoarVM/du-chains-and-opts: 901ccf7692 | (Jonathan Worthington)++ | src/spesh/manipulate.c Instruction deletion should delete usage, not add Thinko found while looking into unexpectedly leftover instruction usages in the graph. |
22:50 | |
jnthn | oh, fascinating, a PHI can have the same register in it twice?! | 22:52 | |
MasterDuke | one things that's missing, but impossible to add ahead of time as far as i know, is MoarVM and NQP bumps in the NQP and Rakudo PRs respectively | ||
timotimo | oh, yeah | 22:53 | |
it does that a bunch of times | |||
i tried to fix that at some point by reducing the registers in the phi to be one per version | |||
jnthn | Guess there's a sensible-ish reason | ||
Anyway, it's a one line change for my error detector to cope with it | |||
timotimo | that's good | 22:54 | |
i also had the fun situation where a phi with only two arguments was in there, and removing it made things asplode :) | |||
jnthn | Now the detector throws up a non-PHI issue :) | 22:55 | |
MoarVM oops: Malformed DU chain: reading goto of 16(6) not in graph | |||
I bet that's something rewritten into a goto without decrementing the usage of the conditional instruction :) | 22:56 | ||
timotimo | probably | ||
should be easy to find, info.*get_op.*goto | |||
Geth | MoarVM/du-chains-and-opts: 59b6fe6b20 | (Jonathan Worthington)++ | 2 files Add detection of missing usage deletions So that we can find out where we have uses of values that are not in the graph, but still listed in the DU chain. This means we didn't properly delete the usage, and so might keep alive an instruction we could otherwise delete. |
22:58 | |
MasterDuke | jnthn++ just compiling rakudo now after pulling your recent merge and stage parse is definitely a second or three faster | 23:00 | |
Geth | MoarVM/du-chains-and-opts: 31a1ee85d8 | (Jonathan Worthington)++ | 2 files Fix various missing operand use deletions |
23:13 | |
jnthn | MasterDuke: Nice :-) | ||
Calling it a night. More usage mess-up hunting tomorrow. :) | 23:18 | ||
23:26
releasable6 left,
greppable6 left,
bisectable6 left,
statisfiable6 left,
nativecallable6 left,
benchable6 left
23:27
benchable6 joined,
statisfiable6 joined,
bisectable6 joined,
nativecallable6 joined,
greppable6 joined,
releasable6 joined,
committable6 left
|
|||
MasterDuke | timotimo: did you ever find any optimizations for install-core-dist.pl? | 23:32 | |
timotimo | i don't think my efforts went anywhere :S | 23:33 | |
though it's most likely i just got distracted too early |