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

Commits on Aug 26, 2016

  1. Copy the full SHA
    4783ba3 View commit details
  2. 2
    Copy the full SHA
    c803fb9 View commit details
  3. Copy the full SHA
    7e273bd View commit details
Showing with 89 additions and 102 deletions.
  1. +0 −1 truffle/src/main/java/org/jruby/truffle/builtins/EnumeratorSizeNode.java
  2. +9 −3 truffle/src/main/java/org/jruby/truffle/builtins/ReturnEnumeratorIfNoBlockNode.java
  3. +2 −2 truffle/src/main/java/org/jruby/truffle/core/array/ArrayNodes.java
  4. +0 −1 truffle/src/main/java/org/jruby/truffle/core/cast/TaintResultNode.java
  5. +1 −0 truffle/src/main/java/org/jruby/truffle/language/RubyRootNode.java
  6. +8 −5 truffle/src/main/java/org/jruby/truffle/language/control/AndNode.java
  7. +1 −3 truffle/src/main/java/org/jruby/truffle/language/control/BreakNode.java
  8. +1 −3 truffle/src/main/java/org/jruby/truffle/language/control/ElidableResultNode.java
  9. +1 −3 truffle/src/main/java/org/jruby/truffle/language/control/FrameOnStackNode.java
  10. +1 −4 truffle/src/main/java/org/jruby/truffle/language/control/IfElseNode.java
  11. +1 −4 truffle/src/main/java/org/jruby/truffle/language/control/IfNode.java
  12. +1 −3 truffle/src/main/java/org/jruby/truffle/language/control/NextNode.java
  13. +1 −2 truffle/src/main/java/org/jruby/truffle/language/control/NotNode.java
  14. +1 −3 truffle/src/main/java/org/jruby/truffle/language/control/OnceNode.java
  15. +1 −3 truffle/src/main/java/org/jruby/truffle/language/control/OrNode.java
  16. +0 −5 truffle/src/main/java/org/jruby/truffle/language/control/RedoNode.java
  17. +0 −5 truffle/src/main/java/org/jruby/truffle/language/control/RetryNode.java
  18. +1 −3 truffle/src/main/java/org/jruby/truffle/language/control/ReturnNode.java
  19. +2 −3 truffle/src/main/java/org/jruby/truffle/language/control/SequenceNode.java
  20. +1 −4 truffle/src/main/java/org/jruby/truffle/language/control/UnlessNode.java
  21. +45 −31 truffle/src/main/java/org/jruby/truffle/language/parser/jruby/BodyTranslator.java
  22. +5 −5 truffle/src/main/java/org/jruby/truffle/language/parser/jruby/LoadArgumentsTranslator.java
  23. +4 −4 truffle/src/main/java/org/jruby/truffle/language/parser/jruby/MethodTranslator.java
  24. +1 −1 truffle/src/main/java/org/jruby/truffle/language/parser/jruby/ReloadArgumentsTranslator.java
  25. +1 −1 truffle/src/main/java/org/jruby/truffle/language/parser/jruby/Translator.java
