# HG changeset patch # User Christian Wimmer # Date 1400637114 25200 # Node ID 4fd787b04c928c5ac59f0d8027c086ef567e9acf # Parent 8b4c360cd2fe018fd3fddeb5bbb19e9388bc1674 Recompute probability only when number of types in profile changed diff -r 8b4c360cd2fe -r 4fd787b04c92 graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaTypeProfile.java --- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaTypeProfile.java Tue May 20 18:51:16 2014 -0700 +++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/JavaTypeProfile.java Tue May 20 18:51:54 2014 -0700 @@ -109,14 +109,20 @@ if (result.size() == 0) { return new JavaTypeProfile(newNullSeen, 1.0, EMPTY_ARRAY); } - double probabilitySum = 0.0; - for (int i = 0; i < result.size(); i++) { - probabilitySum += result.get(i).getProbability(); + double factor; + if (result.size() == this.getItems().length) { + /* List of types did not change, no need to recompute probabilities. */ + factor = 1.0; + } else { + double probabilitySum = 0.0; + for (int i = 0; i < result.size(); i++) { + probabilitySum += result.get(i).getProbability(); + } + probabilitySum += newNotRecorded; + + factor = 1.0 / probabilitySum; // Normalize to 1.0 + assert factor >= 1.0; } - probabilitySum += newNotRecorded; - - double factor = 1.0 / probabilitySum; // Normalize to 1.0 - assert factor >= 1.0; ProfiledType[] newResult = new ProfiledType[result.size()]; for (int i = 0; i < newResult.length; ++i) { ProfiledType curType = result.get(i);