In the next test case all allocations are eliminated with Iterative EA with Parallel GC but failed with G1:
NotScalar (Field load) 42 CheckCastPP === 39 37 [[ 423 295 295 167 167 180 90 90 ]] Oop:TestEA$B:NotNull:exact *,iid=25 !jvms: TestEA::test @ bci:0 (line 12)
>>>> 379 LoadN === 374 169 167 [[ 380 ]] @TestEA$B:BotPTR+12 * [narrow], name=a, idx=6; (does not depend only on test, pinned) Type:narrowoop: TestEA$A:BotPTR * !jvms: TestEA::test @ bci:37 (line 15)
NotScalar (Field load) 42 CheckCastPP === 39 37 [[ 423 295 295 167 167 180 90 90 ]] Oop:TestEA$B:NotNull:exact *,iid=25 !jvms: TestEA::test @ bci:0 (line 12)
>>>> 379 LoadN === 374 169 167 [[ 380 ]] @TestEA$B:BotPTR+12 * [narrow], name=a, idx=6; (does not depend only on test, pinned) Type:narrowoop: TestEA$A:BotPTR * !jvms: TestEA::test @ bci:37 (line 15)
LocalVar(39) NoEscape(NoEscape) -> ArgEscape(NoEscape) escapes as arg to: 402 CallLeaf === 393 1 310 1 1 (380 171 ) [[ 403 404 ]] # write_ref_field_pre_entry void ( java/lang/Object:NotNull *, rawptr:NotNull ) Type:{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address} !jvms: TestEA::test @ bci:37 (line 15)