Original file line number Diff line number Diff line change
@@ -25,7 +25,6 @@ public class EnumeratorSizeNode extends RubyNode {
private final String snippet;

public EnumeratorSizeNode(String enumeratorSize, String methodName, RubyNode method) {
super(method.getContext());
this.method = method;
this.snippet = "to_enum(:" + methodName + ") { " + enumeratorSize + " }";
}
Original file line number Diff line number Diff line change
@@ -9,6 +9,7 @@
*/
package org.jruby.truffle.builtins;

import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.object.DynamicObject;
@@ -21,15 +22,15 @@

public class ReturnEnumeratorIfNoBlockNode extends RubyNode {

private final String methodName;
@Child private RubyNode method;
@Child private CallDispatchHeadNode toEnumNode;
private final DynamicObject methodSymbol;
@CompilationFinal private DynamicObject methodSymbol;
private final ConditionProfile noBlockProfile = ConditionProfile.createBinaryProfile();

public ReturnEnumeratorIfNoBlockNode(String methodName, RubyNode method) {
super(method.getContext());
this.methodName = methodName;
this.method = method;
this.methodSymbol = getSymbol(methodName);
}

@Override
@@ -42,6 +43,11 @@ public Object execute(VirtualFrame frame) {
toEnumNode = insert(DispatchHeadNodeFactory.createMethodCall(getContext()));
}

if (methodSymbol == null) {
CompilerDirectives.transferToInterpreterAndInvalidate();
methodSymbol = getSymbol(methodName);
}

final Object[] arguments = ArrayUtils.unshift(RubyArguments.getArguments(frame), methodSymbol);
return toEnumNode.call(frame, RubyArguments.getSelf(frame), "to_enum", arguments);
} else {
Original file line number Diff line number Diff line change
@@ -1457,7 +1457,7 @@ public MaxBlock(RubyContext context) {

sharedMethodInfo = new SharedMethodInfo(SourceSection.createUnavailable(null, "Array#max block"), null, Arity.NO_ARGUMENTS, "max", false, null, false, false, false);

callTarget = Truffle.getRuntime().createCallTarget(new RubyRootNode(context, null, null, sharedMethodInfo, MaxBlockNodeFactory.create(context, null, new RubyNode[]{
callTarget = Truffle.getRuntime().createCallTarget(new RubyRootNode(context, sharedMethodInfo.getSourceSection(), null, sharedMethodInfo, MaxBlockNodeFactory.create(context, null, new RubyNode[]{
new ReadDeclarationVariableNode(context, null, LocalVariableType.FRAME_LOCAL, 1, frameSlot),
new ProfileArgumentNode(new ReadPreArgumentNode(0, MissingArgumentBehavior.RUNTIME_ERROR))
}), false));
@@ -1579,7 +1579,7 @@ public MinBlock(RubyContext context) {

sharedMethodInfo = new SharedMethodInfo(SourceSection.createUnavailable(null, "Array#min block"), null, Arity.NO_ARGUMENTS, "min", false, null, false, false, false);

callTarget = Truffle.getRuntime().createCallTarget(new RubyRootNode(context, null, null, sharedMethodInfo, MinBlockNodeFactory.create(context, null, new RubyNode[]{
callTarget = Truffle.getRuntime().createCallTarget(new RubyRootNode(context, sharedMethodInfo.getSourceSection(), null, sharedMethodInfo, MinBlockNodeFactory.create(context, null, new RubyNode[]{
new ReadDeclarationVariableNode(context, null, LocalVariableType.FRAME_LOCAL, 1, frameSlot),
new ProfileArgumentNode(new ReadPreArgumentNode(0, MissingArgumentBehavior.RUNTIME_ERROR))
}), false));
Original file line number Diff line number Diff line change
@@ -36,7 +36,6 @@ public class TaintResultNode extends RubyNode {
@Child private TaintNode taintNode;

public TaintResultNode(boolean taintFromSelf, int taintFromParameter, RubyNode method) {
super(method.getContext());
this.taintFromSelf = taintFromSelf;
this.taintFromParameter = taintFromParameter;
this.method = method;
Original file line number Diff line number Diff line change
@@ -30,6 +30,7 @@ public class RubyRootNode extends RootNode {
public RubyRootNode(RubyContext context, SourceSection sourceSection, FrameDescriptor frameDescriptor,
SharedMethodInfo sharedMethodInfo, RubyNode body, boolean needsDeclarationFrame) {
super(RubyLanguage.class, sourceSection, frameDescriptor);
assert sourceSection != null;
assert body != null;
this.context = context;
this.sharedMethodInfo = sharedMethodInfo;
Original file line number Diff line number Diff line change
@@ -9,10 +9,9 @@
*/
package org.jruby.truffle.language.control;

import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.profiles.ConditionProfile;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.core.cast.BooleanCastNode;
import org.jruby.truffle.core.cast.BooleanCastNodeGen;
import org.jruby.truffle.language.RubyNode;
@@ -26,16 +25,20 @@ public class AndNode extends RubyNode {

private final ConditionProfile conditionProfile = ConditionProfile.createCountingProfile();

public AndNode(RubyContext context, SourceSection sourceSection, RubyNode left, RubyNode right) {
super(context, sourceSection);
public AndNode(RubyNode left, RubyNode right) {
this.left = left;
this.right = right;
leftCast = BooleanCastNodeGen.create(null);
}

@Override
public Object execute(VirtualFrame frame) {
final Object leftValue = left.execute(frame);

if (leftCast == null) {
CompilerDirectives.transferToInterpreterAndInvalidate();
leftCast = insert(leftCast = BooleanCastNodeGen.create(null));
}

final boolean leftBoolean = leftCast.executeBoolean(frame, leftValue);

if (conditionProfile.profile(leftBoolean)) {
Original file line number Diff line number Diff line change
@@ -12,7 +12,6 @@
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.profiles.BranchProfile;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.language.RubyNode;
import org.jruby.truffle.language.arguments.RubyArguments;

@@ -25,8 +24,7 @@ public class BreakNode extends RubyNode {

private final BranchProfile breakFromProcClosureProfile = BranchProfile.create();

public BreakNode(RubyContext context, SourceSection sourceSection, BreakID breakID, boolean ignoreMarker, RubyNode child) {
super(context, sourceSection);
public BreakNode(BreakID breakID, boolean ignoreMarker, RubyNode child) {
this.breakID = breakID;
this.ignoreMarker = ignoreMarker;
this.child = child;
Original file line number Diff line number Diff line change
@@ -13,7 +13,6 @@
import com.oracle.truffle.api.nodes.NodeCost;
import com.oracle.truffle.api.nodes.NodeInfo;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.language.RubyNode;

/**
@@ -26,8 +25,7 @@ public class ElidableResultNode extends RubyNode {
@Child private RubyNode required;
@Child private RubyNode elidableResult;

public ElidableResultNode(RubyContext context, SourceSection sourceSection, RubyNode required, RubyNode elidableResult) {
super(context, sourceSection);
public ElidableResultNode(RubyNode required, RubyNode elidableResult) {
this.required = required;
this.elidableResult = elidableResult;
}
Original file line number Diff line number Diff line change
@@ -12,7 +12,6 @@
import com.oracle.truffle.api.frame.FrameSlot;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.language.RubyNode;
import org.jruby.truffle.language.locals.WriteFrameSlotNode;
import org.jruby.truffle.language.locals.WriteFrameSlotNodeGen;
@@ -22,8 +21,7 @@ public class FrameOnStackNode extends RubyNode {
@Child private RubyNode child;
@Child private WriteFrameSlotNode writeMarker;

public FrameOnStackNode(RubyContext context, SourceSection sourceSection, RubyNode child, FrameSlot markerSlot) {
super(context, sourceSection);
public FrameOnStackNode(RubyNode child, FrameSlot markerSlot) {
this.child = child;
writeMarker = WriteFrameSlotNodeGen.create(markerSlot);
}
Original file line number Diff line number Diff line change
@@ -12,7 +12,6 @@
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.profiles.ConditionProfile;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.core.cast.BooleanCastNode;
import org.jruby.truffle.core.cast.BooleanCastNodeGen;
import org.jruby.truffle.language.RubyNode;
@@ -25,9 +24,7 @@ public class IfElseNode extends RubyNode {

private final ConditionProfile conditionProfile = ConditionProfile.createCountingProfile();

public IfElseNode(RubyContext context, SourceSection sourceSection, RubyNode condition, RubyNode thenBody, RubyNode elseBody) {
super(context, sourceSection);

public IfElseNode(RubyNode condition, RubyNode thenBody, RubyNode elseBody) {
this.condition = BooleanCastNodeGen.create(condition);
this.thenBody = thenBody;
this.elseBody = elseBody;
Original file line number Diff line number Diff line change
@@ -12,7 +12,6 @@
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.profiles.ConditionProfile;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.core.cast.BooleanCastNode;
import org.jruby.truffle.core.cast.BooleanCastNodeGen;
import org.jruby.truffle.language.RubyNode;
@@ -24,9 +23,7 @@ public class IfNode extends RubyNode {

private final ConditionProfile conditionProfile = ConditionProfile.createCountingProfile();

public IfNode(RubyContext context, SourceSection sourceSection, RubyNode condition, RubyNode thenBody) {
super(context, sourceSection);

public IfNode(RubyNode condition, RubyNode thenBody) {
this.condition = BooleanCastNodeGen.create(condition);
this.thenBody = thenBody;
}
Original file line number Diff line number Diff line change
@@ -11,15 +11,13 @@

import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.language.RubyNode;

public class NextNode extends RubyNode {

@Child private RubyNode child;

public NextNode(RubyContext context, SourceSection sourceSection, RubyNode child) {
super(context, sourceSection);
public NextNode(RubyNode child) {
this.child = child;
}

Original file line number Diff line number Diff line change
@@ -20,8 +20,7 @@ public class NotNode extends RubyNode {

@Child private BooleanCastNode child;

public NotNode(RubySourceSection sourceSection, RubyNode child) {
super(child.getContext(), sourceSection);
public NotNode(RubyNode child) {
this.child = BooleanCastNodeGen.create(child);
}

Original file line number Diff line number Diff line change
@@ -13,7 +13,6 @@
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.source.SourceSection;
import com.oracle.truffle.api.utilities.AssumedValue;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.language.RubyNode;

/**
@@ -25,8 +24,7 @@ public class OnceNode extends RubyNode {

private final AssumedValue<Object> valueMemo = new AssumedValue<>(OnceNode.class.getName(), null);

public OnceNode(RubyContext context, SourceSection sourceSection, RubyNode child) {
super(context, sourceSection);
public OnceNode(RubyNode child) {
this.child = child;
}

Original file line number Diff line number Diff line change
@@ -12,7 +12,6 @@
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.profiles.ConditionProfile;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.core.cast.BooleanCastNode;
import org.jruby.truffle.core.cast.BooleanCastNodeGen;
import org.jruby.truffle.language.RubyNode;
@@ -26,8 +25,7 @@ public class OrNode extends RubyNode {

private final ConditionProfile conditionProfile = ConditionProfile.createCountingProfile();

public OrNode(RubyContext context, SourceSection sourceSection, RubyNode left, RubyNode right) {
super(context, sourceSection);
public OrNode(RubyNode left, RubyNode right) {
this.left = left;
this.right = right;
leftCast = BooleanCastNodeGen.create(null);
Original file line number Diff line number Diff line change
@@ -11,15 +11,10 @@

import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.language.RubyNode;

public class RedoNode extends RubyNode {

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

@Override
public Object execute(VirtualFrame frame) {
throw new RedoException();
Original file line number Diff line number Diff line change
@@ -11,15 +11,10 @@

import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.language.RubyNode;

public class RetryNode extends RubyNode {

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

@Override
public Object execute(VirtualFrame frame) {
throw new RetryException();
Original file line number Diff line number Diff line change
@@ -11,7 +11,6 @@

import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.language.RubyNode;

public class ReturnNode extends RubyNode {
@@ -20,8 +19,7 @@ public class ReturnNode extends RubyNode {

@Child private RubyNode value;

public ReturnNode(RubyContext context, SourceSection sourceSection, ReturnID returnID, RubyNode value) {
super(context, sourceSection);
public ReturnNode(ReturnID returnID, RubyNode value) {
this.returnID = returnID;
this.value = value;
}
Original file line number Diff line number Diff line change
@@ -14,16 +14,15 @@
import com.oracle.truffle.api.nodes.NodeCost;
import com.oracle.truffle.api.nodes.NodeInfo;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.language.RubyNode;

@NodeInfo(cost = NodeCost.NONE)
public final class SequenceNode extends RubyNode {

@Children private final RubyNode[] body;

public SequenceNode(RubyContext context, SourceSection sourceSection, RubyNode... body) {
super(context, sourceSection);
public SequenceNode(SourceSection sourceSection, RubyNode... body) {
super(sourceSection);
this.body = body;
}

Original file line number Diff line number Diff line change
@@ -12,7 +12,6 @@
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.profiles.ConditionProfile;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.RubyContext;
import org.jruby.truffle.core.cast.BooleanCastNode;
import org.jruby.truffle.core.cast.BooleanCastNodeGen;
import org.jruby.truffle.language.RubyNode;
@@ -24,9 +23,7 @@ public class UnlessNode extends RubyNode {

private final ConditionProfile conditionProfile = ConditionProfile.createCountingProfile();

public UnlessNode(RubyContext context, SourceSection sourceSection, RubyNode condition, RubyNode thenBody) {
super(context, sourceSection);

public UnlessNode(RubyNode condition, RubyNode thenBody) {
this.condition = BooleanCastNodeGen.create(condition);
this.thenBody = thenBody;
}
Loading