First step toward LW2

Frederic Parain frederic.parain at
Tue Nov 20 21:21:39 UTC 2018


The following patch that has just been pushed to the valhalla repo is the
first step of the transition of the JVM from LW1 to LW2:

This initial set of changes include:
  - adding back support for Q-signatures
  - removing support for the ValueTypes attribute (value types are now
    discovered by recognizing Q-signatures in field descriptors and
    method signatures)
  - removing of value types consistency checks (not needed anymore)
  - removing support for the ACC_FLATTENABLE access flag *in class files*,
    flattenable fields are now identified from their Q-signature, but
    ACC_FLATTENABLE is still used in the JVM as an internal access flag
  - updating tests to use the new .box and .val syntax in Java instead of the
    __Flattenable and __NotFlattened keywords.

These changes have been done in coordination with the latest set of changes
Srikanth pushed to javac. For now, it is required to specify -XDemitQtypes
when compiling code using value types (this mode might become the default
soon, and the option won’t be needed anymore).

What is *not* in this changeset:
  - support of Q-signatures in instanceof and checkcast
  - support for Q-signature in anew array
  - adding a secondary mirror for Q-types

Re-introducing Q-types also re-introduced using the T_VALUETYPE BasicType
in many places. This should have break the JIT calling convention which 
was using T_VALUETYPE as a marker.
There’re still some issues with the bytecodes API (not sure it can be fixed
before the secondary mirror is implemented).

The repo should still build on all usual platforms of this project, but 9 tests
are now failing because they need more serious changes, either in the
JVM, in the libraries they use or in the way they are written.

Note that the verifier is currently disabled, it also needs some fixes before
accepting the new classifies.

Particular thanks to Srikanth for his work on javac and his flexibility when
our requirement for the transition were not as well defined as they should have been.



More information about the valhalla-dev mailing list