State of x86_32 port of JEP 425: Virtual Threads (Preview)

Aleksey Shipilev shade at redhat.com
Thu Jun 16 09:09:18 UTC 2022


On 6/15/22 20:26, Ron Pressler wrote:
> Am I right to understand that to mean that the x86-32 port does fully implement the virtual
> threads spec, albeit with the “fake virtual thread” implementation rather than VM continuations?
Yes. Although it is still not clear to me if that implementation even passes JCK.

> The current implementation focused on x64 and aarch64, and it is certainly possible that some
> assumptions about those architectures crept in. Over time, I expect that contributions from
> maintainers of other ports would gradually guide refactoring of the code into a more platform
> independent shape. Of course, any port maintainer who wishes to join the project and participate
> more actively is more than welcome.
Sure, but let me talk about a huge elephant-in-the-room caveat.

I firmly believe port maintainers should not be put into position of deciphering the current Loom 
implementation, guessing the implementation intents, and only then figuring out where those intents 
are broken for a particular port. The porters job is the second part: looking at clean 
implementation, having their "Aha, this code/comment says something that does not hold for my arch" 
moments, and working those out.

The first part is the responsibility of Loom developers: readability, documentation clarity, 
reasonable pre-/post-conditions, extensive verification, etc. I am sure many non-Loom developers 
would lend a helping hand in that. I, for one, contributed a few rewrites already.

But, someone who wrote the original Loom code should take a lead in improving the VM code for much 
easier understanding and clarity. I suspect a lot of finer details about VM code implementation are 
still in the heads of original Loom developers, and such details need to be incorporated in the 
well-structured, well-documented, well-tested code. IMO, that needs to happen before any more 
serious work is done in VM parts, if you want ports to ever catch up, or indeed the whole project to 
succeed.

The fact that even the x86_32 implementation -- that shares a lot of already implemented code with 
x86_64! -- proves hard to implement and debug at the moment, must be quite alarming for any other 
ports work... It worries me a lot, that's for sure.

-- 
Thanks,
-Aleksey



More information about the loom-dev mailing list