Skip to content

Commit

Permalink
Turn HandlePrimitiveFailedNoopNode into singleton
Browse files Browse the repository at this point in the history
  • Loading branch information
fniephaus committed Mar 3, 2021
1 parent ce04a9e commit 6b17dc9
Showing 1 changed file with 20 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.oracle.truffle.api.dsl.CachedContext;
import com.oracle.truffle.api.dsl.Specialization;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.nodes.Node;
import com.oracle.truffle.api.nodes.NodeCost;
import com.oracle.truffle.api.nodes.NodeInfo;

Expand All @@ -21,13 +22,12 @@
import de.hpi.swa.trufflesqueak.nodes.accessing.ArrayObjectNodes.ArrayObjectSizeNode;
import de.hpi.swa.trufflesqueak.nodes.context.frame.FrameStackPushNode;

@NodeInfo(cost = NodeCost.NONE)
public abstract class HandlePrimitiveFailedNode extends AbstractNode {
public static HandlePrimitiveFailedNode create(final CompiledCodeObject code) {
if (code.hasStoreIntoTemp1AfterCallPrimitive()) {
return HandlePrimitiveFailedImplNodeGen.create();
} else {
return new HandlePrimitiveFailedNoopNode();
return HandlePrimitiveFailedNoopNode.SINGLETON;
}
}

Expand Down Expand Up @@ -57,10 +57,28 @@ protected static final void doHandleRawValue(final VirtualFrame frame, final int
}
}

@NodeInfo(cost = NodeCost.NONE)
private static final class HandlePrimitiveFailedNoopNode extends HandlePrimitiveFailedNode {
private static final HandlePrimitiveFailedNoopNode SINGLETON = new HandlePrimitiveFailedNoopNode();

@Override
public void executeHandle(final VirtualFrame frame, final int reasonCode) {
// nothing to do
}

@Override
public boolean isAdoptable() {
return false;
}

@Override
public Node copy() {
return SINGLETON;
}

@Override
public Node deepCopy() {
return SINGLETON;
}
}
}

0 comments on commit 6b17dc9

Please sign in to comment.