Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jruby/jruby
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 392d1e096d9c
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 3956fba4a214
Choose a head ref
  • 3 commits
  • 60 files changed
  • 1 contributor

Commits on May 29, 2015

  1. Copy the full SHA
    781a021 View commit details
  2. Copy the full SHA
    4fcc7df View commit details
  3. Copy the full SHA
    3956fba View commit details
Showing with 1,441 additions and 1,425 deletions.
  1. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/arguments/ReadKeywordRestArgumentNode.java
  2. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/cast/ArrayCastNode.java
  3. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/cast/SingleValueCastNode.java
  4. +4 −3 truffle/src/main/java/org/jruby/truffle/nodes/cast/SplatCastNode.java
  5. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/control/WhenSplatNode.java
  6. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/BindingNodes.java
  7. +11 −10 truffle/src/main/java/org/jruby/truffle/nodes/core/KernelNodes.java
  8. +9 −8 truffle/src/main/java/org/jruby/truffle/nodes/core/MatchDataNodes.java
  9. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/MethodNodes.java
  10. +10 −9 truffle/src/main/java/org/jruby/truffle/nodes/core/ModuleNodes.java
  11. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/ObjectSpaceNodes.java
  12. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/ProcNodes.java
  13. +101 −23 truffle/src/main/java/org/jruby/truffle/nodes/core/StringNodes.java
  14. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/SymbolNodes.java
  15. +3 −3 truffle/src/main/java/org/jruby/truffle/nodes/core/TrufflePrimitiveNodes.java
  16. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/UnboundMethodNodes.java
  17. +25 −25 truffle/src/main/java/org/jruby/truffle/nodes/core/array/AppendManyNode.java
  18. +18 −18 truffle/src/main/java/org/jruby/truffle/nodes/core/array/AppendOneNode.java
  19. +13 −13 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayBuilderNode.java
  20. +4 −4 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayConcatNode.java
  21. +11 −11 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayDropTailNode.java
  22. +4 −4 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayDupNode.java
  23. +8 −8 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayGetTailNode.java
  24. +26 −26 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayGuards.java
  25. +3 −3 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayLiteralNode.java
  26. +783 −523 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayNodes.java
  27. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayPushNode.java
  28. +1 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayReadDenormalizedNode.java
  29. +5 −5 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayReadNormalizedNode.java
  30. +1 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayReadSliceDenormalizedNode.java
  31. +14 −14 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayReadSliceNormalizedNode.java
  32. +8 −8 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArraySliceNode.java
  33. +1 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayWriteDenormalizedNode.java
  34. +43 −43 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayWriteNormalizedNode.java
  35. +8 −8 truffle/src/main/java/org/jruby/truffle/nodes/core/array/EnsureCapacityArrayNode.java
  36. +7 −7 truffle/src/main/java/org/jruby/truffle/nodes/core/array/GeneralizeArrayNode.java
  37. +6 −6 truffle/src/main/java/org/jruby/truffle/nodes/core/array/PopOneNode.java
  38. +175 −104 truffle/src/main/java/org/jruby/truffle/nodes/core/hash/HashNodes.java
  39. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/core/hash/LookupEntryNode.java
  40. +3 −2 truffle/src/main/java/org/jruby/truffle/nodes/dispatch/RubyCallNode.java
  41. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/exceptions/RescueSplatNode.java
  42. +6 −5 truffle/src/main/java/org/jruby/truffle/nodes/methods/ExceptionTranslatingNode.java
  43. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/ByteArrayNodes.java
  44. +6 −7 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/IOPrimitiveNodes.java
  45. +4 −3 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/StringPrimitiveNodes.java
  46. +4 −3 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/VMPrimitiveNodes.java
  47. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/supercall/GeneralSuperCallNode.java
  48. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/supercall/GeneralSuperReCallNode.java
  49. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/yield/YieldNode.java
  50. +13 −11 truffle/src/main/java/org/jruby/truffle/runtime/RubyContext.java
  51. +12 −11 truffle/src/main/java/org/jruby/truffle/runtime/core/CoreLibrary.java
  52. +5 −280 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyArray.java
  53. +2 −1 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyException.java
  54. +7 −76 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyHash.java
  55. +2 −2 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyRegexp.java
  56. +3 −77 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyString.java
  57. +12 −11 truffle/src/main/java/org/jruby/truffle/runtime/hash/BucketsStrategy.java
  58. +16 −16 truffle/src/main/java/org/jruby/truffle/runtime/hash/HashOperations.java
  59. +2 −2 truffle/src/main/java/org/jruby/truffle/runtime/hash/PackedArrayStrategy.java
  60. +8 −7 truffle/src/main/java/org/jruby/truffle/runtime/subsystems/FeatureManager.java
