Mercurial > hg > graal-compiler
comparison graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java @ 18822:fad37aaed6d2
Add utilities isDirect and isIndirect to InvokeKind.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Sun, 11 Jan 2015 17:46:47 +0100 |
parents | ab9d3ff6829b |
children | f57d86eb036f |
comparison
equal
deleted
inserted
replaced
18821:e4b2cbda1ae6 | 18822:fad37aaed6d2 |
---|---|
41 import com.oracle.graal.hotspot.nodes.type.*; | 41 import com.oracle.graal.hotspot.nodes.type.*; |
42 import com.oracle.graal.hotspot.replacements.*; | 42 import com.oracle.graal.hotspot.replacements.*; |
43 import com.oracle.graal.hotspot.replacements.arraycopy.*; | 43 import com.oracle.graal.hotspot.replacements.arraycopy.*; |
44 import com.oracle.graal.java.*; | 44 import com.oracle.graal.java.*; |
45 import com.oracle.graal.nodes.*; | 45 import com.oracle.graal.nodes.*; |
46 import com.oracle.graal.nodes.CallTargetNode.InvokeKind; | |
47 import com.oracle.graal.nodes.HeapAccess.BarrierType; | 46 import com.oracle.graal.nodes.HeapAccess.BarrierType; |
48 import com.oracle.graal.nodes.calc.*; | 47 import com.oracle.graal.nodes.calc.*; |
49 import com.oracle.graal.nodes.debug.*; | 48 import com.oracle.graal.nodes.debug.*; |
50 import com.oracle.graal.nodes.extended.*; | 49 import com.oracle.graal.nodes.extended.*; |
51 import com.oracle.graal.nodes.java.*; | 50 import com.oracle.graal.nodes.java.*; |
232 invoke.setGuard(receiverNullCheck); | 231 invoke.setGuard(receiverNullCheck); |
233 } | 232 } |
234 JavaType[] signature = callTarget.targetMethod().getSignature().toParameterTypes(callTarget.isStatic() ? null : callTarget.targetMethod().getDeclaringClass()); | 233 JavaType[] signature = callTarget.targetMethod().getSignature().toParameterTypes(callTarget.isStatic() ? null : callTarget.targetMethod().getDeclaringClass()); |
235 | 234 |
236 LoweredCallTargetNode loweredCallTarget = null; | 235 LoweredCallTargetNode loweredCallTarget = null; |
237 boolean isVirtualOrInterface = callTarget.invokeKind() == InvokeKind.Virtual || callTarget.invokeKind() == InvokeKind.Interface; | 236 if (InlineVTableStubs.getValue() && callTarget.invokeKind().isIndirect() && (AlwaysInlineVTableStubs.getValue() || invoke.isPolymorphic())) { |
238 if (InlineVTableStubs.getValue() && isVirtualOrInterface && (AlwaysInlineVTableStubs.getValue() || invoke.isPolymorphic())) { | |
239 HotSpotResolvedJavaMethod hsMethod = (HotSpotResolvedJavaMethod) callTarget.targetMethod(); | 237 HotSpotResolvedJavaMethod hsMethod = (HotSpotResolvedJavaMethod) callTarget.targetMethod(); |
240 ResolvedJavaType receiverType = invoke.getReceiverType(); | 238 ResolvedJavaType receiverType = invoke.getReceiverType(); |
241 if (hsMethod.isInVirtualMethodTable(receiverType)) { | 239 if (hsMethod.isInVirtualMethodTable(receiverType)) { |
242 Kind wordKind = runtime.getTarget().wordKind; | 240 Kind wordKind = runtime.getTarget().wordKind; |
243 ValueNode hub = createReadHub(graph, receiver, receiverNullCheck); | 241 ValueNode hub = createReadHub(graph, receiver, receiverNullCheck); |