Skip to content

Commit

Permalink
Showing 2 changed files with 4 additions and 17 deletions.
13 changes: 0 additions & 13 deletions core/src/main/java/org/jruby/truffle/nodes/core/ArrayNodes.java
Original file line number Diff line number Diff line change
@@ -642,7 +642,6 @@ public abstract static class IndexNode extends ArrayCoreMethodNode {
@Child protected AtNode atNode;

private final BranchProfile outOfBounds = BranchProfile.create();
private final BranchProfile indexAtEnd = BranchProfile.create();

public IndexNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
@@ -666,9 +665,6 @@ public Object sliceIntegerFixnum(RubyArray array, int start, int length) {
if (normalisedIndex < 0 || normalisedIndex > array.getSize() || length < 0) {
outOfBounds.enter();
return getContext().getCoreLibrary().getNilObject();
} else if (normalisedIndex == array.getSize()) {
indexAtEnd.enter();
return new RubyArray(getContext().getCoreLibrary().getArrayClass(), null, 0);
} else {
final int end = Math.min(array.getSize(), normalisedIndex + length);

@@ -683,9 +679,6 @@ public Object sliceLongFixnum(RubyArray array, int start, int length) {
if (normalisedIndex < 0 || normalisedIndex > array.getSize() || length < 0) {
outOfBounds.enter();
return getContext().getCoreLibrary().getNilObject();
} else if (normalisedIndex == array.getSize()) {
indexAtEnd.enter();
return new RubyArray(getContext().getCoreLibrary().getArrayClass(), null, 0);
} else {
final int end = Math.min(array.getSize(), normalisedIndex + length);

@@ -700,9 +693,6 @@ public Object sliceFloat(RubyArray array, int start, int length) {
if (normalisedIndex < 0 || normalisedIndex > array.getSize() || length < 0) {
outOfBounds.enter();
return getContext().getCoreLibrary().getNilObject();
} else if (normalisedIndex == array.getSize()) {
indexAtEnd.enter();
return new RubyArray(getContext().getCoreLibrary().getArrayClass(), null, 0);
} else {
final int end = Math.min(array.getSize(), normalisedIndex + length);

@@ -717,9 +707,6 @@ public Object sliceObject(RubyArray array, int start, int length) {
if (normalisedIndex < 0 || normalisedIndex > array.getSize() || length < 0) {
outOfBounds.enter();
return getContext().getCoreLibrary().getNilObject();
} else if (normalisedIndex == array.getSize()) {
indexAtEnd.enter();
return new RubyArray(getContext().getCoreLibrary().getArrayClass(), null, 0);
} else {
final int end = Math.min(array.getSize(), normalisedIndex + length);

Original file line number Diff line number Diff line change
@@ -21,7 +21,7 @@ public abstract class ArrayUtils {
/**
* Extracts part of an array into a newly allocated Object[] array. Does not perform safety checks on parameters.
* @param source the source array whose values should be extracted
* @param start the start index, must be >= 0 and < source.length
* @param start the start index, must be >= 0 and <= source.length

This comment has been minimized.

Copy link
@eregon

eregon Jan 13, 2015

Author Member

@thomaswue Can you confirm this fix is right? (see the asserts below)
Of course this potentially create empty arrays but that is the caller responsibility to do something if it should be avoided.

This comment has been minimized.

Copy link
@thomaswue

thomaswue Jan 13, 2015

Contributor

Yes, this fix is correct. I fixed this in the code but forgot to update the comment.

* @param end the end index (exclusive), must be >= 0 and <= source.length and >= start
* @return a newly allocated array with the extracted elements and length (end - start)
*/
@@ -45,7 +45,7 @@ private static boolean checkExtractRangeArgs(int[] source, int start, int end) {
/**
* Extracts part of an array into a newly allocated Object[] array. Does not perform safety checks on parameters.
* @param source the source array whose values should be extracted
* @param start the start index, must be >= 0 and < source.length
* @param start the start index, must be >= 0 and <= source.length
* @param end the end index (exclusive), must be >= 0 and <= source.length and >= start
* @return a newly allocated array with the extracted elements and length (end - start)
*/
@@ -69,7 +69,7 @@ private static boolean checkExtractRangeArgs(long[] source, int start, int end)
/**
* Extracts part of an array into a newly allocated Object[] array. Does not perform safety checks on parameters.
* @param source the source array whose values should be extracted
* @param start the start index, must be >= 0 and < source.length
* @param start the start index, must be >= 0 and <= source.length
* @param end the end index (exclusive), must be >= 0 and <= source.length and >= start
* @return a newly allocated array with the extracted elements and length (end - start)
*/
@@ -93,7 +93,7 @@ private static boolean checkExtractRangeArgs(double[] source, int start, int end
/**
* Extracts part of an array into a newly allocated Object[] array. Does not perform safety checks on parameters.
* @param source the source array whose values should be extracted
* @param start the start index, must be >= 0 and < source.length
* @param start the start index, must be >= 0 and <= source.length
* @param end the end index (exclusive), must be >= 0 and <= source.length and >= start
* @return a newly allocated array with the extracted elements and length (end - start)
*/

0 comments on commit 66aec1f

Please sign in to comment.