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

Commits on Jul 10, 2015

  1. Copy the full SHA
    ea2d7fd View commit details
  2. Copy the full SHA
    94f4484 View commit details
  3. Copy the full SHA
    73707eb View commit details
  4. Copy the full SHA
    74e95e8 View commit details
  5. Copy the full SHA
    7c52af4 View commit details
  6. Copy the full SHA
    5df118a View commit details
  7. Copy the full SHA
    40d9f22 View commit details
  8. Copy the full SHA
    5162fde View commit details
  9. Copy the full SHA
    8d7ac8b View commit details
  10. Copy the full SHA
    906aa82 View commit details
Showing with 884 additions and 830 deletions.
  1. +0 −1 truffle/src/main/java/org/jruby/truffle/Main.java
  2. +4 −0 truffle/src/main/java/org/jruby/truffle/nodes/RubyGuards.java
  3. +0 −10 truffle/src/main/java/org/jruby/truffle/nodes/RubyNode.java
  4. +1 −2 truffle/src/main/java/org/jruby/truffle/nodes/cast/CmpIntNode.java
  5. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/cast/LambdaNode.java
  6. +2 −3 truffle/src/main/java/org/jruby/truffle/nodes/cast/StringToSymbolNode.java
  7. +7 −10 truffle/src/main/java/org/jruby/truffle/nodes/cast/ToSNode.java
  8. +4 −4 truffle/src/main/java/org/jruby/truffle/nodes/coerce/NameToJavaStringNode.java
  9. +5 −5 truffle/src/main/java/org/jruby/truffle/nodes/coerce/NameToSymbolOrStringNode.java
  10. +6 −6 truffle/src/main/java/org/jruby/truffle/nodes/coerce/ToStrNode.java
  11. +1 −2 truffle/src/main/java/org/jruby/truffle/nodes/constants/GetConstantNode.java
  12. +3 −2 truffle/src/main/java/org/jruby/truffle/nodes/control/TraceNode.java
  13. +3 −4 truffle/src/main/java/org/jruby/truffle/nodes/conversion/ToJavaStringNode.java
  14. +3 −4 truffle/src/main/java/org/jruby/truffle/nodes/conversion/ToSymbolNode.java
  15. +3 −5 truffle/src/main/java/org/jruby/truffle/nodes/core/BasicObjectNodes.java
  16. +19 −20 truffle/src/main/java/org/jruby/truffle/nodes/core/EncodingNodes.java
  17. +4 −4 ...ain/java/org/jruby/truffle/nodes/core/{InteroplatedRegexpNode.java → InterpolatedRegexpNode.java}
  18. +12 −10 truffle/src/main/java/org/jruby/truffle/nodes/core/InterpolatedStringNode.java
  19. +65 −46 truffle/src/main/java/org/jruby/truffle/nodes/core/KernelNodes.java
  20. +3 −4 truffle/src/main/java/org/jruby/truffle/nodes/core/MatchDataNodes.java
  21. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/core/MethodNodes.java
  22. +40 −32 truffle/src/main/java/org/jruby/truffle/nodes/core/ModuleNodes.java
  23. +122 −9 truffle/src/main/java/org/jruby/truffle/nodes/core/ProcNodes.java
  24. +10 −13 truffle/src/main/java/org/jruby/truffle/nodes/core/RegexpNodes.java
  25. +16 −8 truffle/src/main/java/org/jruby/truffle/nodes/core/StringGuards.java
  26. +168 −144 truffle/src/main/java/org/jruby/truffle/nodes/core/StringNodes.java
  27. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/core/SymbolNodes.java
  28. +5 −5 truffle/src/main/java/org/jruby/truffle/nodes/core/ThreadNodes.java
  29. +11 −9 truffle/src/main/java/org/jruby/truffle/nodes/core/TruffleInteropNodes.java
  30. +9 −11 truffle/src/main/java/org/jruby/truffle/nodes/core/TrufflePrimitiveNodes.java
  31. +13 −10 truffle/src/main/java/org/jruby/truffle/nodes/core/array/ArrayNodes.java
  32. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/core/hash/HashLiteralNode.java
  33. +1 −1 truffle/src/main/java/org/jruby/truffle/nodes/core/hash/HashNodes.java
  34. +13 −14 truffle/src/main/java/org/jruby/truffle/nodes/core/hash/SetNode.java
  35. +5 −6 truffle/src/main/java/org/jruby/truffle/nodes/dispatch/CachedDispatchNode.java
  36. +1 −1 truffle/src/main/java/org/jruby/truffle/nodes/ext/BigDecimalNodes.java
  37. +4 −5 truffle/src/main/java/org/jruby/truffle/nodes/ext/DigestNodes.java
  38. +12 −13 truffle/src/main/java/org/jruby/truffle/nodes/ext/ZlibNodes.java
  39. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/globals/CheckOutputSeparatorVariableTypeNode.java
  40. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/globals/CheckProgramNameVariableTypeNode.java
  41. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/globals/CheckRecordSeparatorVariableTypeNode.java
  42. +0 −22 truffle/src/main/java/org/jruby/truffle/nodes/instrument/RubyWrapperNode.java
  43. +4 −6 truffle/src/main/java/org/jruby/truffle/nodes/interop/InteropNode.java
  44. +2 −3 truffle/src/main/java/org/jruby/truffle/nodes/interop/RubyToIndexLabelNode.java
  45. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/methods/BlockDefinitionNode.java
  46. +2 −2 truffle/src/main/java/org/jruby/truffle/nodes/objects/DefineOrGetModuleNode.java
  47. +0 −1 truffle/src/main/java/org/jruby/truffle/nodes/objects/ReadClassVariableNode.java
  48. +0 −2 truffle/src/main/java/org/jruby/truffle/nodes/objects/WriteClassVariableNode.java
  49. +4 −5 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/ByteArrayNodes.java
  50. +4 −5 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/DirPrimitiveNodes.java
  51. +6 −7 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/EncodingConverterPrimitiveNodes.java
  52. +2 −3 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/EncodingPrimitiveNodes.java
  53. +19 −18 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/ExceptionPrimitiveNodes.java
  54. +2 −3 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/IOBufferPrimitiveNodes.java
  55. +12 −13 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/IOPrimitiveNodes.java
  56. +2 −3 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/PointerPrimitiveNodes.java
  57. +33 −36 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/PosixNodes.java
  58. +12 −13 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/RegexpPrimitiveNodes.java
  59. +4 −7 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/StatPrimitiveNodes.java
  60. +62 −54 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/StringPrimitiveNodes.java
  61. +11 −9 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/TimePrimitiveNodes.java
  62. +12 −12 truffle/src/main/java/org/jruby/truffle/nodes/rubinius/VMPrimitiveNodes.java
  63. +5 −10 truffle/src/main/java/org/jruby/truffle/nodes/time/ReadTimeZoneNode.java
  64. +4 −3 truffle/src/main/java/org/jruby/truffle/nodes/yield/CachedYieldDispatchNode.java
  65. +3 −2 truffle/src/main/java/org/jruby/truffle/nodes/yield/GeneralYieldDispatchNode.java
  66. +6 −5 truffle/src/main/java/org/jruby/truffle/nodes/yield/YieldDispatchHeadNode.java
  67. +7 −7 truffle/src/main/java/org/jruby/truffle/pack/nodes/type/ToStringNode.java
  68. +0 −1 truffle/src/main/java/org/jruby/truffle/runtime/ModuleOperations.java
  69. +5 −3 truffle/src/main/java/org/jruby/truffle/runtime/RubyContext.java
  70. +2 −2 truffle/src/main/java/org/jruby/truffle/runtime/backtrace/MRIBacktraceFormatter.java
  71. +1 −1 truffle/src/main/java/org/jruby/truffle/runtime/core/CoreLibrary.java
  72. +5 −2 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyBasicObject.java
  73. +0 −1 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyBinding.java
  74. +3 −2 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyFiber.java
  75. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyHash.java
  76. +3 −2 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyModule.java
  77. +13 −103 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyProc.java
  78. +24 −9 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyRegexp.java
  79. +1 −0 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyString.java
  80. +3 −2 truffle/src/main/java/org/jruby/truffle/runtime/core/RubyThread.java
  81. +4 −2 truffle/src/main/java/org/jruby/truffle/runtime/core/StringCodeRangeableWrapper.java
  82. +2 −1 truffle/src/main/java/org/jruby/truffle/runtime/core/StringForeignAccessFactory.java
  83. +2 −1 truffle/src/main/java/org/jruby/truffle/runtime/signal/ProcSignalHandler.java
  84. +2 −1 truffle/src/main/java/org/jruby/truffle/runtime/subsystems/AtExitManager.java
  85. +2 −2 truffle/src/main/java/org/jruby/truffle/runtime/subsystems/AttachmentsManager.java
  86. +1 −3 truffle/src/main/java/org/jruby/truffle/runtime/subsystems/FeatureManager.java
  87. +1 −2 truffle/src/main/java/org/jruby/truffle/translator/BodyTranslator.java