Original file line number Diff line number Diff line change
@@ -14,6 +14,7 @@
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.core.hash.HashLiteralNode;
import org.jruby.truffle.nodes.core.hash.HashNodes;
import org.jruby.truffle.nodes.methods.MarkerNode;
import org.jruby.truffle.runtime.RubyArguments;
import org.jruby.truffle.runtime.RubyContext;
@@ -76,7 +77,7 @@ private Object lookupRestKeywordArgumentHash(VirtualFrame frame) {
entries.add(new KeyValue(keyValue.getKey(), keyValue.getValue()));
}

return HashOperations.verySlowFromEntries(getContext(), entries, hash.isCompareByIdentity());
return HashOperations.verySlowFromEntries(getContext(), entries, HashNodes.isCompareByIdentity(hash));
}

}
Original file line number Diff line number Diff line change
@@ -16,6 +16,7 @@
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.core.array.ArrayNodes;
import org.jruby.truffle.nodes.dispatch.CallDispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.nodes.dispatch.DispatchNode;
@@ -24,7 +25,6 @@
import org.jruby.truffle.runtime.control.RaiseException;
import org.jruby.truffle.runtime.core.RubyArray;
import org.jruby.truffle.runtime.core.RubyBasicObject;
import org.jruby.truffle.runtime.core.RubyBignum;

/*
* TODO(CS): could probably unify this with SplatCastNode with some final configuration options.
@@ -85,7 +85,7 @@ public Object cast(Object nil) {
return new RubyArray(getContext().getCoreLibrary().getArrayClass());

case ARRAY_WITH_NIL:
return RubyArray.fromObject(getContext().getCoreLibrary().getArrayClass(), nil());
return ArrayNodes.fromObject(getContext().getCoreLibrary().getArrayClass(), nil());

case NIL:
return nil;
Original file line number Diff line number Diff line change
@@ -9,14 +9,14 @@
*/
package org.jruby.truffle.nodes.cast;

import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
import com.oracle.truffle.api.dsl.NodeChild;
import com.oracle.truffle.api.dsl.Specialization;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.source.SourceSection;

