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

Commits on Apr 16, 2015

  1. Copy the full SHA
    f7c8511 View commit details
  2. Copy the full SHA
    7af063f View commit details
  3. Copy the full SHA
    e86c80f View commit details
  4. [Truffle] Renove @SuppressWarnings("unused").

    * Improves readability.
    eregon committed Apr 16, 2015
    Copy the full SHA
    b4bf699 View commit details
  5. Copy the full SHA
    c67f7ed View commit details
  6. Copy the full SHA
    0268d3c View commit details
Original file line number Diff line number Diff line change
@@ -33,7 +33,7 @@ public BooleanCastNode(BooleanCastNode copy) {
}

@Specialization
public boolean doNil(@SuppressWarnings("unused") RubyNilClass nil) {
public boolean doNil(RubyNilClass nil) {
return false;
}

Original file line number Diff line number Diff line change
@@ -35,7 +35,7 @@ public ProcOrNullNode(ProcOrNullNode prev) {
}

@Specialization
public Object doNil(@SuppressWarnings("unused") RubyNilClass nil) {
public Object doNil(RubyNilClass nil) {
return null;
}

Original file line number Diff line number Diff line change
@@ -262,7 +262,7 @@ public MethodMissingNode(MethodMissingNode prev) {
}

@Specialization
public Object methodMissing(Object self, Object[] args, @SuppressWarnings("unused") UndefinedPlaceholder block) {
public Object methodMissing(Object self, Object[] args, UndefinedPlaceholder block) {
notDesignedForCompilation();

return methodMissing(self, args, (RubyProc) null);
Original file line number Diff line number Diff line change
@@ -58,8 +58,6 @@ public abstract static class NewNode extends CoreMethodNode {

@Child private AllocateNode allocateNode;
@Child private CallDispatchHeadNode initialize;
@CompilerDirectives.CompilationFinal private boolean isCached = true;
@CompilerDirectives.CompilationFinal private RubyClass cachedClass;

public NewNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
@@ -73,8 +71,10 @@ public NewNode(NewNode prev) {
initialize = prev.initialize;
}

public abstract RubyBasicObject executeNew(VirtualFrame frame, RubyClass rubyClass, Object[] args, Object block);

@Specialization
public RubyBasicObject newInstance(VirtualFrame frame, RubyClass rubyClass, Object[] args, @SuppressWarnings("unused") UndefinedPlaceholder block) {
public RubyBasicObject newInstance(VirtualFrame frame, RubyClass rubyClass, Object[] args, UndefinedPlaceholder block) {
return doNewInstance(frame, rubyClass, args, null);
}

Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@

import com.oracle.truffle.api.dsl.Specialization;
import com.oracle.truffle.api.source.SourceSection;
import org.jruby.truffle.runtime.RubyCallStack;

import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.UndefinedPlaceholder;
import org.jruby.truffle.runtime.core.RubyArray;
@@ -37,15 +37,15 @@ public InitializeNode(InitializeNode prev) {
public RubyNilClass initialize(RubyException exception, UndefinedPlaceholder message) {
notDesignedForCompilation();

exception.initialize(getContext().makeString(" "), RubyCallStack.getBacktrace(this));
exception.initialize(getContext().makeString(" "));
return nil();
}

@Specialization
public RubyNilClass initialize(RubyException exception, RubyString message) {
notDesignedForCompilation();

exception.initialize(message, RubyCallStack.getBacktrace(this));
exception.initialize(message);
return nil();
}

@@ -63,8 +63,12 @@ public BacktraceNode(BacktraceNode prev) {
}

@Specialization
public RubyArray backtrace(RubyException exception) {
return exception.asRubyStringArray();
public Object backtrace(RubyException exception) {
if (exception.getBacktrace() == null) {
return nil();
} else {
return exception.asRubyStringArray();
}
}

}
Original file line number Diff line number Diff line change
@@ -163,7 +163,7 @@ public ExpandPathNode(ExpandPathNode prev) {
}

@Specialization
public RubyString expandPath(RubyString path, @SuppressWarnings("unused") UndefinedPlaceholder dir) {
public RubyString expandPath(RubyString path, UndefinedPlaceholder dir) {
return getContext().makeString(RubyFile.expandPath(getContext(), path.toString()));
}

Original file line number Diff line number Diff line change
@@ -433,8 +433,7 @@ public double div(int a, double b) {
}

@Specialization
public int div(@SuppressWarnings("unused") int a, @SuppressWarnings("unused") RubyBignum b) {
// TODO(CS): not entirely sure this is correct
public int div(int a, RubyBignum b) {
return 0;
}

@@ -517,7 +516,7 @@ public double div(long a, double b) {
}

@Specialization
public int div(@SuppressWarnings("unused") long a, @SuppressWarnings("unused") RubyBignum b) {
public int div(long a, RubyBignum b) {
// TODO(CS): not entirely sure this is correct
return 0;
}
Original file line number Diff line number Diff line change
@@ -30,6 +30,8 @@
import org.jruby.truffle.nodes.cast.NumericToFloatNodeFactory;
import org.jruby.truffle.nodes.coerce.ToStrNodeFactory;
import org.jruby.truffle.nodes.control.WhileNode;
import org.jruby.truffle.nodes.core.ClassNodes.NewNode;
import org.jruby.truffle.nodes.core.ClassNodesFactory.NewNodeFactory;
import org.jruby.truffle.nodes.core.KernelNodesFactory.CopyNodeFactory;
import org.jruby.truffle.nodes.core.KernelNodesFactory.SameOrEqualNodeFactory;
import org.jruby.truffle.nodes.dispatch.*;
@@ -1416,16 +1418,16 @@ public RubyArray methods(RubyBasicObject self, UndefinedPlaceholder includeInher
public abstract static class RaiseNode extends CoreMethodNode {

@Child private ReadInstanceVariableNode getLastExceptionNode;
@Child private CallDispatchHeadNode initialize;
@Child private NewNode newNode;

public RaiseNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
initialize = DispatchHeadNodeFactory.createMethodCall(context);
newNode = NewNodeFactory.create(context, sourceSection, new RubyNode[] { null, null, null });
}

public RaiseNode(RaiseNode prev) {
super(prev);
initialize = prev.initialize;
newNode = prev.newNode;
}

@Specialization
@@ -1466,15 +1468,20 @@ public Object raise(VirtualFrame frame, RubyClass exceptionClass, UndefinedPlace
public Object raise(VirtualFrame frame, RubyClass exceptionClass, RubyString message, UndefinedPlaceholder undefined1) {
notDesignedForCompilation();

final Object exception = exceptionClass.allocate(this);
initialize.call(frame, exception, "initialize", null, message);
final Object exceptionObject = newNode.executeNew(frame, exceptionClass, new Object[] { message }, UndefinedPlaceholder.INSTANCE);

if (!(exception instanceof RubyException)) {
if (!(exceptionObject instanceof RubyException)) {
CompilerDirectives.transferToInterpreter();
throw new RaiseException(getContext().getCoreLibrary().typeError("exception class/object expected", this));
}
final RubyException exception = (RubyException) exceptionObject;

throw new RaiseException((RubyException) exception);
if (exception.getBacktrace() == null) { // TODO (eregon 16 Apr. 2015): MRI does a dynamic call here (in setup_exception)
Backtrace backtrace = RubyCallStack.getBacktrace(this);
exception.setBacktrace(backtrace); // and here too
}

throw new RaiseException(exception);
}

@Specialization
Original file line number Diff line number Diff line change
@@ -103,7 +103,7 @@ public CallNode(CallNode prev) {
}

@Specialization
public Object call(VirtualFrame frame, RubyMethod method, Object[] arguments, @SuppressWarnings("unused") UndefinedPlaceholder block) {
public Object call(VirtualFrame frame, RubyMethod method, Object[] arguments, UndefinedPlaceholder block) {
return doCall(frame, method, arguments, null);
}

Original file line number Diff line number Diff line change
@@ -630,23 +630,23 @@ protected RubyBinding getCallerBinding(VirtualFrame frame) {
}

@Specialization
public Object classEval(VirtualFrame frame, RubyModule module, RubyString code, @SuppressWarnings("unused") UndefinedPlaceholder file, @SuppressWarnings("unused") UndefinedPlaceholder line, @SuppressWarnings("unused") UndefinedPlaceholder block) {
public Object classEval(VirtualFrame frame, RubyModule module, RubyString code, UndefinedPlaceholder file, UndefinedPlaceholder line, UndefinedPlaceholder block) {
notDesignedForCompilation();

final Source source = Source.fromText(code.toString(), "(eval)");
return classEvalSource(frame, module, source, code.getBytes().getEncoding());
}

@Specialization
public Object classEval(VirtualFrame frame, RubyModule module, RubyString code, RubyString file, @SuppressWarnings("unused") UndefinedPlaceholder line, @SuppressWarnings("unused") UndefinedPlaceholder block) {
public Object classEval(VirtualFrame frame, RubyModule module, RubyString code, RubyString file, UndefinedPlaceholder line, UndefinedPlaceholder block) {
notDesignedForCompilation();

final Source source = Source.asPseudoFile(code.toString(), file.toString());
return classEvalSource(frame, module, source, code.getBytes().getEncoding());
}

@Specialization
public Object classEval(VirtualFrame frame, RubyModule module, RubyString code, RubyString file, @SuppressWarnings("unused") int line, @SuppressWarnings("unused") UndefinedPlaceholder block) {
public Object classEval(VirtualFrame frame, RubyModule module, RubyString code, RubyString file, int line, UndefinedPlaceholder block) {
notDesignedForCompilation();

final Source source = Source.asPseudoFile(code.toString(), file.toString());
@@ -665,7 +665,7 @@ public RubyNode wrap(RubyNode node) {
}

@Specialization
public Object classEval(VirtualFrame frame, RubyModule self, @SuppressWarnings("unused") UndefinedPlaceholder code, @SuppressWarnings("unused") UndefinedPlaceholder file, @SuppressWarnings("unused") UndefinedPlaceholder line, RubyProc block) {
public Object classEval(VirtualFrame frame, RubyModule self, UndefinedPlaceholder code, UndefinedPlaceholder file, UndefinedPlaceholder line, RubyProc block) {
notDesignedForCompilation();

return yield.dispatchWithModifiedSelf(frame, block, self);
@@ -833,7 +833,7 @@ public RubyNode coerceToString(RubyNode name) {
}

@Specialization
public boolean isConstDefined(RubyModule module, String name, @SuppressWarnings("unused") UndefinedPlaceholder inherit) {
public boolean isConstDefined(RubyModule module, String name, UndefinedPlaceholder inherit) {
return isConstDefined(module, name, true);
}

@@ -1264,7 +1264,7 @@ public MethodDefinedNode(MethodDefinedNode prev) {
}

@Specialization
public boolean isMethodDefined(RubyModule module, RubyString name, @SuppressWarnings("unused") UndefinedPlaceholder inherit) {
public boolean isMethodDefined(RubyModule module, RubyString name, UndefinedPlaceholder inherit) {
notDesignedForCompilation();

return ModuleOperations.lookupMethod(module, name.toString()) != null;
@@ -1282,7 +1282,7 @@ public boolean isMethodDefined(RubyModule module, RubyString name, boolean inher
}

@Specialization
public boolean isMethodDefined(RubyModule module, RubySymbol name, @SuppressWarnings("unused") UndefinedPlaceholder inherit) {
public boolean isMethodDefined(RubyModule module, RubySymbol name, UndefinedPlaceholder inherit) {
notDesignedForCompilation();

return ModuleOperations.lookupMethod(module, name.toString()) != null;
Original file line number Diff line number Diff line change
@@ -99,7 +99,7 @@ public EachObjectNode(EachObjectNode prev) {
}

@Specialization
public int eachObject(VirtualFrame frame, @SuppressWarnings("unused") UndefinedPlaceholder ofClass, RubyProc block) {
public int eachObject(VirtualFrame frame, UndefinedPlaceholder ofClass, RubyProc block) {
notDesignedForCompilation();

int count = 0;
Original file line number Diff line number Diff line change
@@ -123,7 +123,7 @@ public RubyNilClass initialize(RubyProc proc, RubyProc block) {
}

@Specialization
public RubyNilClass initialize(VirtualFrame frame, RubyProc proc, @SuppressWarnings("unused") UndefinedPlaceholder block) {
public RubyNilClass initialize(VirtualFrame frame, RubyProc proc, UndefinedPlaceholder block) {
notDesignedForCompilation();

final Memo<Integer> frameCount = new Memo<>(0);
Original file line number Diff line number Diff line change
@@ -10,7 +10,6 @@
package org.jruby.truffle.runtime.core;

import com.oracle.truffle.api.nodes.Node;
import org.jruby.truffle.nodes.RubyNode;
import org.jruby.truffle.nodes.objects.Allocator;
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.truffle.runtime.backtrace.Backtrace;
@@ -31,16 +30,16 @@ public RubyException(RubyClass rubyClass) {

public RubyException(RubyClass rubyClass, RubyString message, Backtrace backtrace) {
this(rubyClass);
initialize(message, backtrace);
initialize(message);
this.backtrace = backtrace;
}

public void initialize(RubyString message, Backtrace backtrace) {
public void initialize(RubyString message) {
assert message != null;
assert backtrace != null;
this.message = message;
this.backtrace = backtrace;
}

// TODO (eregon 16 Apr. 2015): MRI does a dynamic calls to "message"
public RubyString getMessage() {
return message;
}
@@ -49,7 +48,12 @@ public Backtrace getBacktrace() {
return backtrace;
}

public RubyArray asRubyStringArray() {
public void setBacktrace(Backtrace backtrace) {
this.backtrace = backtrace;
}

public Object asRubyStringArray() {
assert backtrace != null;
final String[] lines = Backtrace.EXCEPTION_FORMATTER.format(getContext(), this, backtrace);

final Object[] array = new Object[lines.length];