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);