|
Quick Lists
|
|
Bug ID:
|
6384206
|
|
Votes
|
0
|
|
Synopsis
|
Phis which are later unneeded are impairing our ability to inline based on static types
|
|
Category
|
hotspot:compiler2
|
|
Reported Against
|
|
|
Release Fixed
|
hs14(b06),
6u14(b01) (Bug ID:2172782)
, 7(b39) (Bug ID:2177308)
|
|
State
|
10-Fix Delivered,
bug
|
|
Priority:
|
3-Medium
|
|
Related Bugs
|
6750588
,
6805522
,
6850611
|
|
Submit Date
|
10-FEB-2006
|
|
Description
|
While investigating the performance of HashMap.get(k) I noticed that in cases where the static type of k is available C2 isn't taking advantage of the information in making it's inline decisions for get. The problem is that Phis which are introduced for the join of a diamond aren't being eliminated aggressively during parsing when one of the paths is proved dead. Additionally unneeded loop phis are hiding the type k in the search loop, impairing the inlining of equals. Post parse inlining which remove the need for aggressive elimination of phis but for now we need a better strategy for simplification of phis.
Posted Date : 2006-02-10 17:21:33.0
|
|
Work Around
|
N/A
|
|
Evaluation
|
Some simple changes to parse collapse phis for dead codes paths. A better strategy is to rely on RPO for parse order and when you reach a block with unparsed predecessors, assume they are dead unless your block is a backward branch target.
Eliminating phis for loops requires some analysis though it can be very cheap if we are looking for the simple case.
Posted Date : 2006-02-10 18:21:07.0
http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/194b8e3a2fc4
Posted Date : 2008-09-17 22:10:07.0
|
|
Comments
|
PLEASE NOTE: JDK6 is formerly known as Project Mustang
|
|
|
 |