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

Commits on Jan 8, 2015

  1. Copy the full SHA
    592a2f1 View commit details
  2. Copy the full SHA
    f52241e View commit details
Showing with 420 additions and 296 deletions.
  1. +3 −4 core/src/main/java/org/jruby/truffle/nodes/RubyCallNode.java
  2. +2 −1 core/src/main/java/org/jruby/truffle/nodes/cast/ArrayCastNode.java
  3. +2 −1 core/src/main/java/org/jruby/truffle/nodes/cast/HashCastNode.java
  4. +2 −1 core/src/main/java/org/jruby/truffle/nodes/cast/ProcCastNode.java
  5. +3 −2 core/src/main/java/org/jruby/truffle/nodes/cast/SplatCastNode.java
  6. +2 −1 core/src/main/java/org/jruby/truffle/nodes/cast/ToSNode.java
  7. +9 −8 core/src/main/java/org/jruby/truffle/nodes/core/ArrayNodes.java
  8. +2 −3 core/src/main/java/org/jruby/truffle/nodes/core/BasicObjectNodes.java
  9. +2 −1 core/src/main/java/org/jruby/truffle/nodes/core/ClassNodes.java
  10. +2 −1 core/src/main/java/org/jruby/truffle/nodes/core/ComparableNodes.java
  11. +5 −5 core/src/main/java/org/jruby/truffle/nodes/core/FixnumNodes.java
  12. +2 −1 core/src/main/java/org/jruby/truffle/nodes/core/HashNodes.java
  13. +2 −1 core/src/main/java/org/jruby/truffle/nodes/core/InteroplatedRegexpNode.java
  14. +9 −12 core/src/main/java/org/jruby/truffle/nodes/core/KernelNodes.java
  15. +8 −7 core/src/main/java/org/jruby/truffle/nodes/core/MathNodes.java
  16. +3 −2 core/src/main/java/org/jruby/truffle/nodes/core/ModuleNodes.java
  17. +2 −1 core/src/main/java/org/jruby/truffle/nodes/core/RangeNodes.java
  18. +3 −2 core/src/main/java/org/jruby/truffle/nodes/core/StringNodes.java
  19. +2 −1 core/src/main/java/org/jruby/truffle/nodes/core/ThreadNodes.java
  20. +11 −5 core/src/main/java/org/jruby/truffle/nodes/dispatch/CachedBooleanDispatchNode.java
  21. +60 −36 core/src/main/java/org/jruby/truffle/nodes/dispatch/CachedBoxedDispatchNode.java
  22. +68 −58 core/src/main/java/org/jruby/truffle/nodes/dispatch/CachedBoxedMethodMissingDispatchNode.java
  23. +15 −10 core/src/main/java/org/jruby/truffle/nodes/dispatch/CachedBoxedReturnMissingDispatchNode.java
  24. +40 −31 core/src/main/java/org/jruby/truffle/nodes/dispatch/CachedBoxedSymbolDispatchNode.java
  25. +6 −3 core/src/main/java/org/jruby/truffle/nodes/dispatch/CachedDispatchNode.java
  26. +40 −40 core/src/main/java/org/jruby/truffle/nodes/dispatch/CachedUnboxedDispatchNode.java
  27. +9 −26 core/src/main/java/org/jruby/truffle/nodes/dispatch/DispatchHeadNode.java
  28. +76 −0 core/src/main/java/org/jruby/truffle/nodes/dispatch/DispatchHeadNodeFactory.java
  29. +2 −1 core/src/main/java/org/jruby/truffle/nodes/dispatch/PredicateDispatchHeadNode.java
  30. +1 −10 core/src/main/java/org/jruby/truffle/nodes/dispatch/UncachedDispatchNode.java
  31. +16 −11 core/src/main/java/org/jruby/truffle/nodes/dispatch/UnresolvedDispatchNode.java
  32. +2 −1 core/src/main/java/org/jruby/truffle/nodes/hash/FindEntryNode.java
  33. +3 −2 core/src/main/java/org/jruby/truffle/nodes/literal/HashLiteralNode.java
  34. +2 −3 core/src/main/java/org/jruby/truffle/nodes/methods/SymbolProcNode.java
  35. +2 −1 core/src/main/java/org/jruby/truffle/nodes/objects/DefineOrGetClassNode.java
  36. +2 −3 core/src/main/java/org/jruby/truffle/nodes/rubinius/FixnumPrimitiveNodes.java
