# HG changeset patch # User Lukas Stadler # Date 1334927530 -7200 # Node ID e7f3f05414291e5b4f10b39e1f03011808c8e23b # Parent 6b2d030d01ff3d57e655a8833d85d90e39181579# Parent a6632d6e2753b2a431add9836fd92ef819fcc4e3 Merge diff -r 6b2d030d01ff -r e7f3f0541429 graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Fri Apr 20 15:03:02 2012 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Fri Apr 20 15:12:10 2012 +0200 @@ -274,6 +274,7 @@ } successorNamesMap.put(offset, name); } else if (field.isAnnotationPresent(Node.Data.class)) { + assert !Node.class.isAssignableFrom(field.getType()) : "cannot have a node as data: " + currentClazz; dataOffsets.add(offset); dataTypes.add(type); dataNames.add(name); diff -r 6b2d030d01ff -r e7f3f0541429 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 Fri Apr 20 15:03:02 2012 +0200 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Fri Apr 20 15:12:10 2012 +0200 @@ -189,7 +189,7 @@ // Add safepoints to loop ends if (GraalOptions.GenLoopSafepoints) { for (LoopEndNode loopEnd : currentGraph.getNodes(LoopEndNode.class)) { - SafepointNode safepoint = currentGraph.add(new SafepointNode(loopEnd)); + SafepointNode safepoint = currentGraph.add(new SafepointNode()); currentGraph.addBeforeFixed(loopEnd, safepoint); } } diff -r 6b2d030d01ff -r e7f3f0541429 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SafepointNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SafepointNode.java Fri Apr 20 15:03:02 2012 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SafepointNode.java Fri Apr 20 15:12:10 2012 +0200 @@ -31,14 +31,8 @@ */ public final class SafepointNode extends FixedWithNextNode implements LIRLowerable, Node.IterableNodeType { - /** - * Will be null if this safepoint is not associated with a loop end. - */ - @Data private final LoopEndNode loopEnd; - - public SafepointNode(LoopEndNode loopEnd) { + public SafepointNode() { super(StampFactory.illegal()); - this.loopEnd = loopEnd; } @@ -51,6 +45,9 @@ * Gets the loop end (if any) associated with this safepoint. */ public LoopEndNode loopEnd() { - return loopEnd; + if (next() instanceof LoopEndNode) { + return (LoopEndNode) next(); + } + return null; } }