C2 support for value type arrays
tobias.hartmann at oracle.com
Mon Jan 9 14:17:07 UTC 2017
please review the following change which adds C2 support for value type arrays:
This is a prototype implementation that still lacks some functionality and contains known problems (see below). I would still like to push this to allow others (e.g., Roland) to continue for as long as I'm busy with JDK 9 bugs.
Here's the TODO list:
- Re-enable "hsize is pre-rounded" assert in graphKit.cpp (currently fails)
- Re-enable "no mismatched stores" assert in memnode.cpp (currently fails)
- Enable and fix VT array part of deopt test (test20) with flattening
- Enable and fix VT array part of OSR test (test23) with flattening
- Add match rules to test45
- Enable set_complete_with_arraycopy() in ValueTypeNode::store_to_memory(), this currently breaks test21
- Add range checks to value type array accesses
- Improve escape analysis with value type arrays. For example, there should be no allocation for test46
- I had to change the match rules of test9 because only 3 stores were found with my changes. We need to fix this.
- Add support for multi-dimensional value type arrays (multivnewarray)
The implementation includes the alias analysis quick-fix that Roland found when looking at an earlier prototype (thanks again!).
The ValueTypeTestBench passes. I've also run some non-VT tests for sanity.
More information about the valhalla-dev