Please review the following patch which adds virtual thread support for the 
value class calling convention. Most of the changes are needed to handle 
extended frames, i.e c1 or c2 frames that use more stack space for arguments 
than the stack space allocated by the caller. These include changes in freeze 
and thaw code, plus changes in the stackChunk walking code where we now need a 
similar repair of the caller sp as in the current sender code. In this case 
though, we only adjust _unextended_sp and keep the value of _sp. This is 
because frames are walked without a full RegisterMap, but we still need to be 
able to access the saved fp in the callee for gc purposes. The remaining 
changes deal with saving and restoring the extra return registers when calling 
thaw.

Thanks to Tobias for working on the initial changes and for providing the very 
useful new test TestVirtualThreads.java, included in this PR, which has been 
great for catching many bugs. I also run the changes with the 
valhalla-comp-stress job in mach5. It uncovered a couple of extra failures in 
TestVirtualThreads.java, but I was able to reproduce them with platform threads 
as well (8367151 and 8367258). I also added extra testing for value classes in 
existing test Fuzz.java which has proven very useful too.

Thanks,
Patricio

-------------

Commit messages:
 - v1

Changes: https://git.openjdk.org/valhalla/pull/1556/files
  Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=1556&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8336845
  Stats: 1443 lines in 25 files changed: 1304 ins; 57 del; 82 mod
  Patch: https://git.openjdk.org/valhalla/pull/1556.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/1556/head:pull/1556

PR: https://git.openjdk.org/valhalla/pull/1556

Reply via email to