Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[Truffle] Refactoring ReturnEnumeratorIfNoBlockNode arguments unshift…
… into RubyArguments method.
  • Loading branch information
bjfish committed Mar 19, 2015
1 parent a536f0f commit ab90f79
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 9 deletions.
Expand Up @@ -34,7 +34,7 @@ public Object execute(VirtualFrame frame) {
toEnumNode = insert(DispatchHeadNodeFactory.createMethodCall(getContext()));
}

return toEnumNode.call(frame, RubyArguments.getSelf(frame.getArguments()), "to_enum", null, unshift(getContext().getSymbolTable().getSymbol(methodName), RubyArguments.extractUserArguments(frame.getArguments())));
return toEnumNode.call(frame, RubyArguments.getSelf(frame.getArguments()), "to_enum", null, RubyArguments.extractUserArgumentsWithUnshift(getContext().getSymbolTable().getSymbol(methodName), frame.getArguments()));

} else {

Expand All @@ -43,12 +43,4 @@ public Object execute(VirtualFrame frame) {
}
}

private static <T> T[] unshift(T first, T[] array) {
final int length = array.length;
final T[] result = Arrays.copyOf(array, length + 1);
System.arraycopy(array, 0, result, 1, length);
result[0] = first;
return result;
}

}
Expand Up @@ -57,6 +57,12 @@ public static Object[] extractUserArguments(Object[] arguments) {
return ArrayUtils.extractRange(arguments, RUNTIME_ARGUMENT_COUNT, arguments.length);
}

public static Object[] extractUserArgumentsWithUnshift(Object first, Object[] arguments) {
final Object[] range = ArrayUtils.extractRange(arguments, BLOCK_INDEX, arguments.length);
range[0] = first;
return range;
}

public static Object[] concatUserArguments(Object o, Object[] arguments) {
final Object[] concatenatedArguments;

Expand Down

1 comment on commit ab90f79

@chrisseaton
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great

Please sign in to comment.