RFR(S): 8243670: Unexpected test result caused by C2 MergeMemNode::Ideal
Yangfei (Felix)
felix.yang at huawei.com
Mon Jun 29 13:41:22 UTC 2020
Hi,
> -----Original Message-----
> From: Tobias Hartmann [mailto:tobias.hartmann at oracle.com]
> Sent: Thursday, June 25, 2020 9:08 PM
> To: Yangfei (Felix) <felix.yang at huawei.com>; Roland Westrelin
> <rwestrel at redhat.com>; hotspot-compiler-dev at openjdk.java.net
> Cc: guoge (A) <guoge1 at huawei.com>; zhouyong (V)
> <zhouyong44 at huawei.com>
> Subject: Re: RFR(S): 8243670: Unexpected test result caused by C2
> MergeMemNode::Ideal
>
> Hi Felix,
>
> On 24.06.20 05:24, Yangfei (Felix) wrote:
> > I updated accordingly, new webrev:
> http://cr.openjdk.java.net/~fyang/8243670/webrev.02
>
> Looks good to me but isn't the MergeMemNode::Ideal transformation
> useless now?
I added some extra code to check if we still have a chance to replace equivalent phis in MergeMemNode::Ideal.
diff -r 6ad5fd9a52df src/hotspot/share/opto/memnode.cpp
--- a/src/hotspot/share/opto/memnode.cpp Mon Jun 29 12:28:55 2020 +0000
+++ b/src/hotspot/share/opto/memnode.cpp Mon Jun 29 21:32:27 2020 +0800
@@ -4615,6 +4615,12 @@
}
if (phi_mem != NULL) {
// equivalent phi nodes; revert to the def
+
+ tty->print("====>\n");
+ this->dump();
+ new_mem->dump();
+ new_base->dump();
+
new_mem = new_base;
}
}
Looks like we missed doing PhiNode::Identity for some phis from the dump of doing a slowdebug build.
I am still looking into it. Thoughts?
Part of the dump looks like:
====>
511 MergeMem === _ 1 1602 1599 1 1 1 1 1 1 1 1 95 [[ 1258 ]] { N1599:rawptr:BotPTR - - - - - - - - N95:java/util/HashMap$Node+24 * [narrow] } Memory: @BotPTR *+bot, idx=Bot; !jvms: HashMap::putVal @ bci:91
1599 Phi === 1589 95 95 [[ 1287 1277 1301 1269 1309 1299 1312 511 ]] #memory Memory: @rawptr:BotPTR, idx=Raw; !orig=[1223],[943] !jvms: HashMap::putVal @ bci:209
1602 Phi === 1589 95 95 [[ 1315 1278 1350 1389 1395 1247 1401 511 ]] #memory Memory: @BotPTR *+bot, idx=Bot; !orig=[943] !jvms: HashMap::putVal @ bci:209
====>
502 MergeMem === _ 1 1733 1730 1 1 1 1 1 1 1 1 95 [[ 1322 ]] { N1730:rawptr:BotPTR - - - - - - - - N95:java/util/HashMap$Node+24 * [narrow] } Memory: @BotPTR *+bot, idx=Bot; !jvms: HashMap::putVal @ bci:81
1730 Phi === 1720 95 95 [[ 1351 1341 1365 1333 1373 1363 1376 502 ]] #memory Memory: @rawptr:BotPTR, idx=Raw; !orig=[1287],[974] !jvms: HashMap::putVal @ bci:209
1733 Phi === 1720 95 95 [[ 1379 1342 1414 1453 1459 1311 1465 502 ]] #memory Memory: @BotPTR *+bot, idx=Bot; !orig=[974] !jvms: HashMap::putVal @ bci:209
====>
7843 MergeMem === _ 1 7778 7779 7794 1 7781 1 7828 1 1 1 1 1 1 1 1 1 1 1 7783 7784 [[ 7848 ]] { N7779:rawptr:BotPTR N7794:jdk/internal/org/objectweb/asm/Frame+18 * - N7781:jdk/internal/org/objectweb/asm/Frame+36 * [narrow] - N7828:int[int:>=0]:exact+any * - - - - - - - - - - - N7783:java/lang/Object * N7784:java/lang/Object+8 * [narrowklass] } Memory: @BotPTR *+bot, idx=Bot; !jvms: Frame::push @ bci:94 Frame::execute @ bci:1409
7783 Phi === 7509 7773 7 [[ 7843 7797 8094 7814 ]] #memory Memory: @java/lang/Object *, idx=20; !jvms: Frame::push @ bci:60 Frame::execute @ bci:1409
7778 Phi === 7509 7773 7 [[ 8089 7797 7855 7814 7871 7830 7839 7843 7872 ]] #memory Memory: @BotPTR *+bot, idx=Bot; !jvms: Frame::push @ bci:60 Frame::execute @ bci:1409
====>
7843 MergeMem === _ 1 7778 7779 7794 1 7781 1 7828 1 1 1 1 1 1 1 1 1 1 1 1 7784 [[ 7848 ]] { N7779:rawptr:BotPTR N7794:jdk/internal/org/objectweb/asm/Frame+18 * - N7781:jdk/internal/org/objectweb/asm/Frame+36 * [narrow] - N7828:int[int:>=0]:exact+any * - - - - - - - - - - - - N7784:java/lang/Object+8 * [narrowklass] } Memory: @BotPTR *+bot, idx=Bot; !jvms: Frame::push @ bci:94 Frame::execute @ bci:1409
7784 Phi === 7509 7773 7 [[ 7843 7797 8095 7814 ]] #memory Memory: @java/lang/Object+8 * [narrowklass], idx=21; !jvms: Frame::push @ bci:60 Frame::execute @ bci:1409
7778 Phi === 7509 7773 7 [[ 8089 7797 7855 7814 7871 7830 7839 7843 7872 ]] #memory Memory: @BotPTR *+bot, idx=Bot; !jvms: Frame::push @ bci:60 Frame::execute @ bci:1409
====>
3318 MergeMem === _ 1 1614 1615 1616 1 1617 1 1618 1619 1620 1621 1622 1 1623 1624 3112 1 1 1 1 7 7 3489 7 3484 3499 [[ 3321 ]] { N1615:rawptr:BotPTR N1616:java/lang/String:exact+20 * [narrow] - N1617:java/lang/String:exact+16 * - N1618:java/lang/Object * N1619:java/lang/Object+8 * [narrowklass] N1620:java/util/AbstractList+12 * N1621:java/util/ArrayList+16 * N1622:java/util/ArrayList+20 * [narrow] - N1623:java/lang/String:exact+12 * N1624:java/lang/String:exact+17 * N3112:narrowoop: java/lang/Object *[int:>=0]+any * [narrow] - - - - N7:java/util/ArrayList$SubList:NotNull:exact *,iid=2970 N7:java/util/ArrayList$SubList:NotNull:exact+8 *,iid=2970 [narrowklass] N3489:java/util/ArrayList$SubList:NotNull:exact+24 *,iid=2970 [narrow] N7:java/util/ArrayList$SubList:NotNull:exact+16 *,iid=2970 N3484:java/util/AbstractList:NotNull:exact+12 *,iid=2970 N3499:java/util/ArrayList$SubList:NotNull:exact+20 *,iid=2970 } Memory: @BotPTR *+bot, idx=Bot;
3112 Phi === 1612 7 955 1382 1629 1886 2363 2586 2586 3283 [[ 3318 ]] #memory Memory: @narrowoop: java/lang/Object *[int:>=0]+any * [narrow], idx=16; !orig=1614 !jvms: String::split @ bci:-1
1614 Phi === 1612 7 955 1382 1629 1886 2363 2586 2586 3283 [[ 3318 ]] #memory Memory: @BotPTR *+bot, idx=Bot; !jvms: String::split @ bci:-1
More information about the hotspot-compiler-dev
mailing list