comparison graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/CheckCastSnippets.java @ 7368:f04a5e46cdd2

new facility to add branch probabilities for snippets, probabilities for frequently-used snippets
author Lukas Stadler <lukas.stadler@jku.at>
date Mon, 14 Jan 2013 16:29:08 +0100
parents 2912b72d840a
children 4cc0efe5cffe
comparison
equal deleted inserted replaced
7367:cbcee2e1ce51 7368:f04a5e46cdd2
23 package com.oracle.graal.hotspot.snippets; 23 package com.oracle.graal.hotspot.snippets;
24 24
25 import static com.oracle.graal.hotspot.snippets.HotSpotSnippetUtils.*; 25 import static com.oracle.graal.hotspot.snippets.HotSpotSnippetUtils.*;
26 import static com.oracle.graal.snippets.SnippetTemplate.*; 26 import static com.oracle.graal.snippets.SnippetTemplate.*;
27 import static com.oracle.graal.snippets.SnippetTemplate.Arguments.*; 27 import static com.oracle.graal.snippets.SnippetTemplate.Arguments.*;
28 import static com.oracle.graal.snippets.nodes.BranchProbabilityNode.*;
28 29
29 import com.oracle.graal.api.code.*; 30 import com.oracle.graal.api.code.*;
30 import com.oracle.graal.api.meta.*; 31 import com.oracle.graal.api.meta.*;
31 import com.oracle.graal.debug.*; 32 import com.oracle.graal.debug.*;
32 import com.oracle.graal.graph.*; 33 import com.oracle.graal.graph.*;
66 public static Object checkcastExact( 67 public static Object checkcastExact(
67 @Parameter("object") Object object, 68 @Parameter("object") Object object,
68 @Parameter("exactHub") Word exactHub, 69 @Parameter("exactHub") Word exactHub,
69 @ConstantParameter("checkNull") boolean checkNull) { 70 @ConstantParameter("checkNull") boolean checkNull) {
70 if (checkNull && object == null) { 71 if (checkNull && object == null) {
72 probability(0.1);
71 isNull.inc(); 73 isNull.inc();
72 return object; 74 return object;
73 } 75 }
74 Word objectHub = loadHub(object); 76 Word objectHub = loadHub(object);
75 if (objectHub != exactHub) { 77 if (objectHub != exactHub) {
78 probability(0.01);
76 exactMiss.inc(); 79 exactMiss.inc();
77 //bkpt(object, exactHub, objectHub); 80 //bkpt(object, exactHub, objectHub);
78 DeoptimizeNode.deopt(DeoptimizationAction.InvalidateReprofile, DeoptimizationReason.ClassCastException); 81 DeoptimizeNode.deopt(DeoptimizationAction.InvalidateReprofile, DeoptimizationReason.ClassCastException);
79 } 82 }
80 exactHit.inc(); 83 exactHit.inc();