RFR: 8221542: ~15% performance degradation due to less optimized inline decision
Jie Fu
fujie at loongson.cn
Sat Apr 20 02:57:34 UTC 2019
Hi Vladimir,
> I'm OK with dropping was_executed_more_than(1) check. I hoped it could
> help catching the case when exception is thrown before the call, but
> the check itself causes more problems than I thought.
Thank you.
> After some explorations I decided to keep original behavior for
> immature profiles (profile.count == -1).
I agree.
I have two questions here.
1. What's the difference of the following two if statements?
-------------------------------------------------
+ if (!callee_method->was_executed_more_than(0)) return true; //
callee was never executed
+
+ if (caller_method->is_not_reached(caller_bci)) return true; // call
site not resolved
-------------------------------------------------
I think only one of them is needed.
2. Does the assert in InlineTree::is_not_reached(...) make sense?
Since we have
-------------------------------------------------
if (profile.count() > 0) return false; // reachable according to profile
-------------------------------------------------
and
-------------------------------------------------
if (profile.count() == -1) {...}
-------------------------------------------------
before
-------------------------------------------------
assert(profile.count() == 0, "sanity");
-------------------------------------------------
is the assert redundant?
What do you think?
Thanks.
Best regards,
Jie
More information about the hotspot-compiler-dev
mailing list