Skip to content
Snippets Groups Projects
Commit 25dd1f98 authored by Florian Angerer's avatar Florian Angerer
Browse files

Storing evaluated args in locals.

parent 2d7c6bf2
No related branches found
No related tags found
No related merge requests found
......@@ -242,7 +242,8 @@ public abstract class InternalNode extends OperatorNode {
protected Object[] prepareArgs(VirtualFrame frame) {
Object[] args = new Object[arguments.length];
for (int i = 0; i < args.length; i++) {
args[i] = arguments[i].execute(frame);
Object execute = arguments[i].execute(frame);
args[i] = execute;
}
return args;
}
......@@ -300,11 +301,13 @@ public abstract class InternalNode extends OperatorNode {
Object[] args = new Object[factory.getSignature().getLength()];
for (int i = 0; i < args.length - 1; i++) {
args[i] = arguments[i].execute(frame);
Object arg = arguments[i].execute(frame);
args[i] = arg;
}
Object[] varArgs = new Object[arguments.length - (factory.getSignature().getLength() - 1)];
for (int i = 0; i < varArgs.length; i++) {
varArgs[i] = arguments[args.length - 1 + i].execute(frame);
Object arg = arguments[args.length - 1 + i].execute(frame);
varArgs[i] = arg;
}
args[args.length - 1] = new RArgsValuesAndNames(varArgs, ArgumentsSignature.empty(varArgs.length));
return args;
......
......@@ -540,10 +540,10 @@ public abstract class PromiseNode extends RNode {
evaluatedArgs[i] = argValue;
} else {
size++;
evaluatedArgs[i] = promiseCheckHelper.checkEvaluate(frame, argValue);
Object arg = promiseCheckHelper.checkEvaluate(frame, argValue);
evaluatedArgs[i] = arg;
}
if (evaluatedArgs[i] == null) {
CompilerDirectives.transferToInterpreterAndInvalidate();
throw RInternalError.shouldNotReachHere("evaluated argument must not be null");
}
}
......@@ -565,10 +565,10 @@ public abstract class PromiseNode extends RNode {
evaluatedArgs[i] = argValue;
} else {
size++;
evaluatedArgs[i] = promiseCheckHelper.checkEvaluate(frame, argValue);
Object arg = promiseCheckHelper.checkEvaluate(frame, argValue);
evaluatedArgs[i] = arg;
}
if (evaluatedArgs[i] == null) {
CompilerDirectives.transferToInterpreterAndInvalidate();
throw RInternalError.shouldNotReachHere("evaluated argument must not be null");
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment