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: 1e7bfc553b36
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: b3f1ee1a4cfb
Choose a head ref
  • 2 commits
  • 58 files changed
  • 1 contributor

Commits on May 10, 2015

  1. Copy the full SHA
    921d2d3 View commit details
  2. Copy the full SHA
    b3f1ee1 View commit details
Showing with 213 additions and 215 deletions.
  1. +4 −4 truffle/src/main/java/org/jruby/truffle/nodes/RubyGuards.java
  2. +1 −1 truffle/src/main/java/org/jruby/truffle/nodes/RubyNode.java
  3. +8 −8 truffle/src/main/java/org/jruby/truffle/nodes/cast/ArrayCastNode.java
  4. +3 −3 truffle/src/main/java/org/jruby/truffle/nodes/cast/BooleanCastNode.java
  5. +3 −3 truffle/src/main/java/org/jruby/truffle/nodes/cast/CmpIntNode.java
  6. +9 −9 truffle/src/main/java/org/jruby/truffle/nodes/cast/HashCastNode.java
  7. +3 −3 truffle/src/main/java/org/jruby/truffle/nodes/cast/ProcCastNode.java
  8. +2 −6 truffle/src/main/java/org/jruby/truffle/nodes/cast/ProcOrNullNode.java
  9. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/cast/SingleValueCastNode.java
  10. +4 −4 truffle/src/main/java/org/jruby/truffle/nodes/cast/SplatCastNode.java
  11. +4 −4 truffle/src/main/java/org/jruby/truffle/nodes/control/SequenceNode.java
  12. +1 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/BasicObjectNodes.java
  13. +1 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/ClassNodes.java
  14. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/EncodingConverterNodes.java
  15. +7 −7 truffle/src/main/java/org/jruby/truffle/nodes/core/EncodingNodes.java
  16. +5 −4 truffle/src/main/java/org/jruby/truffle/nodes/core/ExceptionNodes.java
  17. +2 −5 truffle/src/main/java/org/jruby/truffle/nodes/core/FiberNodes.java
  18. +3 −3 truffle/src/main/java/org/jruby/truffle/nodes/core/FloatNodes.java
  19. +11 −11 truffle/src/main/java/org/jruby/truffle/nodes/core/KernelNodes.java
  20. +9 −9 truffle/src/main/java/org/jruby/truffle/nodes/core/ModuleNodes.java
  21. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/core/ProcNodes.java
  22. +5 −5 truffle/src/main/java/org/jruby/truffle/nodes/core/RegexpNodes.java
  23. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/core/SymbolNodes.java
  24. +7 −7 truffle/src/main/java/org/jruby/truffle/nodes/core/ThreadNodes.java
  25. +7 −7 truffle/src/main/java/org/jruby/truffle/nodes/core/TrufflePrimitiveNodes.java
  26. +6 −6 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayNodes.java
  27. +3 −2 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayReadNormalizedNode.java
  28. +3 −2 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayReadSliceNormalizedNode.java
  29. +3 −3 truffle/src/main/java/org/jruby/truffle/nodes/core/hash/HashNodes.java
  30. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/debug/AssertConstantNode.java
  31. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/debug/AssertNotCompiledNode.java
  32. +1 −1 truffle/src/main/java/org/jruby/truffle/nodes/globals/CheckMatchVariableTypeNode.java
  33. +1 −1 truffle/src/main/java/org/jruby/truffle/nodes/interop/InteropNode.java
  34. +4 −4 truffle/src/main/java/org/jruby/truffle/nodes/objects/FreezeNode.java
  35. +3 −3 truffle/src/main/java/org/jruby/truffle/nodes/objects/IsFrozenNode.java
  36. +4 −4 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/DirPrimitiveNodes.java
  37. +1 −1 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/EncodingPrimitiveNodes.java
  38. +8 −8 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/ExceptionPrimitiveNodes.java
  39. +1 −1 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/IOPrimitiveNodes.java
  40. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/ObjectPrimitiveNodes.java
  41. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/PosixNodes.java
  42. +2 −5 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/RegexpPrimitiveNodes.java
  43. +2 −1 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/RubiniusTypeNodes.java
  44. +21 −21 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/TimePrimitiveNodes.java
  45. +4 −4 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/VMPrimitiveNodes.java
  46. +1 −1 truffle/src/main/java/org/jruby/truffle/nodes/supercall/GeneralSuperCallNode.java
  47. +3 −2 truffle/src/main/java/org/jruby/truffle/pack/nodes/PackGuards.java
  48. +3 −3 truffle/src/main/java/org/jruby/truffle/pack/nodes/type/ToLongNode.java
  49. +2 −2 truffle/src/main/java/org/jruby/truffle/pack/nodes/type/ToStringNode.java
  50. +2 −2 truffle/src/main/java/org/jruby/truffle/pack/nodes/write/WriteBinaryStringNode.java
  51. +2 −2 truffle/src/main/java/org/jruby/truffle/pack/nodes/write/WriteMIMEStringNode.java
  52. +1 −1 truffle/src/main/java/org/jruby/truffle/runtime/RubyContext.java
  53. +4 −4 truffle/src/main/java/org/jruby/truffle/runtime/core/CoreLibrary.java
  54. +6 −6 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyArray.java
  55. +5 −1 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyBasicObject.java
  56. +0 −5 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyNilClass.java
  57. +1 −1 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyRegexp.java
  58. +1 −1 truffle/src/main/java/org/jruby/truffle/translator/BodyTranslator.java
