RFR: 8150720: Cleanup code around PrintOptoStatistics
Vladimir Kozlov
vladimir.kozlov at oracle.com
Fri Feb 26 17:56:21 UTC 2016
Good changes. We indeed print statistics only in non-product build.
graphKit.cpp - add {} to code:
+#ifndef PRODUCT
if (null_true == top())
explicit_null_checks_elided++;
+#endif
ifnode.cpp - add {} and adjust spaces "if (dist > 2) {":
+#ifndef PRODUCT
if( dist > 2 ) // Add to count of NULL checks elided
explicit_null_checks_elided++;
+#endif
parse1.cpp - the same:
- if( implicit_null_throws )
+ if( SharedRuntime::_implicit_null_throws )
tty->print_cr("%d implicit null exceptions at runtime",
- implicit_null_throws);
+ SharedRuntime::_implicit_null_throws);
> There is also a small "leak" in the corner case where "edge_end ==
> (char*)this" since we're not freeing the input array in this case.
There is no "leak" since after compilation is done all C2 arenas are
cleaned/freed. Yes, during compilation required space could be increased.
> We are not freeing when ASSERT is not defined? O_o The patch that
> apparently does an equivalent transformation of the original code
makes it even creepier.
It is done to catch dangling Node* pointers in debug build:
661 #ifdef ASSERT
662 // We will not actually delete the storage, but we'll make the
node unusable.
663 *(address*)this = badAddress; // smash the C++ vtbl, probably
664 _in = _out = (Node**) badAddress;
So please revert that code back except the code which just increment
unused counters and can be indeed removed.
Thanks,
Vladimir
On 2/26/16 3:40 AM, Claes Redestad wrote:
> Hi,
>
> src/share/vm/opto/parse1.cpp currently defines a number of global
> counters that is used to collect some statistics. Some of these counters
> are incremented in product builds, but ever only displayed in
> non-product builds if run with -XX:+PrintOptoStatistics.
>
> This patch masks such counters from product builds, removes a few
> counters that were never read, fixes an issue with implicit_null_throws
> which was never incremented in current code (seems it was moved to
> SharedRuntime a long time ago without updating print_statistics) and
> removes an unused enum (InlineStyle):
>
> webrev: http://cr.openjdk.java.net/~redestad/8150720/webrev.00/
> bug: https://bugs.openjdk.java.net/browse/JDK-8150720
>
> Testing: RBT --test hotspot/test/:hotspot_all, manual verification that
> -XX:+PrintOptoStatistics prints out a count for implicit NPE's thrown
>
> Thanks!
>
> /Claes
More information about the hotspot-compiler-dev
mailing list