7 changes: 3 additions & 4 deletions core/src/main/java/org/jruby/truffle/nodes/RubyCallNode.java
Original file line number Diff line number Diff line change
@@ -20,6 +20,7 @@
import org.jruby.truffle.nodes.cast.ProcOrNullNode;
import org.jruby.truffle.nodes.cast.ProcOrNullNodeFactory;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.nodes.dispatch.DispatchNode;
import org.jruby.truffle.nodes.dispatch.MissingBehavior;
import org.jruby.truffle.runtime.ModuleOperations;
@@ -30,8 +31,6 @@
import org.jruby.truffle.runtime.methods.RubyMethod;
import org.jruby.truffle.runtime.util.ArrayUtils;

import java.util.Arrays;

public class RubyCallNode extends RubyNode {

private final String methodName;
@@ -83,8 +82,8 @@ public RubyCallNode(RubyContext context, SourceSection section, String methodNam
this.isSplatted = isSplatted;
this.isVCall = isVCall;

dispatchHead = new DispatchHeadNode(context, ignoreVisibility, false, MissingBehavior.CALL_METHOD_MISSING);
respondToMissing = new DispatchHeadNode(context, true, MissingBehavior.RETURN_MISSING);
dispatchHead = DispatchHeadNodeFactory.createMethodCall(context, ignoreVisibility, false, MissingBehavior.CALL_METHOD_MISSING);
respondToMissing = DispatchHeadNodeFactory.createMethodCall(context, true, MissingBehavior.RETURN_MISSING);
respondToMissingCast = BooleanCastNodeFactory.create(context, section, null);

this.ignoreVisibility = ignoreVisibility;
Original file line number Diff line number Diff line change
@@ -17,6 +17,7 @@
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.nodes.dispatch.DispatchNode;
import org.jruby.truffle.nodes.dispatch.MissingBehavior;
import org.jruby.truffle.runtime.RubyContext;
@@ -42,7 +43,7 @@ public ArrayCastNode(RubyContext context, SourceSection sourceSection) {

public ArrayCastNode(RubyContext context, SourceSection sourceSection, SplatCastNode.NilBehavior nilBehavior) {
super(context, sourceSection);
toArrayNode = new DispatchHeadNode(context, MissingBehavior.RETURN_MISSING);
toArrayNode = DispatchHeadNodeFactory.createMethodCall(context, MissingBehavior.RETURN_MISSING);
this.nilBehavior = nilBehavior;
}

Original file line number Diff line number Diff line change
@@ -16,6 +16,7 @@
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.nodes.dispatch.DispatchNode;
import org.jruby.truffle.nodes.dispatch.MissingBehavior;
import org.jruby.truffle.runtime.RubyContext;
@@ -34,7 +35,7 @@ public abstract class HashCastNode extends RubyNode {

public HashCastNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
toHashNode = new DispatchHeadNode(context, MissingBehavior.RETURN_MISSING);
toHashNode = DispatchHeadNodeFactory.createMethodCall(context, MissingBehavior.RETURN_MISSING);
}

public HashCastNode(HashCastNode prev) {
Original file line number Diff line number Diff line change
@@ -15,6 +15,7 @@
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNode;
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.RubyNilClass;
@@ -30,7 +31,7 @@ public abstract class ProcCastNode extends RubyNode {

public ProcCastNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
toProc = new DispatchHeadNode(context);
toProc = DispatchHeadNodeFactory.createMethodCall(context);
}

public ProcCastNode(ProcCastNode prev) {
Original file line number Diff line number Diff line change
@@ -18,6 +18,7 @@
import org.jruby.truffle.nodes.core.ArrayDupNode;
import org.jruby.truffle.nodes.core.ArrayDupNodeFactory;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.nodes.dispatch.DispatchNode;
import org.jruby.truffle.nodes.dispatch.MissingBehavior;
import org.jruby.truffle.runtime.RubyContext;
@@ -50,9 +51,9 @@ public SplatCastNode(RubyContext context, SourceSection sourceSection, NilBehavi
this.nilBehavior = nilBehavior;
// Calling private #to_a is allowed for the *splat operator.
dup = ArrayDupNodeFactory.create(context, sourceSection, null);
respondToToA = new DispatchHeadNode(context, true, MissingBehavior.RETURN_MISSING);
respondToToA = DispatchHeadNodeFactory.createMethodCall(context, true, MissingBehavior.RETURN_MISSING);
respondToCast = BooleanCastNodeFactory.create(context, sourceSection, null);
toA = new DispatchHeadNode(context, true, MissingBehavior.RETURN_MISSING);
toA = DispatchHeadNodeFactory.createMethodCall(context, true, MissingBehavior.RETURN_MISSING);
this.useToAry = useToAry;
}

3 changes: 2 additions & 1 deletion core/src/main/java/org/jruby/truffle/nodes/cast/ToSNode.java
Original file line number Diff line number Diff line change
@@ -20,6 +20,7 @@
import org.jruby.truffle.nodes.core.KernelNodes;
import org.jruby.truffle.nodes.core.KernelNodesFactory;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.core.RubyString;

@@ -31,7 +32,7 @@ public abstract class ToSNode extends RubyNode {

public ToSNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
callToSNode = new DispatchHeadNode(context, true);
callToSNode = DispatchHeadNodeFactory.createMethodCall(context, true);
}

protected RubyString kernelToS(VirtualFrame frame, Object object) {
17 changes: 9 additions & 8 deletions core/src/main/java/org/jruby/truffle/nodes/core/ArrayNodes.java
Original file line number Diff line number Diff line change
@@ -27,6 +27,7 @@
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.RubyRootNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.nodes.dispatch.MissingBehavior;
import org.jruby.truffle.nodes.dispatch.PredicateDispatchHeadNode;
import org.jruby.truffle.nodes.methods.arguments.MissingArgumentBehaviour;
@@ -2060,7 +2061,7 @@ public abstract static class InjectNode extends YieldingCoreMethodNode {

public InjectNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
dispatch = new DispatchHeadNode(context, MissingBehavior.CALL_METHOD_MISSING);
dispatch = DispatchHeadNodeFactory.createMethodCall(context, MissingBehavior.CALL_METHOD_MISSING);
}

public InjectNode(InjectNode prev) {
@@ -2186,7 +2187,7 @@ public abstract static class InspectNode extends CoreMethodNode {

public InspectNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
inspect = new DispatchHeadNode(context);
inspect = DispatchHeadNodeFactory.createMethodCall(context);
}

public InspectNode(InspectNode prev) {
@@ -2494,7 +2495,7 @@ public abstract static class MaxNode extends ArrayCoreMethodNode {

public MaxNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
eachNode = new DispatchHeadNode(context);
eachNode = DispatchHeadNodeFactory.createMethodCall(context);
maxBlock = context.getCoreLibrary().getArrayMaxBlock();
}

@@ -2534,7 +2535,7 @@ public abstract static class MaxBlockNode extends CoreMethodNode {

public MaxBlockNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
compareNode = new DispatchHeadNode(context);
compareNode = DispatchHeadNodeFactory.createMethodCall(context);
}

public MaxBlockNode(MaxBlockNode prev) {
@@ -2613,7 +2614,7 @@ public abstract static class MinNode extends ArrayCoreMethodNode {

public MinNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
eachNode = new DispatchHeadNode(context);
eachNode = DispatchHeadNodeFactory.createMethodCall(context);
minBlock = context.getCoreLibrary().getArrayMinBlock();
}

@@ -2653,7 +2654,7 @@ public abstract static class MinBlockNode extends CoreMethodNode {

public MinBlockNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
compareNode = new DispatchHeadNode(context);
compareNode = DispatchHeadNodeFactory.createMethodCall(context);
}

public MinBlockNode(MinBlockNode prev) {
@@ -3477,7 +3478,7 @@ public abstract static class SortNode extends ArrayCoreMethodNode {

public SortNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
compareDispatchNode = new DispatchHeadNode(context);
compareDispatchNode = DispatchHeadNodeFactory.createMethodCall(context);
yieldNode = new YieldDispatchHeadNode(context);
}

@@ -3658,7 +3659,7 @@ public abstract static class SortBangNode extends ArrayCoreMethodNode {

public SortBangNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
compareDispatchNode = new DispatchHeadNode(context);
compareDispatchNode = DispatchHeadNodeFactory.createMethodCall(context);
}

public SortBangNode(SortBangNode prev) {
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.cast.BooleanCastNodeFactory;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.nodes.dispatch.MissingBehavior;
import org.jruby.truffle.nodes.dispatch.PredicateDispatchHeadNode;
import org.jruby.truffle.nodes.yield.YieldDispatchHeadNode;
@@ -32,8 +33,6 @@
import org.jruby.truffle.runtime.util.ArrayUtils;
import org.jruby.util.cli.Options;

import java.util.Arrays;

@CoreClass(name = "BasicObject")
public abstract class BasicObjectNodes {

@@ -316,7 +315,7 @@ public abstract static class SendNode extends CoreMethodNode {
public SendNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);

dispatchNode = new DispatchHeadNode(context, true, Options.TRUFFLE_DISPATCH_METAPROGRAMMING_ALWAYS_INDIRECT.load(), MissingBehavior.CALL_METHOD_MISSING);
dispatchNode = DispatchHeadNodeFactory.createMethodCall(context, true, Options.TRUFFLE_DISPATCH_METAPROGRAMMING_ALWAYS_INDIRECT.load(), MissingBehavior.CALL_METHOD_MISSING);

if (Options.TRUFFLE_DISPATCH_METAPROGRAMMING_ALWAYS_UNCACHED.load()) {
dispatchNode.forceUncached();
Original file line number Diff line number Diff line change
@@ -16,6 +16,7 @@
import org.jruby.runtime.Visibility;
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.UndefinedPlaceholder;
import org.jruby.truffle.runtime.control.RaiseException;
@@ -62,7 +63,7 @@ public abstract static class NewNode extends CoreMethodNode {
public NewNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
allocateNode = ClassNodesFactory.AllocateNodeFactory.create(context, sourceSection, new RubyNode[]{null});
initialize = DispatchHeadNode.onSelf(context);
initialize = DispatchHeadNodeFactory.createMethodCallOnSelf(context);
}

public NewNode(NewNode prev) {
Original file line number Diff line number Diff line change
@@ -13,6 +13,7 @@
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.core.RubyBasicObject;

@@ -25,7 +26,7 @@ public abstract static class ComparableCoreMethodNode extends CoreMethodNode {

public ComparableCoreMethodNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
compareNode = new DispatchHeadNode(context);
compareNode = DispatchHeadNodeFactory.createMethodCall(context);
}

public ComparableCoreMethodNode(ComparableCoreMethodNode prev) {
10 changes: 5 additions & 5 deletions core/src/main/java/org/jruby/truffle/nodes/core/FixnumNodes.java
Original file line number Diff line number Diff line change
@@ -11,13 +11,13 @@

import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.ExactMath;
import com.oracle.truffle.api.dsl.Fallback;
import com.oracle.truffle.api.dsl.Specialization;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.nodes.UnexpectedResultException;
import com.oracle.truffle.api.source.SourceSection;
import com.oracle.truffle.api.utilities.BranchProfile;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.nodes.methods.UnsupportedOperationBehavior;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.UndefinedPlaceholder;
@@ -114,7 +114,7 @@ public Object add(VirtualFrame frame, int a, RubyBasicObject b) {
if (rationalAdd == null) {
CompilerDirectives.transferToInterpreterAndInvalidate();

rationalAdd = insert(new DispatchHeadNode(getContext()));
rationalAdd = insert(DispatchHeadNodeFactory.createMethodCall(getContext()));
}

return rationalAdd.call(frame, b, "+", null, a);
@@ -155,7 +155,7 @@ public Object add(VirtualFrame frame, long a, RubyBasicObject b) {
if (rationalAdd == null) {
CompilerDirectives.transferToInterpreterAndInvalidate();

rationalAdd = insert(new DispatchHeadNode(getContext()));
rationalAdd = insert(DispatchHeadNodeFactory.createMethodCall(getContext()));
}

return rationalAdd.call(frame, b, "+", null, a);
@@ -788,7 +788,7 @@ public abstract static class EqualNode extends CoreMethodNode {

public EqualNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
reverseCallNode = new DispatchHeadNode(context);
reverseCallNode = DispatchHeadNodeFactory.createMethodCall(context);
}

public EqualNode(EqualNode prev) {
@@ -1254,7 +1254,7 @@ public abstract static class RightShiftNode extends CoreMethodNode {

public RightShiftNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
toInt = new DispatchHeadNode(context);
toInt = DispatchHeadNodeFactory.createMethodCall(context);
}

public RightShiftNode(RightShiftNode prev) {
Original file line number Diff line number Diff line change
@@ -19,6 +19,7 @@
import org.jruby.runtime.Visibility;
import org.jruby.truffle.nodes.RubyRootNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.nodes.dispatch.PredicateDispatchHeadNode;
import org.jruby.truffle.nodes.hash.FindEntryNode;
import org.jruby.truffle.nodes.yield.YieldDispatchHeadNode;
@@ -695,7 +696,7 @@ public abstract static class InspectNode extends HashCoreMethodNode {

public InspectNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
inspect = new DispatchHeadNode(context);
inspect = DispatchHeadNodeFactory.createMethodCall(context);
}

public InspectNode(InspectNode prev) {
Original file line number Diff line number Diff line change
@@ -13,6 +13,7 @@
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNode;
import org.jruby.truffle.nodes.dispatch.DispatchHeadNodeFactory;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.core.RubyEncoding;
import org.jruby.truffle.runtime.core.RubyRegexp;
@@ -30,7 +31,7 @@ public InteroplatedRegexpNode(RubyContext context, SourceSection sourceSection,
super(context, sourceSection);
this.children = children;
this.options = options;
toS = new DispatchHeadNode(context);
toS = DispatchHeadNodeFactory.createMethodCall(context);
}

@Override
Loading