Skip to content
Snippets Groups Projects
Commit 25d47c41 authored by Prahlad Joshi's avatar Prahlad Joshi
Browse files

Minor fixes.

parent b720588c
No related branches found
No related tags found
No related merge requests found
......@@ -14,17 +14,17 @@ package com.oracle.truffle.r.nodes.builtin.base;
import java.util.*;
import com.oracle.truffle.api.*;
import com.oracle.truffle.api.CompilerDirectives.*;
import com.oracle.truffle.api.dsl.*;
import com.oracle.truffle.api.frame.*;
import com.oracle.truffle.r.nodes.*;
import com.oracle.truffle.r.nodes.binary.*;
import com.oracle.truffle.r.nodes.builtin.*;
import com.oracle.truffle.r.nodes.builtin.RBuiltin.*;
import com.oracle.truffle.r.nodes.unary.*;
import com.oracle.truffle.r.runtime.*;
import com.oracle.truffle.r.runtime.data.model.*;
@RBuiltin(name = "anyDuplicated", kind = RBuiltinKind.INTERNAL, lastParameterKind = LastParameterKind.VAR_ARGS_SPECIALIZE)
@RBuiltin(name = "anyDuplicated", kind = RBuiltinKind.INTERNAL)
public abstract class AnyDuplicated extends RBuiltinNode {
@Child private CastTypeNode castTypeNode;
......@@ -82,6 +82,7 @@ public abstract class AnyDuplicated extends RBuiltinNode {
return getIndexFromLast(x, (RAbstractVector) (castTypeNode.execute(frame, incomparables, xType)));
}
@SlowPath
private static int getIndexFromStart(RAbstractVector x, RAbstractVector incomparables) {
HashSet<Object> incompContents = new HashSet<>();
HashSet<Object> vectorContents = new HashSet<>();
......@@ -101,6 +102,7 @@ public abstract class AnyDuplicated extends RBuiltinNode {
return 0;
}
@SlowPath
private static int getIndexFromStart(RAbstractVector x) {
HashSet<Object> vectorContents = new HashSet<>();
vectorContents.add(x.getDataAtAsObject(0));
......@@ -114,6 +116,7 @@ public abstract class AnyDuplicated extends RBuiltinNode {
return 0;
}
@SlowPath
public static int getIndexFromLast(RAbstractVector x, RAbstractVector incomparables) {
HashSet<Object> incompContents = new HashSet<>();
HashSet<Object> vectorContents = new HashSet<>();
......@@ -133,6 +136,7 @@ public abstract class AnyDuplicated extends RBuiltinNode {
return 0;
}
@SlowPath
private static int getIndexFromLast(RAbstractVector x) {
HashSet<Object> vectorContents = new HashSet<>();
vectorContents.add(x.getDataAtAsObject(x.getLength() - 1));
......@@ -175,4 +179,4 @@ public abstract class AnyDuplicated extends RBuiltinNode {
typeof = insert(TypeofFactory.create(new RNode[1], this.getBuiltin()));
}
}
}
\ No newline at end of file
}
......@@ -469,10 +469,12 @@ public abstract class RCallNode extends RNode {
if (hasArgNodes) {
argNode = (RNode) arguments[i];
}
int parameterPosition = findParameterPosition(parameterNames, actualNames[i], matchedArgs, i, hasVarArgs, argNode);
if (parameterPosition >= 0) {
if (parameterPosition >= varArgIndex) {
/*
* This argument matches to ...
*/
++varArgMatches;
}
resultArgs[parameterPosition] = arguments[i];
......@@ -482,6 +484,11 @@ public abstract class RCallNode extends RNode {
}
}
}
/*
* To find the remaining arguments that can match to ... we should subtract sum of
* varArgIndex and number of variable arguments already matched from total number of
* arguments.
*/
int varArgCount = arguments.length - (varArgIndex + varArgMatches);
if (varArgIndex >= 0 && varArgCount >= 0) {
T[] varArgsArray = (T[]) Array.newInstance(arguments.getClass().getComponentType(), varArgCount);
......
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