On Friday, 2 September 2016 at 05:19:57 UTC, thedeemon wrote:
On Friday, 2 September 2016 at 03:25:33 UTC, Jeremy DeHaan wrote:
Hi everyone,

I know I'm super late to the party for this, and sorry for that. While my work on the precise GC didn't go as planned, it is closer than it was to be getting merged.

My open PR for the actual inclusion of the precise GC is here:
https://github.com/dlang/druntime/pull/1603

So what's its current state, how is it different from the version Rainer had years ago? Is stack scan precise? Are closures scanned precisely? What about unions?

The version in the pull request is not different from the one Rainer presented at all. It's actually the same one, just updated with what has been changed in druntime recently and my attempts at making the marking phase faster. It isn't any faster, but I didn't realize this due to benchmarking differences on AMD and Intel platforms. I should correct this in the next couple of days and performance can be assessed again.

Scanning the stack would require some support from the compiler. Precisely scanning unions is tricky since they could mix pointer and non pointer types. I'm not sure about closures. If I've done anything with closures I'm not aware of it. I have yet to actually work with the compiler, but in the future I will have to I suppose.

We'd be happy to see some overview of this version, what it does and how it succeeds (or fails).

It is essentially in a similar state that it was when Rainer presented it at DConf2013. I spent a lot of time doing research on techniques to improve its performance and I did start working on a sort of proof of concept for some of these ideas, but implementing it in a cohesive way would have required a lot more than was possible in the GSoC timeframe and it just didn't happen. It's pretty late for me here, but I will definitely explain more about some of these things later. It's essentially stuff that I do on my own time.

Reply via email to