Mercurial > hg > graal-compiler
comparison graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java @ 19800:3362ba500371
Connect required Assumptions with answer to CHA query
author | Tom Rodriguez <tom.rodriguez@oracle.com> |
---|---|
date | Wed, 11 Mar 2015 17:32:04 -0700 |
parents | d57ca11a6883 |
children | deab43a789ad |
comparison
equal
deleted
inserted
replaced
19799:00c4aa355659 | 19800:3362ba500371 |
---|---|
20 * or visit www.oracle.com if you need additional information or have any | 20 * or visit www.oracle.com if you need additional information or have any |
21 * questions. | 21 * questions. |
22 */ | 22 */ |
23 package com.oracle.graal.nodes.java; | 23 package com.oracle.graal.nodes.java; |
24 | 24 |
25 import com.oracle.graal.api.code.*; | |
26 import com.oracle.graal.api.meta.*; | 25 import com.oracle.graal.api.meta.*; |
26 import com.oracle.graal.api.meta.Assumptions.AssumptionResult; | |
27 import com.oracle.graal.compiler.common.type.*; | 27 import com.oracle.graal.compiler.common.type.*; |
28 import com.oracle.graal.graph.*; | 28 import com.oracle.graal.graph.*; |
29 import com.oracle.graal.graph.spi.*; | 29 import com.oracle.graal.graph.spi.*; |
30 import com.oracle.graal.nodeinfo.*; | 30 import com.oracle.graal.nodeinfo.*; |
31 import com.oracle.graal.nodes.*; | 31 import com.oracle.graal.nodes.*; |
124 if (resolvedMethod != null && (resolvedMethod.canBeStaticallyBound() || StampTool.isExactType(receiver) || type.isArray())) { | 124 if (resolvedMethod != null && (resolvedMethod.canBeStaticallyBound() || StampTool.isExactType(receiver) || type.isArray())) { |
125 return resolvedMethod; | 125 return resolvedMethod; |
126 } | 126 } |
127 Assumptions assumptions = receiver.graph().getAssumptions(); | 127 Assumptions assumptions = receiver.graph().getAssumptions(); |
128 if (assumptions != null) { | 128 if (assumptions != null) { |
129 ResolvedJavaType uniqueConcreteType = type.findUniqueConcreteSubtype(); | 129 AssumptionResult<ResolvedJavaType> uniqueConcreteType = type.findUniqueConcreteSubtype(); |
130 if (uniqueConcreteType != null) { | 130 if (uniqueConcreteType != null) { |
131 ResolvedJavaMethod methodFromUniqueType = uniqueConcreteType.resolveConcreteMethod(targetMethod, contextType); | 131 ResolvedJavaMethod methodFromUniqueType = uniqueConcreteType.getResult().resolveConcreteMethod(targetMethod, contextType); |
132 if (methodFromUniqueType != null) { | 132 if (methodFromUniqueType != null) { |
133 assumptions.recordConcreteSubtype(type, uniqueConcreteType); | 133 assumptions.record(uniqueConcreteType); |
134 return methodFromUniqueType; | 134 return methodFromUniqueType; |
135 } | 135 } |
136 } | 136 } |
137 | 137 |
138 ResolvedJavaMethod uniqueConcreteMethod = type.findUniqueConcreteMethod(targetMethod); | 138 AssumptionResult<ResolvedJavaMethod> uniqueConcreteMethod = type.findUniqueConcreteMethod(targetMethod); |
139 if (uniqueConcreteMethod != null) { | 139 if (uniqueConcreteMethod != null) { |
140 assumptions.recordConcreteMethod(targetMethod, type, uniqueConcreteMethod); | 140 assumptions.record(uniqueConcreteMethod); |
141 return uniqueConcreteMethod; | 141 return uniqueConcreteMethod.getResult(); |
142 } | 142 } |
143 } | 143 } |
144 } | 144 } |
145 | 145 |
146 return null; | 146 return null; |