On Thu, 22 Oct 2020 20:35:29 GMT, Richard Reingruber <[email protected]> wrote:
>> The following test cases try to provoke VMOutOfMemoryException during object
>> reallocation because of JVMTI PopFrame / ForceEarlyReturn:
>>
>> EAPopFrameNotInlinedReallocFailure
>> EAPopInlinedMethodWithScalarReplacedObjectsReallocFailure
>> EAForceEarlyReturnOfInlinedMethodWithScalarReplacedObjectsReallocFailure
>>
>> For ZGC (so far) this is not 100% reliable.
>>
>> Just ignoring the runs where the expected OOME was not raised was not
>> accepted.
>>
>> Summary of the now accepted solution:
>>
>> - The 3 problematic test cases are skipped if ZGC is selected.
>>
>> - They are also skipped if no OOME during object reallocation can be
>> expected because allocations are not eliminated.
>>
>> - In consumeAllMemory, as a last step, empty LinkedList nodes are created
>> without long array to fill up small blocks of free memory.
>>
>> - EATests.java is removed from the problem list for ZGC.
>
> Richard Reingruber has updated the pull request with a new target base due to
> a merge or a rebase. The incremental webrev excludes the unrelated changes
> brought in by the merge/rebase. The pull request contains four additional
> commits since the last revision:
>
> - Skip test cases expecting OOMEs if running with ZGC.
> - Merge branch 'master' into JDK-8255072-eatests-oom-not-thrown
> - Make OOME more reliable and skip test cases if it is not expected because
> scalar replacement is disabled
> - 8255072: [TESTBUG] com/sun/jdi/EATests.java should not fail if expected
> VMOutOfMemoryException is not thrown
Hi Richard,
It looks good to me.
One nit:
public static final boolean DoEscapeAnalysis =
unbox(WB.getBooleanVMFlag("DoEscapeAnalysis"), UseJVMCICompiler);
public static final boolean EliminateAllocations =
unbox(WB.getBooleanVMFlag("EliminateAllocations"), UseJVMCICompiler); // read
by debugger
public static final boolean DeoptimizeObjectsALot =
WB.getBooleanVMFlag("DeoptimizeObjectsALot"); // read by
debugger
public static final long BiasedLockingBulkRebiasThreshold =
WB.getIntxVMFlag("BiasedLockingBulkRebiasThreshold");
public static final long BiasedLockingBulkRevokeThreshold =
WB.getIntxVMFlag("BiasedLockingBulkRevokeThreshold");
+ public static final boolean ZGCIsSelected = GC.Z.isSelected();
There are unneeded spaces before '=' sign.
Thanks,
Serguei
-------------
Marked as reviewed by sspitsyn (Reviewer).
PR: https://git.openjdk.java.net/jdk/pull/775