Skip to content

Commit 3f01afe

Browse files
committed
Help the stupid partial evaluator by moving the loop into its own method
[TODO: report this, such limitations are serious annoyance in practice] Signed-off-by: Stefan Marr <git@stefan-marr.de>
1 parent 9e67352 commit 3f01afe

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/som/interpreter/nodes/MessageSendNode.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,20 @@ protected AbstractMessageSendNode(final ExpressionNode receiver,
4545
}
4646

4747
@Override
48-
@ExplodeLoop
4948
public final Object executeGeneric(final VirtualFrame frame) {
5049
Object rcvr = receiverNode.executeGeneric(frame);
5150

51+
Object[] arguments = evaluateArguments(frame);
52+
return executeEvaluated(frame, rcvr, arguments);
53+
}
54+
55+
@ExplodeLoop
56+
private Object[] evaluateArguments(final VirtualFrame frame) {
5257
Object[] arguments = new Object[argumentNodes.length];
5358
for (int i = 0; i < argumentNodes.length; i++) {
5459
arguments[i] = argumentNodes[i].executeGeneric(frame);
5560
}
56-
return executeEvaluated(frame, rcvr, arguments);
61+
return arguments;
5762
}
5863
}
5964

0 commit comments

Comments
 (0)