# HG changeset patch # User Josef Eisl # Date 1398168924 -7200 # Node ID 61363577a18489e58a04056e5def60831e62bdac # Parent d90e5c22ba555bc968695fb2b72b3d85577e8ee2 Move static helpers from ObjectStamp to StampTool. diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/PushNodesThroughPiTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/PushNodesThroughPiTest.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/PushNodesThroughPiTest.java Tue Apr 22 14:15:24 2014 +0200 @@ -71,7 +71,7 @@ for (ReadNode rn : graph.getNodes().filter(ReadNode.class)) { if (rn.location() instanceof ConstantLocationNode && rn.object().stamp() instanceof ObjectStamp) { long disp = ((ConstantLocationNode) rn.location()).getDisplacement(); - ResolvedJavaType receiverType = ObjectStamp.typeOrNull(rn.object()); + ResolvedJavaType receiverType = StampTool.typeOrNull(rn.object()); ResolvedJavaField field = receiverType.findInstanceFieldWithOffset(disp); assert field != null : "Node " + rn + " tries to access a field which doesn't exists for this type"; diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotLoweringProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotLoweringProvider.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotLoweringProvider.java Tue Apr 22 14:15:24 2014 +0200 @@ -223,7 +223,7 @@ NodeInputList parameters = callTarget.arguments(); ValueNode receiver = parameters.size() <= 0 ? null : parameters.get(0); GuardingNode receiverNullCheck = null; - if (!callTarget.isStatic() && receiver.stamp() instanceof ObjectStamp && !ObjectStamp.isObjectNonNull(receiver)) { + if (!callTarget.isStatic() && receiver.stamp() instanceof ObjectStamp && !StampTool.isObjectNonNull(receiver)) { receiverNullCheck = createNullCheck(receiver, invoke.asNode(), tool); invoke.setGuard(receiverNullCheck); } @@ -429,10 +429,10 @@ CheckCastNode checkcastNode = null; CheckCastDynamicNode checkcastDynamicNode = null; - if (elementKind == Kind.Object && !ObjectStamp.isObjectAlwaysNull(value)) { + if (elementKind == Kind.Object && !StampTool.isObjectAlwaysNull(value)) { // Store check! - ResolvedJavaType arrayType = ObjectStamp.typeOrNull(array); - if (arrayType != null && ObjectStamp.isExactType(array)) { + ResolvedJavaType arrayType = StampTool.typeOrNull(array); + if (arrayType != null && StampTool.isExactType(array)) { ResolvedJavaType elementType = arrayType.getComponentType(); if (!MetaUtil.isJavaLangObject(elementType)) { checkcastNode = graph.add(new CheckCastNode(elementType, value, null, true)); @@ -807,8 +807,8 @@ private static boolean addReadBarrier(UnsafeLoadNode load) { if (useG1GC() && load.graph().getGuardsStage() == StructuredGraph.GuardsStage.FIXED_DEOPTS && load.object().getKind() == Kind.Object && load.accessKind() == Kind.Object && - !ObjectStamp.isObjectAlwaysNull(load.object())) { - ResolvedJavaType type = ObjectStamp.typeOrNull(load.object()); + !StampTool.isObjectAlwaysNull(load.object())) { + ResolvedJavaType type = StampTool.typeOrNull(load.object()); if (type != null && !type.isArray()) { return true; } @@ -886,7 +886,7 @@ private static BarrierType getUnsafeStoreBarrierType(UnsafeStoreNode store) { if (store.value().getKind() == Kind.Object) { - ResolvedJavaType type = ObjectStamp.typeOrNull(store.object()); + ResolvedJavaType type = StampTool.typeOrNull(store.object()); if (type != null && !type.isArray()) { return BarrierType.IMPRECISE; } else { @@ -898,7 +898,7 @@ private static BarrierType getCompareAndSwapBarrierType(CompareAndSwapNode cas) { if (cas.expected().getKind() == Kind.Object) { - ResolvedJavaType type = ObjectStamp.typeOrNull(cas.object()); + ResolvedJavaType type = StampTool.typeOrNull(cas.object()); if (type != null && !type.isArray()) { return BarrierType.IMPRECISE; } else { @@ -910,7 +910,7 @@ private static BarrierType getAtomicReadAndWriteBarrierType(AtomicReadAndWriteNode n) { if (n.newValue().getKind() == Kind.Object) { - ResolvedJavaType type = ObjectStamp.typeOrNull(n.object()); + ResolvedJavaType type = StampTool.typeOrNull(n.object()); if (type != null && !type.isArray()) { return BarrierType.IMPRECISE; } else { @@ -1003,7 +1003,7 @@ } private static GuardingNode createNullCheck(ValueNode object, FixedNode before, LoweringTool tool) { - if (ObjectStamp.isObjectNonNull(object)) { + if (StampTool.isObjectNonNull(object)) { return null; } return tool.createGuard(before, before.graph().unique(new IsNullNode(object)), DeoptimizationReason.NullCheckException, DeoptimizationAction.InvalidateReprofile, true); diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -109,7 +109,7 @@ HotSpotLIRGenerator hsGen = (HotSpotLIRGenerator) gen.getLIRGeneratorTool(); boolean nonNull; if (input.stamp() instanceof ObjectStamp) { - nonNull = ObjectStamp.isObjectNonNull(input.stamp()); + nonNull = StampTool.isObjectNonNull(input.stamp()); } else { // metaspace pointers are never null nonNull = true; diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/AheadOfTimeVerificationPhase.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/AheadOfTimeVerificationPhase.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/AheadOfTimeVerificationPhase.java Tue Apr 22 14:15:24 2014 +0200 @@ -66,7 +66,7 @@ if (!isObject(node)) { return false; } - return "Ljava/lang/invoke/DirectMethodHandle;".equals(ObjectStamp.typeOrNull(node).getName()); + return "Ljava/lang/invoke/DirectMethodHandle;".equals(StampTool.typeOrNull(node).getName()); } @SuppressFBWarnings(value = "ES_COMPARING_STRINGS_WITH_EQ", justification = "reference equality is what we want") diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/WriteBarrierAdditionPhase.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/WriteBarrierAdditionPhase.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/WriteBarrierAdditionPhase.java Tue Apr 22 14:15:24 2014 +0200 @@ -75,12 +75,12 @@ } protected void addG1PostWriteBarrier(FixedAccessNode node, ValueNode object, ValueNode value, LocationNode location, boolean precise, StructuredGraph graph) { - final boolean alwaysNull = ObjectStamp.isObjectAlwaysNull(value); + final boolean alwaysNull = StampTool.isObjectAlwaysNull(value); graph.addAfterFixed(node, graph.add(new G1PostWriteBarrier(object, value, location, precise, alwaysNull))); } protected void addSerialPostWriteBarrier(FixedAccessNode node, ValueNode object, ValueNode value, LocationNode location, boolean precise, StructuredGraph graph) { - final boolean alwaysNull = ObjectStamp.isObjectAlwaysNull(value); + final boolean alwaysNull = StampTool.isObjectAlwaysNull(value); final LocationNode loc = (precise ? location : null); graph.addAfterFixed(node, graph.add(new SerialWriteBarrier(object, loc, precise, alwaysNull))); } diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AbstractMethodHandleNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AbstractMethodHandleNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/AbstractMethodHandleNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -53,7 +53,7 @@ /** * Search for an instance field with the given name in a class. - * + * * @param className name of the class to search in * @param fieldName name of the field to be searched * @return resolved java field @@ -100,7 +100,7 @@ /** * Get the receiver of a MethodHandle.invokeBasic call. - * + * * @return the receiver argument node */ private ValueNode getReceiver() { @@ -109,7 +109,7 @@ /** * Get the MemberName argument of a MethodHandle.linkTo* call. - * + * * @return the MemberName argument node (which is the last argument) */ private ValueNode getMemberName() { @@ -119,7 +119,7 @@ /** * Used from {@link MethodHandleInvokeBasicNode} to get the target {@link InvokeNode} if the * method handle receiver is constant. - * + * * @return invoke node for the {@link java.lang.invoke.MethodHandle} target */ protected InvokeNode getInvokeBasicTarget() { @@ -138,7 +138,7 @@ * Used from {@link MethodHandleLinkToStaticNode}, {@link MethodHandleLinkToSpecialNode}, * {@link MethodHandleLinkToVirtualNode}, and {@link MethodHandleLinkToInterfaceNode} to get the * target {@link InvokeNode} if the member name argument is constant. - * + * * @return invoke node for the member name target */ protected InvokeNode getLinkToTarget() { @@ -153,7 +153,7 @@ /** * Helper function to get the {@link InvokeNode} for the vmtarget of a * java.lang.invoke.MemberName. - * + * * @param memberName constant member name node * @return invoke node for the member name target */ @@ -189,7 +189,7 @@ // Try to get the most accurate receiver type if (this instanceof MethodHandleLinkToVirtualNode || this instanceof MethodHandleLinkToInterfaceNode) { - ResolvedJavaType receiverType = ObjectStamp.typeOrNull(getReceiver().stamp()); + ResolvedJavaType receiverType = StampTool.typeOrNull(getReceiver().stamp()); if (receiverType != null) { ResolvedJavaMethod concreteMethod = receiverType.findUniqueConcreteMethod(targetMethod); if (concreteMethod != null) { @@ -213,7 +213,7 @@ /** * Inserts a node to cast the argument at index to the given type if the given type is more * concrete than the argument type. - * + * * @param index of the argument to be cast * @param type the type the argument should be cast to */ @@ -222,7 +222,7 @@ ResolvedJavaType targetType = (ResolvedJavaType) type; if (!targetType.isPrimitive()) { ValueNode argument = arguments.get(index); - ResolvedJavaType argumentType = ObjectStamp.typeOrNull(argument.stamp()); + ResolvedJavaType argumentType = StampTool.typeOrNull(argument.stamp()); if (argumentType == null || (argumentType.isAssignableFrom(targetType) && !argumentType.equals(targetType))) { PiNode piNode = graph().unique(new PiNode(argument, StampFactory.declared(targetType))); arguments.set(index, piNode); @@ -234,7 +234,7 @@ /** * Creates an {@link InvokeNode} for the given target method. The {@link CallTargetNode} passed * to the InvokeNode is in fact a {@link SelfReplacingMethodCallTargetNode}. - * + * * @param targetMethod the method the be called * @return invoke node for the member name target */ diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopyNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopyNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopyNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -69,8 +69,8 @@ } private StructuredGraph selectSnippet(LoweringTool tool, final Replacements replacements) { - ResolvedJavaType srcType = ObjectStamp.typeOrNull(getSource().stamp()); - ResolvedJavaType destType = ObjectStamp.typeOrNull(getDestination().stamp()); + ResolvedJavaType srcType = StampTool.typeOrNull(getSource().stamp()); + ResolvedJavaType destType = StampTool.typeOrNull(getDestination().stamp()); if (srcType == null || !srcType.isArray() || destType == null || !destType.isArray()) { return null; @@ -143,13 +143,13 @@ * Returns true if this copy doesn't require store checks. Trivially true for primitive arrays. */ private boolean isExact() { - ResolvedJavaType srcType = ObjectStamp.typeOrNull(getSource().stamp()); + ResolvedJavaType srcType = StampTool.typeOrNull(getSource().stamp()); if (srcType.getComponentType().getKind().isPrimitive() || getSource() == getDestination()) { return true; } - ResolvedJavaType destType = ObjectStamp.typeOrNull(getDestination().stamp()); - if (ObjectStamp.isExactType(getDestination().stamp())) { + ResolvedJavaType destType = StampTool.typeOrNull(getDestination().stamp()); + if (StampTool.isExactType(getDestination().stamp())) { if (destType != null && destType.isAssignableFrom(srcType)) { return true; } @@ -171,10 +171,10 @@ if (state.getState() == EscapeState.Virtual) { type = state.getVirtualObject().type(); } else { - type = ObjectStamp.typeOrNull(state.getMaterializedValue()); + type = StampTool.typeOrNull(state.getMaterializedValue()); } } else { - type = ObjectStamp.typeOrNull(entry); + type = StampTool.typeOrNull(entry); } if (type == null || !destComponentType.isAssignableFrom(type)) { return false; diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java Tue Apr 22 14:15:24 2014 +0200 @@ -457,7 +457,7 @@ } static boolean isTracingEnabledForType(ValueNode object) { - ResolvedJavaType type = ObjectStamp.typeOrNull(object.stamp()); + ResolvedJavaType type = StampTool.typeOrNull(object.stamp()); if (TRACE_TYPE_FILTER == null) { return false; } else { diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -60,7 +60,7 @@ return null; } - ResolvedJavaType type = ObjectStamp.typeOrNull(getObject()); + ResolvedJavaType type = StampTool.typeOrNull(getObject()); if (type != null) { if (type.isArray()) { Method method = ObjectCloneSnippets.arrayCloneMethods.get(type.getComponentType().getKind()); @@ -106,7 +106,7 @@ /* * Looks at the given stamp and determines if it is an exact type (or can be assumed to be an * exact type) and if it is a cloneable type. - * + * * If yes, then the exact type is returned, otherwise it returns null. */ private static ResolvedJavaType getConcreteType(Stamp stamp, Assumptions assumptions, MetaAccessProvider metaAccess) { diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectGetClassNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectGetClassNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectGetClassNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -67,8 +67,8 @@ if (usages().isEmpty()) { return null; } else { - if (ObjectStamp.isExactType(getObject())) { - ResolvedJavaType type = ObjectStamp.typeOrNull(getObject()); + if (StampTool.isExactType(getObject())) { + ResolvedJavaType type = StampTool.typeOrNull(getObject()); Constant clazz = type.getEncoding(Representation.JavaClass); return ConstantNode.forConstant(clazz, tool.getMetaAccess(), graph()); } diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Tue Apr 22 14:15:24 2014 +0200 @@ -636,7 +636,7 @@ @Override protected void emitNullCheck(ValueNode receiver) { - if (ObjectStamp.isObjectNonNull(receiver.stamp())) { + if (StampTool.isObjectNonNull(receiver.stamp())) { return; } BlockPlaceholderNode trueSucc = currentGraph.add(new BlockPlaceholderNode(this)); diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/ObjectStampJoinTest.java --- a/graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/ObjectStampJoinTest.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/ObjectStampJoinTest.java Tue Apr 22 14:15:24 2014 +0200 @@ -81,7 +81,7 @@ public void testJoin3() { Stamp d = StampFactory.declared(getType(D.class)); Stamp c = StampFactory.declared(getType(C.class)); - Assert.assertTrue(ObjectStamp.isObjectAlwaysNull(join(c, d))); + Assert.assertTrue(StampTool.isObjectAlwaysNull(join(c, d))); } @Test @@ -96,9 +96,9 @@ Stamp dExact = StampFactory.exact(getType(D.class)); Stamp c = StampFactory.declared(getType(C.class)); Stamp join = join(c, dExact); - Assert.assertTrue(ObjectStamp.isObjectAlwaysNull(join)); - Assert.assertNull(ObjectStamp.typeOrNull(join)); - Assert.assertFalse(ObjectStamp.isExactType(join)); + Assert.assertTrue(StampTool.isObjectAlwaysNull(join)); + Assert.assertNull(StampTool.typeOrNull(join)); + Assert.assertFalse(StampTool.isExactType(join)); } @Test @@ -107,8 +107,8 @@ Stamp alwaysNull = StampFactory.alwaysNull(); Stamp join = join(alwaysNull, dExactNonNull); Assert.assertFalse(join.isLegal()); - Assert.assertFalse(ObjectStamp.isObjectNonNull(join)); - Assert.assertFalse(ObjectStamp.isObjectAlwaysNull(join)); + Assert.assertFalse(StampTool.isObjectNonNull(join)); + Assert.assertFalse(StampTool.isObjectAlwaysNull(join)); } @Test @@ -116,9 +116,9 @@ Stamp aExact = StampFactory.exact(getType(A.class)); Stamp e = StampFactory.declared(getType(E.class)); Stamp join = join(aExact, e); - Assert.assertTrue(ObjectStamp.isObjectAlwaysNull(join)); - Assert.assertNull(ObjectStamp.typeOrNull(join)); - Assert.assertFalse(ObjectStamp.isExactType(join)); + Assert.assertTrue(StampTool.isObjectAlwaysNull(join)); + Assert.assertNull(StampTool.typeOrNull(join)); + Assert.assertFalse(StampTool.isExactType(join)); } @Test diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -88,7 +88,7 @@ @Override public void virtualize(VirtualizerTool tool) { State state = tool.getObjectState(object); - if (state != null && state.getState() == EscapeState.Virtual && ObjectStamp.typeOrNull(this) != null && ObjectStamp.typeOrNull(this).isAssignableFrom(state.getVirtualObject().type())) { + if (state != null && state.getState() == EscapeState.Virtual && StampTool.typeOrNull(this) != null && StampTool.typeOrNull(this).isAssignableFrom(state.getVirtualObject().type())) { tool.replaceWithVirtual(state.getVirtualObject()); } } diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -59,7 +59,7 @@ } public PiNode(ValueNode object, ResolvedJavaType toType, boolean exactType, boolean nonNull) { - this(object, StampFactory.object(toType, exactType, nonNull || ObjectStamp.isObjectNonNull(object.stamp()))); + this(object, StampFactory.object(toType, exactType, nonNull || StampTool.isObjectNonNull(object.stamp()))); } @Override @@ -80,7 +80,7 @@ @Override public void virtualize(VirtualizerTool tool) { State state = tool.getObjectState(object); - if (state != null && state.getState() == EscapeState.Virtual && ObjectStamp.typeOrNull(this) != null && ObjectStamp.typeOrNull(this).isAssignableFrom(state.getVirtualObject().type())) { + if (state != null && state.getState() == EscapeState.Virtual && StampTool.typeOrNull(this) != null && StampTool.typeOrNull(this).isAssignableFrom(state.getVirtualObject().type())) { tool.replaceWithVirtual(state.getVirtualObject()); } } diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -75,7 +75,7 @@ @Override public Node canonical(CanonicalizerTool tool) { - if (ObjectStamp.isExactType(object)) { + if (StampTool.isExactType(object)) { // The profile is useless - we know the type! return object; } else if (object instanceof TypeProfileProxyNode) { @@ -96,8 +96,8 @@ Debug.log("Improved profile via other profile."); return TypeProfileProxyNode.create(object, newProfile); } - } else if (ObjectStamp.typeOrNull(object) != null) { - ResolvedJavaType type = ObjectStamp.typeOrNull(object); + } else if (StampTool.typeOrNull(object) != null) { + ResolvedJavaType type = StampTool.typeOrNull(object); ResolvedJavaType uniqueConcrete = type.findUniqueConcreteSubtype(); if (uniqueConcrete != null) { // Profile is useless => remove. @@ -109,7 +109,7 @@ return this; } lastCheckedType = type; - JavaTypeProfile newProfile = this.profile.restrict(type, ObjectStamp.isObjectNonNull(object)); + JavaTypeProfile newProfile = this.profile.restrict(type, StampTool.isObjectNonNull(object)); if (newProfile != this.profile) { Debug.log("Improved profile via static type information."); if (newProfile.getTypes().length == 0) { diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -68,7 +68,7 @@ assert constant.getKind() == Kind.Object; return LogicConstantNode.forBoolean(constant.isNull(), graph()); } - if (ObjectStamp.isObjectNonNull(object.stamp())) { + if (StampTool.isObjectNonNull(object.stamp())) { return LogicConstantNode.contradiction(graph()); } return this; diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -61,9 +61,9 @@ return LogicConstantNode.tautology(graph()); } - if (ObjectStamp.isObjectAlwaysNull(x())) { + if (StampTool.isObjectAlwaysNull(x())) { return graph().unique(new IsNullNode(y())); - } else if (ObjectStamp.isObjectAlwaysNull(y())) { + } else if (StampTool.isObjectAlwaysNull(y())) { return graph().unique(new IsNullNode(x())); } if (x().stamp().alwaysDistinct(y().stamp())) { diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -77,7 +77,7 @@ @Override public void virtualize(VirtualizerTool tool) { ValueNode v = tool.getReplacedValue(getValue()); - ResolvedJavaType type = ObjectStamp.typeOrNull(stamp()); + ResolvedJavaType type = StampTool.typeOrNull(stamp()); VirtualBoxingNode newVirtual = new VirtualBoxingNode(type, boxingKind); assert newVirtual.getFields().length == 1; diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -144,7 +144,7 @@ } ObjectStamp valueStamp = (ObjectStamp) parent.object().stamp(); - ResolvedJavaType valueType = ObjectStamp.typeOrNull(valueStamp); + ResolvedJavaType valueType = StampTool.typeOrNull(valueStamp); if (valueType != null && field.getDeclaringClass().isAssignableFrom(valueType)) { if (piStamp.nonNull() == valueStamp.nonNull() && piStamp.alwaysNull() == valueStamp.alwaysNull()) { replaceFirstInput(parent, parent.object()); diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -67,7 +67,7 @@ long constantOffset = offset().asConstant().asLong(); // Try to canonicalize to a field access. - ResolvedJavaType receiverType = ObjectStamp.typeOrNull(object()); + ResolvedJavaType receiverType = StampTool.typeOrNull(object()); if (receiverType != null) { ResolvedJavaField field = receiverType.findInstanceFieldWithOffset(constantOffset); // No need for checking that the receiver is non-null. The field access includes @@ -80,7 +80,7 @@ } } // Temporarily disable this as it appears to break truffle. - // ResolvedJavaType receiverType = ObjectStamp.typeOrNull(object()); + // ResolvedJavaType receiverType = StampTool.typeOrNull(object()); // if (receiverType != null && receiverType.isArray()) { // LocationIdentity identity = // NamedLocationIdentity.getArrayLocation(receiverType.getComponentType().getKind()); diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -51,7 +51,7 @@ } public UnsafeCastNode(ValueNode object, ResolvedJavaType toType, boolean exactType, boolean nonNull) { - this(object, toType.getKind() == Kind.Object ? StampFactory.object(toType, exactType, nonNull || ObjectStamp.isObjectNonNull(object.stamp())) : StampFactory.forKind(toType.getKind())); + this(object, toType.getKind() == Kind.Object ? StampFactory.object(toType, exactType, nonNull || StampTool.isObjectNonNull(object.stamp())) : StampFactory.forKind(toType.getKind())); } @Override @@ -80,7 +80,7 @@ @Override public void virtualize(VirtualizerTool tool) { State state = tool.getObjectState(object); - if (state != null && state.getState() == EscapeState.Virtual && ObjectStamp.typeOrNull(this) != null && ObjectStamp.typeOrNull(this).isAssignableFrom(state.getVirtualObject().type())) { + if (state != null && state.getState() == EscapeState.Virtual && StampTool.typeOrNull(this) != null && StampTool.typeOrNull(this).isAssignableFrom(state.getVirtualObject().type())) { tool.replaceWithVirtual(state.getVirtualObject()); } } diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastDynamicNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastDynamicNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastDynamicNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -73,7 +73,7 @@ public Node canonical(CanonicalizerTool tool) { assert object() != null : this; - if (ObjectStamp.isObjectAlwaysNull(object())) { + if (StampTool.isObjectAlwaysNull(object())) { return object(); } if (hub.isConstant()) { diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -107,7 +107,7 @@ // This is a check cast that will always fail condition = LogicConstantNode.contradiction(graph()); stamp = StampFactory.declared(type); - } else if (ObjectStamp.isObjectNonNull(object)) { + } else if (StampTool.isObjectNonNull(object)) { condition = graph().addWithoutUnique(new InstanceOfNode(type, object, profile)); } else { if (profile != null && profile.getNullSeen() == TriState.FALSE) { @@ -142,7 +142,7 @@ public Node canonical(CanonicalizerTool tool) { assert object() != null : this; - ResolvedJavaType objectType = ObjectStamp.typeOrNull(object()); + ResolvedJavaType objectType = StampTool.typeOrNull(object()); if (objectType != null && type.isAssignableFrom(objectType)) { // we don't have to check for null types here because they will also pass the // checkcast. @@ -161,7 +161,7 @@ } } - if (ObjectStamp.isObjectAlwaysNull(object())) { + if (StampTool.isObjectAlwaysNull(object())) { return object(); } if (tool.assumptions() != null && tool.assumptions().useOptimisticAssumptions()) { diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -47,8 +47,8 @@ this.mirror = mirror; this.object = object; assert mirror.getKind() == Kind.Object : mirror.getKind(); - assert ObjectStamp.isExactType(mirror); - assert ObjectStamp.typeOrNull(mirror).getName().equals("Ljava/lang/Class;"); + assert StampTool.isExactType(mirror); + assert StampTool.typeOrNull(mirror).getName().equals("Ljava/lang/Class;"); } @Override diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -62,7 +62,7 @@ @Override public Node canonical(CanonicalizerTool tool) { - if (usages().isEmpty() && !isVolatile() && (isStatic() || ObjectStamp.isObjectNonNull(object().stamp()))) { + if (usages().isEmpty() && !isVolatile() && (isStatic() || StampTool.isObjectNonNull(object().stamp()))) { return null; } MetaAccessProvider metaAccess = tool.getMetaAccess(); diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -45,7 +45,7 @@ } private static Stamp createStamp(ValueNode array, Kind kind) { - ResolvedJavaType type = ObjectStamp.typeOrNull(array); + ResolvedJavaType type = StampTool.typeOrNull(array); if (kind == Kind.Object && type != null) { return StampFactory.declared(type.getComponentType()); } else { diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -143,11 +143,11 @@ // check if the type of the receiver can narrow the result ValueNode receiver = receiver(); - ResolvedJavaType type = ObjectStamp.typeOrNull(receiver); + ResolvedJavaType type = StampTool.typeOrNull(receiver); if (type != null) { // either the holder class is exact, or the receiver object has an exact type ResolvedJavaMethod resolvedMethod = type.resolveMethod(targetMethod); - if (resolvedMethod != null && (resolvedMethod.canBeStaticallyBound() || ObjectStamp.isExactType(receiver))) { + if (resolvedMethod != null && (resolvedMethod.canBeStaticallyBound() || StampTool.isExactType(receiver))) { invokeKind = InvokeKind.Special; targetMethod = resolvedMethod; return this; diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -54,7 +54,7 @@ * @return the element type of the array */ public ResolvedJavaType elementType() { - return ObjectStamp.typeOrNull(this).getComponentType(); + return StampTool.typeOrNull(this).getComponentType(); } @Override diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -75,8 +75,8 @@ int index = indexValue.isConstant() ? indexValue.asConstant().asInt() : -1; if (index >= 0 && index < arrayState.getVirtualObject().entryCount()) { ResolvedJavaType componentType = arrayState.getVirtualObject().type().getComponentType(); - if (componentType.isPrimitive() || ObjectStamp.isObjectAlwaysNull(value) || componentType.getSuperclass() == null || - (ObjectStamp.typeOrNull(value) != null && componentType.isAssignableFrom(ObjectStamp.typeOrNull(value)))) { + if (componentType.isPrimitive() || StampTool.isObjectAlwaysNull(value) || componentType.getSuperclass() == null || + (StampTool.typeOrNull(value) != null && componentType.isAssignableFrom(StampTool.typeOrNull(value)))) { tool.setVirtualEntry(arrayState, index, value(), false); tool.delete(); } diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/ObjectStamp.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/ObjectStamp.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/ObjectStamp.java Tue Apr 22 14:15:24 2014 +0200 @@ -28,7 +28,6 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.spi.*; import com.oracle.graal.compiler.common.type.*; -import com.oracle.graal.nodes.*; public class ObjectStamp extends Stamp { @@ -297,109 +296,4 @@ return true; } - /** - * Checks whether this {@link ValueNode} represents a {@linkplain Stamp#isLegal() legal} Object - * value which is known to be always null. - * - * @param node the node to check - * @return true if this node represents a legal object value which is known to be always null - */ - public static boolean isObjectAlwaysNull(ValueNode node) { - return isObjectAlwaysNull(node.stamp()); - } - - /** - * Checks whether this {@link Stamp} represents a {@linkplain Stamp#isLegal() legal} Object - * stamp whose values are known to be always null. - * - * @param stamp the stamp to check - * @return true if this stamp represents a legal object stamp whose values are known to be - * always null - */ - public static boolean isObjectAlwaysNull(Stamp stamp) { - if (stamp instanceof ObjectStamp && stamp.isLegal()) { - return ((ObjectStamp) stamp).alwaysNull(); - } - return false; - } - - /** - * Checks whether this {@link ValueNode} represents a {@linkplain Stamp#isLegal() legal} Object - * value which is known to never be null. - * - * @param node the node to check - * @return true if this node represents a legal object value which is known to never be null - */ - public static boolean isObjectNonNull(ValueNode node) { - return isObjectNonNull(node.stamp()); - } - - /** - * Checks whether this {@link Stamp} represents a {@linkplain Stamp#isLegal() legal} Object - * stamp whose values known to be always null. - * - * @param stamp the stamp to check - * @return true if this stamp represents a legal object stamp whose values are known to be - * always null - */ - public static boolean isObjectNonNull(Stamp stamp) { - if (stamp instanceof ObjectStamp && stamp.isLegal()) { - return ((ObjectStamp) stamp).nonNull(); - } - return false; - } - - /** - * Returns the {@linkplain ResolvedJavaType java type} this {@linkplain ValueNode} has if it is - * a {@linkplain Stamp#isLegal() legal} Object value. - * - * @param node the node to check - * @return the javat type this value has if it is a legal Object type, null otherwise - */ - public static ResolvedJavaType typeOrNull(ValueNode node) { - return typeOrNull(node.stamp()); - } - - /** - * Returns the {@linkplain ResolvedJavaType java type} this {@linkplain Stamp} has if it is a - * {@linkplain Stamp#isLegal() legal} Object stamp. - * - * @param stamp the stamp to check - * @return the java type this stamp has if it is a legal Object stamp, null otherwise - */ - public static ResolvedJavaType typeOrNull(Stamp stamp) { - if (stamp instanceof ObjectStamp && stamp.isLegal()) { - return ((ObjectStamp) stamp).type(); - } - return null; - } - - /** - * Checks whether this {@link ValueNode} represents a {@linkplain Stamp#isLegal() legal} Object - * value whose java type is known exactly. If this method returns true then the - * {@linkplain ResolvedJavaType java type} returned by {@link #typeOrNull(ValueNode)} is the - * concrete dynamic/runtime java type of this value. - * - * @param node the node to check - * @return true if this node represents a legal object value whose java type is known exactly - */ - public static boolean isExactType(ValueNode node) { - return isExactType(node.stamp()); - } - - /** - * Checks whether this {@link Stamp} represents a {@linkplain Stamp#isLegal() legal} Object - * stamp whose {@linkplain ResolvedJavaType java type} is known exactly. If this method returns - * true then the java type returned by {@link #typeOrNull(Stamp)} is the only concrete - * dynamic/runtime java type possible for values of this stamp. - * - * @param stamp the stamp to check - * @return true if this node represents a legal object stamp whose java type is known exactly - */ - public static boolean isExactType(Stamp stamp) { - if (stamp instanceof ObjectStamp && stamp.isLegal()) { - return ((ObjectStamp) stamp).isExactType(); - } - return false; - } } diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampTool.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampTool.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampTool.java Tue Apr 22 14:15:24 2014 +0200 @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.calc.*; /** @@ -451,4 +452,110 @@ } return null; } + + /** + * Checks whether this {@link ValueNode} represents a {@linkplain Stamp#isLegal() legal} Object + * value which is known to be always null. + * + * @param node the node to check + * @return true if this node represents a legal object value which is known to be always null + */ + public static boolean isObjectAlwaysNull(ValueNode node) { + return isObjectAlwaysNull(node.stamp()); + } + + /** + * Checks whether this {@link Stamp} represents a {@linkplain Stamp#isLegal() legal} Object + * stamp whose values are known to be always null. + * + * @param stamp the stamp to check + * @return true if this stamp represents a legal object stamp whose values are known to be + * always null + */ + public static boolean isObjectAlwaysNull(Stamp stamp) { + if (stamp instanceof ObjectStamp && stamp.isLegal()) { + return ((ObjectStamp) stamp).alwaysNull(); + } + return false; + } + + /** + * Checks whether this {@link ValueNode} represents a {@linkplain Stamp#isLegal() legal} Object + * value which is known to never be null. + * + * @param node the node to check + * @return true if this node represents a legal object value which is known to never be null + */ + public static boolean isObjectNonNull(ValueNode node) { + return isObjectNonNull(node.stamp()); + } + + /** + * Checks whether this {@link Stamp} represents a {@linkplain Stamp#isLegal() legal} Object + * stamp whose values known to be always null. + * + * @param stamp the stamp to check + * @return true if this stamp represents a legal object stamp whose values are known to be + * always null + */ + public static boolean isObjectNonNull(Stamp stamp) { + if (stamp instanceof ObjectStamp && stamp.isLegal()) { + return ((ObjectStamp) stamp).nonNull(); + } + return false; + } + + /** + * Returns the {@linkplain ResolvedJavaType java type} this {@linkplain ValueNode} has if it is + * a {@linkplain Stamp#isLegal() legal} Object value. + * + * @param node the node to check + * @return the javat type this value has if it is a legal Object type, null otherwise + */ + public static ResolvedJavaType typeOrNull(ValueNode node) { + return typeOrNull(node.stamp()); + } + + /** + * Returns the {@linkplain ResolvedJavaType java type} this {@linkplain Stamp} has if it is a + * {@linkplain Stamp#isLegal() legal} Object stamp. + * + * @param stamp the stamp to check + * @return the java type this stamp has if it is a legal Object stamp, null otherwise + */ + public static ResolvedJavaType typeOrNull(Stamp stamp) { + if (stamp instanceof ObjectStamp && stamp.isLegal()) { + return ((ObjectStamp) stamp).type(); + } + return null; + } + + /** + * Checks whether this {@link ValueNode} represents a {@linkplain Stamp#isLegal() legal} Object + * value whose java type is known exactly. If this method returns true then the + * {@linkplain ResolvedJavaType java type} returned by {@link #typeOrNull(ValueNode)} is the + * concrete dynamic/runtime java type of this value. + * + * @param node the node to check + * @return true if this node represents a legal object value whose java type is known exactly + */ + public static boolean isExactType(ValueNode node) { + return isExactType(node.stamp()); + } + + /** + * Checks whether this {@link Stamp} represents a {@linkplain Stamp#isLegal() legal} Object + * stamp whose {@linkplain ResolvedJavaType java type} is known exactly. If this method returns + * true then the java type returned by {@link #typeOrNull(Stamp)} is the only concrete + * dynamic/runtime java type possible for values of this stamp. + * + * @param stamp the stamp to check + * @return true if this node represents a legal object stamp whose java type is known exactly + */ + public static boolean isExactType(Stamp stamp) { + if (stamp instanceof ObjectStamp && stamp.isLegal()) { + return ((ObjectStamp) stamp).isExactType(); + } + return false; + } } diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java Tue Apr 22 14:15:24 2014 +0200 @@ -152,7 +152,7 @@ break; } } - if (type != null && type != ObjectStamp.typeOrNull(node)) { + if (type != null && type != StampTool.typeOrNull(node)) { newKnownTypes.put(node, type); } } @@ -235,15 +235,15 @@ public ResolvedJavaType getNodeType(ValueNode node) { ResolvedJavaType result = knownTypes.get(GraphUtil.unproxify(node)); - return result == null ? ObjectStamp.typeOrNull(node) : result; + return result == null ? StampTool.typeOrNull(node) : result; } public boolean isNull(ValueNode value) { - return ObjectStamp.isObjectAlwaysNull(value) || knownNull.contains(GraphUtil.unproxify(value)); + return StampTool.isObjectAlwaysNull(value) || knownNull.contains(GraphUtil.unproxify(value)); } public boolean isNonNull(ValueNode value) { - return ObjectStamp.isObjectNonNull(value) || knownNonNull.contains(GraphUtil.unproxify(value)); + return StampTool.isObjectNonNull(value) || knownNonNull.contains(GraphUtil.unproxify(value)); } @Override @@ -812,7 +812,7 @@ ValueNode receiver = callTarget.receiver(); if (receiver != null && (callTarget.invokeKind() == InvokeKind.Interface || callTarget.invokeKind() == InvokeKind.Virtual)) { ResolvedJavaType type = state.getNodeType(receiver); - if (!Objects.equals(type, ObjectStamp.typeOrNull(receiver))) { + if (!Objects.equals(type, StampTool.typeOrNull(receiver))) { ResolvedJavaMethod method = type.resolveMethod(callTarget.targetMethod()); if (method != null) { if (method.canBeStaticallyBound() || Modifier.isFinal(type.getModifiers())) { diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java Tue Apr 22 14:15:24 2014 +0200 @@ -1521,7 +1521,7 @@ assert !callTarget.isStatic() : callTarget.targetMethod(); StructuredGraph graph = callTarget.graph(); ValueNode firstParam = callTarget.arguments().get(0); - if (firstParam.getKind() == Kind.Object && !ObjectStamp.isObjectNonNull(firstParam)) { + if (firstParam.getKind() == Kind.Object && !StampTool.isObjectNonNull(firstParam)) { IsNullNode condition = graph.unique(new IsNullNode(firstParam)); Stamp stamp = firstParam.stamp().join(objectNonNull()); GuardingPiNode nonNullReceiver = graph.add(new GuardingPiNode(firstParam, condition, true, NullCheckException, InvalidateReprofile, stamp)); diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.phases/src/com/oracle/graal/phases/verify/VerifyUsageWithEquals.java --- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/verify/VerifyUsageWithEquals.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/verify/VerifyUsageWithEquals.java Tue Apr 22 14:15:24 2014 +0200 @@ -45,7 +45,7 @@ private boolean isAssignableType(ValueNode node, MetaAccessProvider metaAccess) { if (node.stamp() instanceof ObjectStamp) { ResolvedJavaType valueType = metaAccess.lookupJavaType(klass); - ResolvedJavaType nodeType = ObjectStamp.typeOrNull(node); + ResolvedJavaType nodeType = StampTool.typeOrNull(node); if (nodeType != null && valueType.isAssignableFrom(nodeType)) { return true; diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java Tue Apr 22 14:15:24 2014 +0200 @@ -251,7 +251,7 @@ if (methodCallTargetNode.targetMethod().isConstructor()) { ResolvedJavaType runtimeException = providers.getMetaAccess().lookupJavaType(RuntimeException.class); ResolvedJavaType controlFlowException = providers.getMetaAccess().lookupJavaType(ControlFlowException.class); - ResolvedJavaType exceptionType = Objects.requireNonNull(ObjectStamp.typeOrNull(methodCallTargetNode.receiver().stamp())); + ResolvedJavaType exceptionType = Objects.requireNonNull(StampTool.typeOrNull(methodCallTargetNode.receiver().stamp())); if (runtimeException.isAssignableFrom(methodCallTargetNode.targetMethod().getDeclaringClass()) && !controlFlowException.isAssignableFrom(exceptionType)) { DeoptimizeNode deoptNode = methodCallTargetNode.graph().add(new DeoptimizeNode(DeoptimizationAction.InvalidateRecompile, DeoptimizationReason.UnreachedCode)); FixedNode invokeNode = methodCallTargetNode.invoke().asNode(); diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/LoadIndexedFinalNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/LoadIndexedFinalNode.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/LoadIndexedFinalNode.java Tue Apr 22 14:15:24 2014 +0200 @@ -59,7 +59,7 @@ } private static Stamp createStamp(ValueNode array, Kind kind) { - ResolvedJavaType type = ObjectStamp.typeOrNull(array); + ResolvedJavaType type = StampTool.typeOrNull(array); if (kind == Kind.Object && type != null) { return StampFactory.declared(type.getComponentType()); } else { diff -r d90e5c22ba55 -r 61363577a184 graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java --- a/graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java Tue Apr 22 11:37:15 2014 +0200 +++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java Tue Apr 22 14:15:24 2014 +0200 @@ -144,7 +144,7 @@ * own and not in the stamp, {@link #changeToWord} does not perform all necessary changes. */ protected void rewriteAccessIndexed(StructuredGraph graph, AccessIndexedNode node) { - ResolvedJavaType arrayType = ObjectStamp.typeOrNull(node.array()); + ResolvedJavaType arrayType = StampTool.typeOrNull(node.array()); /* * There are cases where the array does not have a known type yet, i.e., the type is null. * In that case we assume it is not a word type. @@ -403,7 +403,7 @@ } protected boolean isWord(ValueNode node) { - return isWord(ObjectStamp.typeOrNull(node)); + return isWord(StampTool.typeOrNull(node)); } protected boolean isWord(ResolvedJavaType type) {