1 change: 0 additions & 1 deletion truffle/src/main/java/org/jruby/truffle/Main.java
Original file line number Diff line number Diff line change
@@ -21,7 +21,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;

public class Main {

4 changes: 4 additions & 0 deletions truffle/src/main/java/org/jruby/truffle/nodes/RubyGuards.java
Original file line number Diff line number Diff line change
@@ -154,6 +154,10 @@ public static boolean isRubiniusByteArray(RubyBasicObject value) {
return value.getDynamicObject().getShape().getObjectType() == ByteArrayNodes.BYTE_ARRAY_TYPE;
}

public static boolean isRubyProc(Object value) {
return value instanceof RubyProc;
}

// Internal types

public static boolean isThreadLocal(Object value) {
10 changes: 0 additions & 10 deletions truffle/src/main/java/org/jruby/truffle/nodes/RubyNode.java
Original file line number Diff line number Diff line change
@@ -141,16 +141,6 @@ public double executeDouble(VirtualFrame frame) throws UnexpectedResultException
}
}

public RubyString executeRubyString(VirtualFrame frame) throws UnexpectedResultException {
final Object value = execute(frame);

if (value instanceof RubyString) {
return (RubyString) value;
} else {
throw new UnexpectedResultException(value);
}
}

public RubyRegexp executeRubyRegexp(VirtualFrame frame) throws UnexpectedResultException {
final Object value = execute(frame);

Original file line number Diff line number Diff line change
@@ -33,7 +33,6 @@
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.control.RaiseException;
import org.jruby.truffle.runtime.core.RubyBasicObject;
import org.jruby.truffle.runtime.core.RubyString;

/**
* This is a port of MRI's rb_cmpint, as taken from RubyComparable and broken out into specialized nodes.
@@ -53,7 +52,7 @@ public CmpIntNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
}

public abstract int executeCmpInt(VirtualFrame frame, Object cmpResult, RubyString a, Object b);
public abstract int executeCmpInt(VirtualFrame frame, Object cmpResult, Object a, Object b);

@Specialization
public int cmpInt(int value, Object receiver, Object other) {
Original file line number Diff line number Diff line change
@@ -12,9 +12,9 @@
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.ProcNodes;
import org.jruby.truffle.runtime.RubyArguments;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.core.RubyProc;
import org.jruby.truffle.runtime.methods.InternalMethod;

public class LambdaNode extends RubyNode {
@@ -34,7 +34,7 @@ public Object execute(VirtualFrame frame) {

// TODO(CS): not sure we're closing over the correct state here

return new RubyProc(getContext().getCoreLibrary().getProcClass(), RubyProc.Type.LAMBDA,
return ProcNodes.createRubyProc(getContext().getCoreLibrary().getProcClass(), ProcNodes.Type.LAMBDA,
method.getSharedMethodInfo(), method.getCallTarget(), method.getCallTarget(), method.getCallTarget(),
method.getDeclarationFrame(), method, RubyArguments.getSelf(frame.getArguments()), null);
}
Original file line number Diff line number Diff line change
@@ -15,7 +15,6 @@
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.core.RubyBasicObject;
import org.jruby.truffle.runtime.core.RubyString;

/**
* Creates a symbol from a string.
@@ -27,8 +26,8 @@ public StringToSymbolNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
}

@Specialization
public RubyBasicObject doString(RubyString string) {
@Specialization(guards = "isRubyString(string)")
public RubyBasicObject doString(RubyBasicObject string) {
return getSymbol(string.toString());
}

17 changes: 7 additions & 10 deletions truffle/src/main/java/org/jruby/truffle/nodes/cast/ToSNode.java
Original file line number Diff line number Diff line change
@@ -15,14 +15,14 @@
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.nodes.UnexpectedResultException;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.nodes.RubyGuards;
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.core.KernelNodes;
import org.jruby.truffle.nodes.core.KernelNodesFactory;
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.RubyString;

@NodeChild(type = RubyNode.class)
public abstract class ToSNode extends RubyNode {
@@ -43,20 +43,17 @@ protected RubyBasicObject kernelToS(VirtualFrame frame, Object object) {
return kernelToSNode.executeToS(frame, object);
}

@Override
public abstract RubyString executeRubyString(VirtualFrame frame);

@Specialization
public RubyBasicObject toS(RubyString string) {
@Specialization(guards = "isRubyString(string)")
public RubyBasicObject toS(RubyBasicObject string) {
return string;
}

@Specialization(guards = "!isRubyString(object)", rewriteOn = UnexpectedResultException.class)
public RubyBasicObject toS(VirtualFrame frame, Object object) throws UnexpectedResultException {
final Object value = callToSNode.call(frame, object, "to_s", null);

if (value instanceof RubyString) {
return (RubyString) value;
if (RubyGuards.isRubyString(value)) {
return (RubyBasicObject) value;
}

throw new UnexpectedResultException(value);
@@ -66,8 +63,8 @@ public RubyBasicObject toS(VirtualFrame frame, Object object) throws UnexpectedR
public RubyBasicObject toSFallback(VirtualFrame frame, Object object) {
final Object value = callToSNode.call(frame, object, "to_s", null);

if (value instanceof RubyString) {
return (RubyString) value;
if (RubyGuards.isRubyString(value)) {
return (RubyBasicObject) value;
} else {
return kernelToS(frame, object);
}
Original file line number Diff line number Diff line change
@@ -15,14 +15,14 @@
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.RubyGuards;
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.core.SymbolNodes;
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.control.RaiseException;
import org.jruby.truffle.runtime.core.RubyBasicObject;
import org.jruby.truffle.runtime.core.RubyString;

/**
* Take a Symbol or some object accepting #to_str
@@ -45,8 +45,8 @@ public String coerceRubySymbol(RubyBasicObject symbol) {
return SymbolNodes.getString(symbol);
}

@Specialization
public String coerceRubyString(RubyString string) {
@Specialization(guards = "isRubyString(string)")
public String coerceRubyString(RubyBasicObject string) {
return string.toString();
}

@@ -65,7 +65,7 @@ public String coerceObject(VirtualFrame frame, Object object) {
}
}

if (coerced instanceof RubyString) {
if (RubyGuards.isRubyString(coerced)) {
return coerced.toString();
} else {
CompilerDirectives.transferToInterpreter();
Original file line number Diff line number Diff line change
@@ -15,13 +15,13 @@
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.RubyGuards;
import org.jruby.truffle.nodes.RubyNode;
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.control.RaiseException;
import org.jruby.truffle.runtime.core.RubyBasicObject;
import org.jruby.truffle.runtime.core.RubyString;

/**
* Take a Symbol or some object accepting #to_str
@@ -44,8 +44,8 @@ public RubyBasicObject coerceRubySymbol(RubyBasicObject symbol) {
return symbol;
}

@Specialization
public RubyBasicObject coerceRubyString(RubyString string) {
@Specialization(guards = "isRubyString(string)")
public RubyBasicObject coerceRubyString(RubyBasicObject string) {
return string;
}

@@ -64,8 +64,8 @@ public RubyBasicObject coerceObject(VirtualFrame frame, Object object) {
}
}

if (coerced instanceof RubyString) {
return (RubyString) coerced;
if (RubyGuards.isRubyString(coerced)) {
return (RubyBasicObject) coerced;
} else {
CompilerDirectives.transferToInterpreter();
throw new RaiseException(getContext().getCoreLibrary().typeErrorBadCoercion(object, "String", "to_str", coerced, this));
Original file line number Diff line number Diff line change
@@ -15,13 +15,13 @@
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.RubyGuards;
import org.jruby.truffle.nodes.RubyNode;
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.control.RaiseException;
import org.jruby.truffle.runtime.core.RubyBasicObject;
import org.jruby.truffle.runtime.core.RubyString;

@NodeChild(value = "child", type = RubyNode.class)
public abstract class ToStrNode extends RubyNode {
@@ -33,10 +33,10 @@ public ToStrNode(RubyContext context, SourceSection sourceSection) {
toStrNode = DispatchHeadNodeFactory.createMethodCall(context);
}

public abstract RubyString executeRubyString(VirtualFrame frame, Object object);
public abstract RubyBasicObject executeToStr(VirtualFrame frame, Object object);

@Specialization
public RubyBasicObject coerceRubyString(RubyString string) {
@Specialization(guards = "isRubyString(string)")
public RubyBasicObject coerceRubyString(RubyBasicObject string) {
return string;
}

@@ -57,8 +57,8 @@ public RubyBasicObject coerceObject(VirtualFrame frame, Object object) {
}
}

if (coerced instanceof RubyString) {
return (RubyString) coerced;
if (RubyGuards.isRubyString(coerced)) {
return (RubyBasicObject) coerced;
} else {
CompilerDirectives.transferToInterpreter();

Original file line number Diff line number Diff line change
@@ -26,7 +26,6 @@
import org.jruby.truffle.runtime.control.RaiseException;
import org.jruby.truffle.runtime.core.RubyBasicObject;
import org.jruby.truffle.runtime.core.RubyModule;
import org.jruby.truffle.runtime.core.RubyString;
import org.jruby.util.IdUtil;

@NodeChildren({
@@ -53,7 +52,7 @@ protected Object getConstant(RubyModule module, String name, RubyConstant consta
protected Object autoloadConstant(VirtualFrame frame, RubyModule module, String name, RubyConstant constant,
@Cached("createRequireNode()") RequireNode requireNode) {

requireNode.require((RubyString) constant.getValue());
requireNode.require((RubyBasicObject) constant.getValue());

// retry
return this.executeGetConstant(frame, module, name);
Original file line number Diff line number Diff line change
@@ -18,6 +18,7 @@
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.core.BindingNodes;
import org.jruby.truffle.nodes.core.ProcNodes;
import org.jruby.truffle.runtime.RubyArguments;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.core.RubyBasicObject;
@@ -65,7 +66,7 @@ public void trace(VirtualFrame frame) {
traceFunc = context.getTraceManager().getTraceFunc();

if (traceFunc != null) {
callNode = insert(Truffle.getRuntime().createDirectCallNode(traceFunc.getCallTargetForBlocks()));
callNode = insert(Truffle.getRuntime().createDirectCallNode(ProcNodes.getCallTargetForBlocks(traceFunc)));
} else {
callNode = null;
}
@@ -85,7 +86,7 @@ public void trace(VirtualFrame frame) {
};

try {
callNode.call(frame, RubyArguments.pack(traceFunc.getMethod(), traceFunc.getDeclarationFrame(), traceFunc.getSelfCapturedInScope(), traceFunc.getBlockCapturedInScope(), args));
callNode.call(frame, RubyArguments.pack(ProcNodes.getMethod(traceFunc), ProcNodes.getDeclarationFrame(traceFunc), ProcNodes.getSelfCapturedInScope(traceFunc), ProcNodes.getBlockCapturedInScope(traceFunc), args));
} finally {
context.getTraceManager().setInTraceFunc(false);
}
Original file line number Diff line number Diff line change
@@ -18,7 +18,6 @@
import org.jruby.truffle.nodes.core.SymbolNodes;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.core.RubyBasicObject;
import org.jruby.truffle.runtime.core.RubyString;

@NodeChild(value="child", type=RubyNode.class)
public abstract class ToJavaStringNode extends RubyNode {
@@ -33,13 +32,13 @@ public ToJavaStringNode(RubyContext context, SourceSection sourceSection) {

@TruffleBoundary
@Specialization(guards = "isRubySymbol(symbol)")
protected String toJavaString(RubyBasicObject symbol) {
protected String toJavaStringSymbol(RubyBasicObject symbol) {
return SymbolNodes.getString(symbol);
}

@TruffleBoundary
@Specialization
protected String toJavaString(RubyString string) {
@Specialization(guards = "isRubyString(string)")
protected String toJavaStringString(RubyBasicObject string) {
return string.toString();
}

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

@NodeChild(value="child", type=RubyNode.class)
public abstract class ToSymbolNode extends RubyNode {
@@ -31,12 +30,12 @@ public ToSymbolNode(RubyContext context, SourceSection sourceSection) {
// TODO(CS): cache the conversion to a symbol? Or should the user do that themselves?

@Specialization(guards = "isRubySymbol(symbol)")
protected RubyBasicObject toSymbol(RubyBasicObject symbol) {
protected RubyBasicObject toSymbolSymbol(RubyBasicObject symbol) {
return symbol;
}

@Specialization
protected RubyBasicObject toSymbol(RubyString string) {
@Specialization(guards = "isRubyString(string)")
protected RubyBasicObject toSymbolString(RubyBasicObject string) {
return getSymbol(StringNodes.getByteList(string));
}

Original file line number Diff line number Diff line change
@@ -28,7 +28,6 @@
import org.jruby.truffle.runtime.control.RaiseException;
import org.jruby.truffle.runtime.core.RubyBasicObject;
import org.jruby.truffle.runtime.core.RubyProc;
import org.jruby.truffle.runtime.core.RubyString;

@CoreClass(name = "BasicObject")
public abstract class BasicObjectNodes {
@@ -177,10 +176,9 @@ public InstanceEvalNode(RubyContext context, SourceSection sourceSection) {
yield = new YieldDispatchHeadNode(context);
}

@Specialization
public Object instanceEval(VirtualFrame frame, Object receiver, RubyString string, NotProvided block) {
CompilerDirectives.transferToInterpreter();

@CompilerDirectives.TruffleBoundary
@Specialization(guards = "isRubyString(string)")
public Object instanceEval(Object receiver, RubyBasicObject string, NotProvided block) {
return getContext().instanceEval(StringNodes.getByteList(string), receiver, this);
}

Loading