hg: valhalla/valhalla: 8214894: [lworld] Allocation elimination should not be blocked by ValueTypeNodes

Tobias Hartmann tobias.hartmann at oracle.com
Wed Dec 5 17:04:00 UTC 2018


This patch fixes multiple problems:
- IR verification should be enabled even if the calling convention is not supported
- If tests are executed with -Xcomp (and IR verification is disabled anyway), compilation printing
should be disabled to avoid Java heap OOMEs due to extensive test output
- After re-enabling IR matching for test8, I found two additional problems:
  - The meet operation of ciTypeFlow may return an incorrect type if one of the operands is TOP.
Unwrapping of a potentially non-nullable value type should be done after the TOP checks to ensure
that we keep/return nullability information.
  - AllocatedNodes might still have ValueTypeNodes users through the Oop input at the time when
PhaseMacroExpand::can_eliminate_allocation() is executed. This might prevent elimination of an
otherwise dead AllocateNode. The code should set the oop input of ValueType users to Null if the
AllocateNode is removed.

Best regards,

On 05.12.18 18:02, tobias.hartmann at oracle.com wrote:
> Changeset: 3bafd37b0e58
> Author:    thartmann
> Date:      2018-12-05 18:01 +0100
> URL:       http://hg.openjdk.java.net/valhalla/valhalla/rev/3bafd37b0e58
> 8214894: [lworld] Allocation elimination should not be blocked by ValueTypeNodes
> ! src/hotspot/share/ci/ciTypeFlow.cpp
> ! src/hotspot/share/opto/macro.cpp
> ! test/hotspot/jtreg/compiler/valhalla/valuetypes/TestBasicFunctionality.java
> ! test/hotspot/jtreg/compiler/valhalla/valuetypes/ValueTypeTest.java

More information about the valhalla-dev mailing list