8 changes: 4 additions & 4 deletions truffle/src/main/java/org/jruby/truffle/nodes/RubyGuards.java
Original file line number Diff line number Diff line change
@@ -63,10 +63,6 @@ public static boolean isRubyModule(Object value) {
return value instanceof RubyModule;
}

public static boolean isRubyNilClass(Object value) {
return value instanceof RubyNilClass;
}

public static boolean isRubyRange(Object value) {
return value instanceof RubyRange;
}
@@ -107,6 +103,10 @@ public static boolean isForeignObject(Object object) {
return (object instanceof TruffleObject) && !(object instanceof RubyBasicObject);
}

public static boolean isNil(Object value) {
return value instanceof RubyNilClass;
}

public static boolean isTrue(boolean value) {
return value;
}
Original file line number Diff line number Diff line change
@@ -227,7 +227,7 @@ public boolean isRubiniusUndefined(Object value) {

// Helpers methods for terseness

protected RubyNilClass nil() {
protected RubyBasicObject nil() {
return getContext().getCoreLibrary().getNilObject();
}

Original file line number Diff line number Diff line change
@@ -50,27 +50,27 @@ public ArrayCastNode(RubyContext context, SourceSection sourceSection, SplatCast
protected abstract RubyNode getChild();

@Specialization
public RubyNilClass cast(boolean value) {
public RubyBasicObject cast(boolean value) {
return nil();
}

@Specialization
public RubyNilClass cast(int value) {
public RubyBasicObject cast(int value) {
return nil();
}

@Specialization
public RubyNilClass cast(long value) {
public RubyBasicObject cast(long value) {
return nil();
}

@Specialization
public RubyNilClass cast(double value) {
public RubyBasicObject cast(double value) {
return nil();
}

@Specialization
public RubyNilClass cast(RubyBignum value) {
public RubyBasicObject cast(RubyBignum value) {
return nil();
}

@@ -79,8 +79,8 @@ public RubyArray cast(RubyArray array) {
return array;
}

@Specialization
public Object cast(RubyNilClass nil) {
@Specialization(guards = "isNil(nil)")
public Object cast(Object nil) {
switch (nilBehavior) {
case EMPTY_ARRAY:
return new RubyArray(getContext().getCoreLibrary().getArrayClass());
@@ -98,7 +98,7 @@ public Object cast(RubyNilClass nil) {
}
}

@Specialization(guards = {"!isRubyNilClass(object)", "!isRubyArray(object)"})
@Specialization(guards = {"!isNil(object)", "!isRubyArray(object)"})
public Object cast(VirtualFrame frame, RubyBasicObject object) {
final Object result = toArrayNode.call(frame, object, "to_ary", null, new Object[]{});

Original file line number Diff line number Diff line change
@@ -34,8 +34,8 @@ public BooleanCastNode(BooleanCastNode copy) {

public abstract boolean executeBoolean(VirtualFrame frame, Object value);

@Specialization
public boolean doNil(RubyNilClass nil) {
@Specialization(guards = "isNil(nil)")
public boolean doNil(Object nil) {
return false;
}

@@ -59,7 +59,7 @@ public boolean doFloat(double value) {
return true;
}

@Specialization(guards = "!isRubyNilClass(object)")
@Specialization(guards = "!isNil(object)")
public boolean doBasicObject(RubyBasicObject object) {
return true;
}
Original file line number Diff line number Diff line change
@@ -86,8 +86,8 @@ public int cmpBignum(RubyBignum value, Object receiver, Object other) {
return value.bigIntegerValue().signum();
}

@Specialization
public int cmpNil(RubyNilClass value, Object receiver, Object other) {
@Specialization(guards = "isNil(nil)")
public int cmpNil(Object nil, Object receiver, Object other) {
throw new RaiseException(
getContext().getCoreLibrary().argumentError(
String.format("comparison of %s with %s failed",
@@ -100,7 +100,7 @@ public int cmpNil(RubyNilClass value, Object receiver, Object other) {
"!isInteger(value)",
"!isLong(value)",
"!isRubyBignum(value)",
"!isRubyNilClass(value)" })
"!isNil(value)" })
public int cmpObject(VirtualFrame frame, Object value, Object receiver, Object other) {
if (gtNode == null) {
CompilerDirectives.transferToInterpreter();
Original file line number Diff line number Diff line change
@@ -41,27 +41,27 @@ public HashCastNode(RubyContext context, SourceSection sourceSection) {
protected abstract RubyNode getChild();

@Specialization
public RubyNilClass cast(boolean value) {
public RubyBasicObject cast(boolean value) {
return nil();
}

@Specialization
public RubyNilClass cast(int value) {
public RubyBasicObject cast(int value) {
return nil();
}

@Specialization
public RubyNilClass cast(long value) {
public RubyBasicObject cast(long value) {
return nil();
}

@Specialization
public RubyNilClass cast(double value) {
public RubyBasicObject cast(double value) {
return nil();
}

@Specialization
public RubyNilClass cast(RubyBignum value) {
public RubyBasicObject cast(RubyBignum value) {
return nil();
}

@@ -70,12 +70,12 @@ public RubyHash cast(RubyHash hash) {
return hash;
}

@Specialization
public RubyNilClass cast(RubyNilClass nil) {
return nil;
@Specialization(guards = "isNil(nil)")
public RubyBasicObject cast(Object nil) {
return nil();
}

@Specialization(guards = {"!isRubyNilClass(object)", "!isRubyHash(object)"})
@Specialization(guards = {"!isNil(object)", "!isRubyHash(object)"})
public Object cast(VirtualFrame frame, RubyBasicObject object) {
final Object result = toHashNode.call(frame, object, "to_hash", null, new Object[]{});

Original file line number Diff line number Diff line change
@@ -34,9 +34,9 @@ public ProcCastNode(RubyContext context, SourceSection sourceSection) {
toProc = DispatchHeadNodeFactory.createMethodCall(context);
}

@Specialization
public RubyNilClass doNil(RubyNilClass nil) {
return nil;
@Specialization(guards = "isNil(nil)")
public RubyBasicObject doNil(Object nil) {
return nil();
}

@Specialization
Original file line number Diff line number Diff line change
@@ -18,19 +18,15 @@
import org.jruby.truffle.runtime.core.RubyNilClass;
import org.jruby.truffle.runtime.core.RubyProc;

/**
* Wraps some node that will produce either a {@link RubyProc} or a {@link RubyNilClass} and
* returns {@code null} in case of the latter. Used in parts of the dispatch chain.
*/
@NodeChild(value = "child", type = RubyNode.class)
public abstract class ProcOrNullNode extends RubyNode {

public ProcOrNullNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
}

@Specialization
public Object doNil(RubyNilClass nil) {
@Specialization(guards = "isNil(nil)")
public Object doNil(Object nil) {
return null;
}

Original file line number Diff line number Diff line change
@@ -17,6 +17,7 @@
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.core.RubyArray;
import org.jruby.truffle.runtime.core.RubyBasicObject;
import org.jruby.truffle.runtime.core.RubyNilClass;

@NodeChild(value = "child", type = RubyNode.class)
@@ -29,7 +30,7 @@ public SingleValueCastNode(RubyContext context, SourceSection sourceSection) {
public abstract Object executeSingleValue(VirtualFrame frame, Object[] args);

@Specialization(guards = "noArguments(args)")
protected RubyNilClass castNil(Object[] args) {
protected RubyBasicObject castNil(Object[] args) {
return nil();
}

Original file line number Diff line number Diff line change
@@ -60,8 +60,8 @@ public SplatCastNode(RubyContext context, SourceSection sourceSection, NilBehavi

protected abstract RubyNode getChild();

@Specialization
public RubyArray splat(RubyNilClass nil) {
@Specialization(guards = "isNil(nil)")
public RubyArray splat(Object nil) {
switch (nilBehavior) {
case EMPTY_ARRAY:
return new RubyArray(getContext().getCoreLibrary().getArrayClass());
@@ -83,7 +83,7 @@ public RubyArray splat(VirtualFrame frame, RubyArray array) {
return dup.executeDup(frame, array);
}

@Specialization(guards = {"!isRubyNilClass(object)", "!isRubyArray(object)"})
@Specialization(guards = {"!isNil(object)", "!isRubyArray(object)"})
public RubyArray splat(VirtualFrame frame, Object object) {
final String method;

@@ -100,7 +100,7 @@ public RubyArray splat(VirtualFrame frame, Object object) {

if (array instanceof RubyArray) {
return (RubyArray) array;
} else if (array instanceof RubyNilClass || array == DispatchNode.MISSING) {
} else if (array == nil() || array == DispatchNode.MISSING) {
CompilerDirectives.transferToInterpreter();
return RubyArray.fromObject(getContext().getCoreLibrary().getArrayClass(), object);
} else {
Original file line number Diff line number Diff line change
@@ -37,7 +37,7 @@ public static RubyNode sequence(RubyContext context, SourceSection sourceSection
}

public static RubyNode sequence(RubyContext context, SourceSection sourceSection, List<RubyNode> sequence) {
final List<RubyNode> flattened = flatten(sequence, true);
final List<RubyNode> flattened = flatten(context, sequence, true);

if (flattened.isEmpty()) {
return new DefinedWrapperNode(context, sourceSection,
@@ -50,19 +50,19 @@ public static RubyNode sequence(RubyContext context, SourceSection sourceSection
}
}

private static List<RubyNode> flatten(List<RubyNode> sequence, boolean allowTrailingNil) {
private static List<RubyNode> flatten(RubyContext context, List<RubyNode> sequence, boolean allowTrailingNil) {
final List<RubyNode> flattened = new ArrayList<>();

for (int n = 0; n < sequence.size(); n++) {
final boolean lastNode = n == sequence.size() - 1;
final RubyNode node = sequence.get(n);

if (node instanceof ObjectLiteralNode && ((ObjectLiteralNode) node).getObject() instanceof RubyNilClass) {
if (node instanceof ObjectLiteralNode && ((ObjectLiteralNode) node).getObject() == context.getCoreLibrary().getNilObject()) {
if (allowTrailingNil && lastNode) {
flattened.add(node);
}
} else if (node instanceof SequenceNode) {
flattened.addAll(flatten(Arrays.asList(((SequenceNode) node).body), lastNode));
flattened.addAll(flatten(context, Arrays.asList(((SequenceNode) node).body), lastNode));
} else {
flattened.add(node);
}
Original file line number Diff line number Diff line change
@@ -159,7 +159,7 @@ public InitializeNode(RubyContext context, SourceSection sourceSection) {
}

@Specialization
public RubyNilClass initialize() {
public RubyBasicObject initialize() {
return nil();
}

Original file line number Diff line number Diff line change
@@ -127,7 +127,7 @@ public InheritedNode(RubyContext context, SourceSection sourceSection) {
}

@Specialization
public RubyNilClass inherited(Object subclass) {
public RubyBasicObject inherited(Object subclass) {
return nil();
}

Original file line number Diff line number Diff line change
@@ -26,6 +26,7 @@
import org.jruby.truffle.nodes.dispatch.CallDispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.core.RubyBasicObject;
import org.jruby.truffle.runtime.core.RubyEncodingConverter;
import org.jruby.truffle.runtime.core.RubyNilClass;
import org.jruby.util.ByteList;
@@ -44,7 +45,7 @@ public InitializeNode(RubyContext context, SourceSection sourceSection) {

@TruffleBoundary
@Specialization
public RubyNilClass initialize(RubyEncodingConverter self, Object source, Object destination, Object options) {
public RubyBasicObject initialize(RubyEncodingConverter self, Object source, Object destination, Object options) {
// Adapted from RubyConverter - see attribution there

Ruby runtime = getContext().getRuntime();
Original file line number Diff line number Diff line change
@@ -203,12 +203,12 @@ public RubyEncoding defaultExternal(RubyString encodingString) {
return rubyEncoding;
}

@Specialization
public RubyEncoding defaultExternal(RubyNilClass nil) {
@Specialization(guards = "isNil(nil)")
public RubyEncoding defaultExternal(Object nil) {
throw new RaiseException(getContext().getCoreLibrary().argumentError("default external can not be nil", this));
}

@Specialization(guards = { "!isRubyEncoding(encoding)", "!isRubyString(encoding)", "!isRubyNilClass(encoding)" })
@Specialization(guards = { "!isRubyEncoding(encoding)", "!isRubyString(encoding)", "!isNil(encoding)" })
public RubyEncoding defaultExternal(VirtualFrame frame, Object encoding) {
if (toStrNode == null) {
CompilerDirectives.transferToInterpreter();
@@ -239,16 +239,16 @@ public RubyEncoding defaultInternal(RubyEncoding encoding) {
return encoding;
}

@Specialization
public RubyNilClass defaultInternal(RubyNilClass encoding) {
@Specialization(guards = "isNil(encoding)")
public RubyBasicObject defaultInternal(Object encoding) {
CompilerDirectives.transferToInterpreter();

getContext().getRuntime().setDefaultInternalEncoding(null);

return encoding;
return nil();
}

@Specialization(guards = { "!isRubyEncoding(encoding)", "!isRubyNilClass(encoding)" })
@Specialization(guards = { "!isRubyEncoding(encoding)", "!isNil(encoding)" })
public RubyString defaultInternal(VirtualFrame frame, Object encoding) {
CompilerDirectives.transferToInterpreter();

Original file line number Diff line number Diff line change
@@ -16,6 +16,7 @@
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.UndefinedPlaceholder;
import org.jruby.truffle.runtime.backtrace.Backtrace;
import org.jruby.truffle.runtime.core.RubyBasicObject;
import org.jruby.truffle.runtime.core.RubyException;
import org.jruby.truffle.runtime.core.RubyNilClass;
import org.jruby.truffle.runtime.core.RubyString;
@@ -31,15 +32,15 @@ public InitializeNode(RubyContext context, SourceSection sourceSection) {
}

@Specialization
public RubyNilClass initialize(RubyException exception, UndefinedPlaceholder message) {
public RubyBasicObject initialize(RubyException exception, UndefinedPlaceholder message) {
CompilerDirectives.transferToInterpreter();

exception.initialize(getContext().makeString(""));
return nil();
}

@Specialization
public RubyNilClass initialize(RubyException exception, RubyString message) {
public RubyBasicObject initialize(RubyException exception, RubyString message) {
CompilerDirectives.transferToInterpreter();

exception.initialize(message);
@@ -75,12 +76,12 @@ public CaptureBacktraceNode(RubyContext context, SourceSection sourceSection) {
}

@Specialization
public RubyNilClass captureBacktrace(RubyException exception, UndefinedPlaceholder offset) {
public RubyBasicObject captureBacktrace(RubyException exception, UndefinedPlaceholder offset) {
return captureBacktrace(exception, 1);
}

@Specialization
public RubyNilClass captureBacktrace(RubyException exception, int offset) {
public RubyBasicObject captureBacktrace(RubyException exception, int offset) {
Backtrace backtrace = RubyCallStack.getBacktrace(this, offset);
exception.setBacktrace(backtrace);
return nil();
Loading