import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.core.array.ArrayNodes;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.core.RubyArray;
import org.jruby.truffle.runtime.core.RubyBasicObject;
@@ -43,7 +43,7 @@ protected Object castSingle(Object[] args) {
@TruffleBoundary
@Specialization(guards = { "!noArguments(args)", "!singleArgument(args)" })
protected RubyArray castMany(Object[] args) {
return RubyArray.fromObjects(getContext().getCoreLibrary().getArrayClass(), args);
return ArrayNodes.fromObjects(getContext().getCoreLibrary().getArrayClass(), args);
}

protected boolean noArguments(Object[] args) {
Original file line number Diff line number Diff line change
@@ -18,6 +18,7 @@
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.core.array.ArrayDupNode;
import org.jruby.truffle.nodes.core.array.ArrayDupNodeGen;
import org.jruby.truffle.nodes.core.array.ArrayNodes;
import org.jruby.truffle.nodes.dispatch.CallDispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.nodes.dispatch.DispatchNode;
@@ -66,7 +67,7 @@ public RubyArray splat(Object nil) {
return new RubyArray(getContext().getCoreLibrary().getArrayClass());

case ARRAY_WITH_NIL:
return RubyArray.fromObject(getContext().getCoreLibrary().getArrayClass(), nil());
return ArrayNodes.fromObject(getContext().getCoreLibrary().getArrayClass(), nil());

default: {
CompilerAsserts.neverPartOfCompilation();
@@ -101,15 +102,15 @@ public RubyArray splat(VirtualFrame frame, Object object) {
return (RubyArray) array;
} else if (array == nil() || array == DispatchNode.MISSING) {
CompilerDirectives.transferToInterpreter();
return RubyArray.fromObject(getContext().getCoreLibrary().getArrayClass(), object);
return ArrayNodes.fromObject(getContext().getCoreLibrary().getArrayClass(), object);
} else {
throw new RaiseException(getContext().getCoreLibrary().typeErrorCantConvertTo(
object, getContext().getCoreLibrary().getArrayClass(), method, array, this)
);
}
}

return RubyArray.fromObject(getContext().getCoreLibrary().getArrayClass(), object);
return ArrayNodes.fromObject(getContext().getCoreLibrary().getArrayClass(), object);
}

}
Original file line number Diff line number Diff line change
@@ -14,6 +14,7 @@
import com.oracle.truffle.api.nodes.UnexpectedResultException;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.core.array.ArrayNodes;
import org.jruby.truffle.nodes.dispatch.CallDispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.runtime.RubyContext;
@@ -46,7 +47,7 @@ public boolean executeBoolean(VirtualFrame frame) {
throw new UnsupportedOperationException(e);
}

for (Object value : array.slowToArray()) {
for (Object value : ArrayNodes.slowToArray(array)) {
if (dispatchCaseEqual.callBoolean(frame, caseExpression, "===", null, value)) {
return true;
}
Original file line number Diff line number Diff line change
@@ -19,6 +19,7 @@
import com.oracle.truffle.api.frame.MaterializedFrame;
import com.oracle.truffle.api.source.SourceSection;

import org.jruby.truffle.nodes.core.array.ArrayNodes;
import org.jruby.truffle.nodes.locals.ReadFrameSlotNode;
import org.jruby.truffle.nodes.locals.ReadFrameSlotNodeGen;
import org.jruby.truffle.nodes.locals.WriteFrameSlotNode;
@@ -249,7 +250,7 @@ public RubyArray localVariables(RubyBinding binding) {
while (frame != null) {
for (Object name : frame.getFrameDescriptor().getIdentifiers()) {
if (name instanceof String) {
array.slowPush(getContext().getSymbol((String) name));
ArrayNodes.slowPush(array, getContext().getSymbol((String) name));
}
}

21 changes: 11 additions & 10 deletions truffle/src/main/java/org/jruby/truffle/nodes/core/KernelNodes.java
Original file line number Diff line number Diff line change
@@ -35,6 +35,7 @@
import org.jruby.truffle.nodes.core.KernelNodesFactory.CopyNodeFactory;
import org.jruby.truffle.nodes.core.KernelNodesFactory.SameOrEqualNodeFactory;
import org.jruby.truffle.nodes.core.KernelNodesFactory.SingletonMethodsNodeFactory;
import org.jruby.truffle.nodes.core.array.ArrayNodes;
import org.jruby.truffle.nodes.dispatch.*;
import org.jruby.truffle.nodes.objects.*;
import org.jruby.truffle.nodes.objectstorage.WriteHeadObjectFieldNode;
@@ -910,7 +911,7 @@ public RubyArray instanceVariables(RubyBasicObject self) {

for (Object name : instanceVariableNames) {
if (name instanceof String) {
array.slowPush(getContext().getSymbolTable().getSymbol((String) name));
ArrayNodes.slowPush(array, getContext().getSymbolTable().getSymbol((String) name));
}
}

@@ -1010,7 +1011,7 @@ public RubyArray localVariables() {

for (Object name : Truffle.getRuntime().getCallerFrame().getFrame(FrameInstance.FrameAccess.READ_ONLY, false).getFrameDescriptor().getIdentifiers()) {
if (name instanceof String) {
array.slowPush(getContext().getSymbol((String) name));
ArrayNodes.slowPush(array, getContext().getSymbol((String) name));
}
}

@@ -1093,7 +1094,7 @@ public RubyArray methods(VirtualFrame frame, Object self, boolean regular) {

CompilerDirectives.transferToInterpreter();
if (regular) {
return RubyArray.fromObjects(getContext().getCoreLibrary().getArrayClass(),
return ArrayNodes.fromObjects(getContext().getCoreLibrary().getArrayClass(),
metaClass.filterMethodsOnObject(regular, MethodFilter.PUBLIC_PROTECTED).toArray());
} else {
if (singletonMethodsNode == null) {
@@ -1149,7 +1150,7 @@ public RubyArray privateMethods(VirtualFrame frame, Object self, boolean include
RubyClass metaClass = metaClassNode.executeMetaClass(frame, self);

CompilerDirectives.transferToInterpreter();
return RubyArray.fromObjects(getContext().getCoreLibrary().getArrayClass(),
return ArrayNodes.fromObjects(getContext().getCoreLibrary().getArrayClass(),
metaClass.filterMethodsOnObject(includeAncestors, MethodFilter.PRIVATE).toArray());
}

@@ -1203,7 +1204,7 @@ public RubyArray protectedMethods(VirtualFrame frame, Object self, boolean inclu
RubyClass metaClass = metaClassNode.executeMetaClass(frame, self);

CompilerDirectives.transferToInterpreter();
return RubyArray.fromObjects(getContext().getCoreLibrary().getArrayClass(),
return ArrayNodes.fromObjects(getContext().getCoreLibrary().getArrayClass(),
metaClass.filterMethodsOnObject(includeAncestors, MethodFilter.PROTECTED).toArray());
}

@@ -1239,7 +1240,7 @@ public RubyArray publicMethods(VirtualFrame frame, Object self, boolean includeA
RubyClass metaClass = metaClassNode.executeMetaClass(frame, self);

CompilerDirectives.transferToInterpreter();
return RubyArray.fromObjects(getContext().getCoreLibrary().getArrayClass(),
return ArrayNodes.fromObjects(getContext().getCoreLibrary().getArrayClass(),
metaClass.filterMethodsOnObject(includeAncestors, MethodFilter.PUBLIC).toArray());
}

@@ -1543,7 +1544,7 @@ public RubyArray singletonMethods(VirtualFrame frame, Object self, boolean inclu
}

CompilerDirectives.transferToInterpreter();
return RubyArray.fromObjects(getContext().getCoreLibrary().getArrayClass(),
return ArrayNodes.fromObjects(getContext().getCoreLibrary().getArrayClass(),
metaClass.filterSingletonMethods(includeAncestors, MethodFilter.PUBLIC_PROTECTED).toArray());
}

@@ -1733,17 +1734,17 @@ private RubyString finishFormat(ByteList format, PackResult result) {
final RubyString string = getContext().makeString(new ByteList(result.getOutput(), 0, result.getOutputLength()));

if (format.length() == 0) {
string.forceEncoding(USASCIIEncoding.INSTANCE);
StringNodes.forceEncoding(string, USASCIIEncoding.INSTANCE);
} else {
switch (result.getEncoding()) {
case DEFAULT:
case ASCII_8BIT:
break;
case US_ASCII:
string.forceEncoding(USASCIIEncoding.INSTANCE);
StringNodes.forceEncoding(string, USASCIIEncoding.INSTANCE);
break;
case UTF_8:
string.forceEncoding(UTF8Encoding.INSTANCE);
StringNodes.forceEncoding(string, UTF8Encoding.INSTANCE);
break;
default:
throw new UnsupportedOperationException();
Original file line number Diff line number Diff line change
@@ -19,6 +19,7 @@
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.coerce.ToIntNode;
import org.jruby.truffle.nodes.coerce.ToIntNodeGen;
import org.jruby.truffle.nodes.core.array.ArrayNodes;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.UndefinedPlaceholder;
import org.jruby.truffle.runtime.control.RaiseException;
@@ -44,7 +45,7 @@ public Object getIndex(RubyMatchData matchData, int index, UndefinedPlaceholder
CompilerDirectives.transferToInterpreter();

final Object[] values = matchData.getValues();
final int normalizedIndex = RubyArray.normalizeIndex(values.length, index);
final int normalizedIndex = ArrayNodes.normalizeIndex(values.length, index);

if ((normalizedIndex < 0) || (normalizedIndex >= values.length)) {
return nil();
@@ -58,7 +59,7 @@ public Object getIndex(RubyMatchData matchData, int index, int length) {
CompilerDirectives.transferToInterpreter();
// TODO BJF 15-May-2015 Need to handle negative indexes and lengths and out of bounds
final Object[] values = matchData.getValues();
final int normalizedIndex = RubyArray.normalizeIndex(values.length, index);
final int normalizedIndex = ArrayNodes.normalizeIndex(values.length, index);
final Object[] store = Arrays.copyOfRange(values, normalizedIndex, normalizedIndex + length);
return new RubyArray(getContext().getCoreLibrary().getArrayClass(), store, length);
}
@@ -111,9 +112,9 @@ public Object getIndex(VirtualFrame frame, RubyMatchData matchData, Object index
@Specialization(guards = {"!isRubySymbol(range)", "!isRubyString(range)"})
public Object getIndex(VirtualFrame frame, RubyMatchData matchData, RubyRange.IntegerFixnumRange range, UndefinedPlaceholder undefinedPlaceholder) {
final Object[] values = matchData.getValues();
final int normalizedIndex = RubyArray.normalizeIndex(values.length, range.getBegin());
final int end = RubyArray.normalizeIndex(values.length, range.getEnd());
final int exclusiveEnd = RubyArray.clampExclusiveIndex(values.length, range.doesExcludeEnd() ? end : end + 1);
final int normalizedIndex = ArrayNodes.normalizeIndex(values.length, range.getBegin());
final int end = ArrayNodes.normalizeIndex(values.length, range.getEnd());
final int exclusiveEnd = ArrayNodes.clampExclusiveIndex(values.length, range.doesExcludeEnd() ? end : end + 1);
final int length = exclusiveEnd - normalizedIndex;

final Object[] store = Arrays.copyOfRange(values, normalizedIndex, normalizedIndex + length);
@@ -159,7 +160,7 @@ public CapturesNode(RubyContext context, SourceSection sourceSection) {
public RubyArray toA(RubyMatchData matchData) {
CompilerDirectives.transferToInterpreter();

return RubyArray.fromObjects(getContext().getCoreLibrary().getArrayClass(), matchData.getCaptures());
return ArrayNodes.fromObjects(getContext().getCoreLibrary().getArrayClass(), matchData.getCaptures());
}
}

@@ -241,7 +242,7 @@ public ToANode(RubyContext context, SourceSection sourceSection) {
public RubyArray toA(RubyMatchData matchData) {
CompilerDirectives.transferToInterpreter();

return RubyArray.fromObjects(getContext().getCoreLibrary().getArrayClass(), matchData.getValues());
return ArrayNodes.fromObjects(getContext().getCoreLibrary().getArrayClass(), matchData.getValues());
}
}

@@ -278,7 +279,7 @@ public RubyArray valuesAt(RubyMatchData matchData, Object[] args) {
indicies[n] = (int) args[n];
}

return RubyArray.fromObjects(getContext().getCoreLibrary().getArrayClass(), matchData.valuesAt(indicies));
return ArrayNodes.fromObjects(getContext().getCoreLibrary().getArrayClass(), matchData.valuesAt(indicies));
}

}
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@
import org.jruby.runtime.ArgumentDescriptor;
import org.jruby.runtime.Helpers;
import org.jruby.truffle.nodes.core.BasicObjectNodes.ReferenceEqualNode;
import org.jruby.truffle.nodes.core.array.ArrayNodes;
import org.jruby.truffle.nodes.objects.ClassNode;
import org.jruby.truffle.nodes.objects.ClassNodeGen;
import org.jruby.truffle.runtime.RubyArguments;
@@ -234,7 +235,7 @@ public Object sourceLocation(RubyBasicObject method) {
return nil();
} else {
RubyString file = getContext().makeString(sourceSection.getSource().getName());
return RubyArray.fromObjects(getContext().getCoreLibrary().getArrayClass(),
return ArrayNodes.fromObjects(getContext().getCoreLibrary().getArrayClass(),
file, sourceSection.getStartLine());
}
}
Loading