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

Commits on May 26, 2015

  1. [Truffle] Make liveModule of LexicalScope CompilationFinal.

    * It will be set before entering the scope actually using it.
    eregon committed May 26, 2015
    Copy the full SHA
    a2b7e24 View commit details
  2. Copy the full SHA
    a2ec243 View commit details
  3. [Truffle] Remove (int,long) and (long,int) in FixnumNodes when there …

    …is a (long,long) specialization.
    
    * Because they are then just redundant with the implicit cast.
    eregon committed May 26, 2015
    Copy the full SHA
    03c0a85 View commit details
4 changes: 2 additions & 2 deletions tool/jt.rb
Original file line number Diff line number Diff line change
@@ -65,7 +65,7 @@ def self.find_graal_mx
end

def self.igv_running?
`ps`.lines.any? { |p| p.include? 'mxtool/mx.py igv' }
`ps a`.lines.any? { |p| p.include? 'mxtool/mx.py igv' }
end

def self.ensure_igv_running
@@ -237,7 +237,7 @@ def run(*args)
end

if args.delete('--igv')
raise "--igv doesn't work on master - you need a branch that builds against latest graal" if Utilities.git_branch == 'master'
warn "warning: --igv might not work on master - if it does not, use truffle-head instead which builds against latest graal" if Utilities.git_branch == 'master'
Utilities.ensure_igv_running
jruby_args += %w[-J-G:Dump=TrufflePartialEscape]
end
Original file line number Diff line number Diff line change
@@ -151,16 +151,6 @@ public long subWithOverflow(int a, int b) {
return (long) a - (long) b;
}

@Specialization(rewriteOn = ArithmeticException.class)
public long sub(int a, long b) {
return ExactMath.subtractExact(a, b);
}

@Specialization
public Object subWithOverflow(int a, long b) {
return fixnumOrBignum(BigInteger.valueOf(a).subtract(BigInteger.valueOf(b)));
}

@Specialization(guards = "isRubyBignum(b)")
public Object sub(int a, RubyBasicObject b) {
return fixnumOrBignum(BigInteger.valueOf(a).subtract(BignumNodes.getBigIntegerValue(b)));
@@ -176,16 +166,6 @@ public Object subCoerced(VirtualFrame frame, int a, RubyBasicObject b) {
return ruby(frame, "redo_coerced :-, b", "b", b);
}

@Specialization(rewriteOn = ArithmeticException.class)
public long sub(long a, int b) {
return ExactMath.subtractExact(a, b);
}

@Specialization
public Object subWithOverflow(long a, int b) {
return fixnumOrBignum(BigInteger.valueOf(a).subtract(BigInteger.valueOf(b)));
}

@Specialization(rewriteOn = ArithmeticException.class)
public long sub(long a, long b) {
return ExactMath.subtractExact(a, b);
@@ -230,17 +210,6 @@ public long mulWithOverflow(int a, int b) {
return (long) a * (long) b;
}

@Specialization(rewriteOn = ArithmeticException.class)
public Object mul(int a, long b) {
return ExactMath.multiplyExact(a, b);
}

@TruffleBoundary
@Specialization
public Object mulWithOverflow(int a, long b) {
return fixnumOrBignum(BigInteger.valueOf(a).multiply(BigInteger.valueOf(b)));
}

@Specialization
public double mul(int a, double b) {
return a * b;
@@ -257,17 +226,6 @@ public Object mulCoerced(VirtualFrame frame, int a, RubyBasicObject b) {
return ruby(frame, "redo_coerced :*, b", "b", b);
}

@Specialization(rewriteOn = ArithmeticException.class)
public long mul(long a, int b) {
return ExactMath.multiplyExact(a, b);
}

@TruffleBoundary
@Specialization
public Object mulWithOverflow(long a, int b) {
return fixnumOrBignum(BigInteger.valueOf(a).multiply(BigInteger.valueOf(b)));
}

@Specialization(rewriteOn = ArithmeticException.class)
public long mul(long a, long b) {
return ExactMath.multiplyExact(a, b);
@@ -370,16 +328,6 @@ public Object divEdgeCase(int a, int b) {
}
}

@Specialization(rewriteOn = UnexpectedResultException.class)
public long div(int a, long b) throws UnexpectedResultException {
return div((long) a, b);
}

@Specialization
public Object divEdgeCase(int a, long b) {
return divEdgeCase((long) a, b);
}

@Specialization
public double div(int a, double b) {
return a / b;
@@ -395,16 +343,6 @@ public Object divCoerced(VirtualFrame frame, int a, RubyBasicObject b) {
return ruby(frame, "redo_coerced :/, b", "b", b);
}

@Specialization(rewriteOn = UnexpectedResultException.class)
public long div(long a, int b) throws UnexpectedResultException {
return div(a, (long) b);
}

@Specialization
public Object divEdgeCase(long a, int b) {
return divEdgeCase(a, (long) b);
}

@Specialization(rewriteOn = UnexpectedResultException.class)
public long div(long a, long b) throws UnexpectedResultException {
if (b > 0) {
@@ -502,11 +440,6 @@ public int mod(int a, int b) {
return mod;
}

@Specialization
public long mod(int a, long b) {
return mod((long) a, b);
}

@Specialization
public double mod(int a, double b) {
return mod((long) a, b);
@@ -528,11 +461,6 @@ public double mod(long a, double b) {
return mod;
}

@Specialization
public long mod(long a, int b) {
return mod(a, (long) b);
}

@Specialization
public long mod(long a, long b) {
long mod = a % b;
@@ -583,11 +511,6 @@ public RubyArray divMod(int a, int b) {
return divModNode.execute(a, b);
}

@Specialization
public RubyArray divMod(int a, long b) {
return divModNode.execute(a, b);
}

@Specialization(guards = "isRubyBignum(b)")
public RubyArray divMod(int a, RubyBasicObject b) {
return divModNode.execute(a, BignumNodes.getBigIntegerValue(b));
@@ -598,11 +521,6 @@ public RubyArray divMod(int a, double b) {
return divModNode.execute(a, b);
}

@Specialization
public RubyArray divMod(long a, int b) {
return divModNode.execute(a, b);
}

@Specialization
public RubyArray divMod(long a, long b) {
return divModNode.execute(a, b);
@@ -632,11 +550,6 @@ public boolean less(int a, int b) {
return a < b;
}

@Specialization
public boolean less(int a, long b) {
return a < b;
}

@Specialization
public boolean less(int a, double b) {
return a < b;
@@ -647,11 +560,6 @@ public boolean less(int a, RubyBasicObject b) {
return BigInteger.valueOf(a).compareTo(BignumNodes.getBigIntegerValue(b)) < 0;
}

@Specialization
public boolean less(long a, int b) {
return a < b;
}

@Specialization
public boolean less(long a, long b) {
return a < b;
@@ -691,11 +599,6 @@ public boolean lessEqual(int a, int b) {
return a <= b;
}

@Specialization
public boolean lessEqual(int a, long b) {
return a <= b;
}

@Specialization
public boolean lessEqual(int a, double b) {
return a <= b;
@@ -706,11 +609,6 @@ public boolean lessEqual(int a, RubyBasicObject b) {
return BigInteger.valueOf(a).compareTo(BignumNodes.getBigIntegerValue(b)) <= 0;
}

@Specialization
public boolean lessEqual(long a, int b) {
return a <= b;
}

@Specialization
public boolean lessEqual(long a, long b) {
return a <= b;
@@ -742,11 +640,6 @@ public boolean equal(int a, int b) {
return a == b;
}

@Specialization
public boolean equal(int a, long b) {
return a == b;
}

@Specialization
public boolean equal(int a, double b) {
return a == b;
@@ -757,11 +650,6 @@ public boolean equal(int a, RubyBasicObject b) {
return BigInteger.valueOf(a).equals(BignumNodes.getBigIntegerValue(b));
}

@Specialization
public boolean equal(long a, int b) {
return a == b;
}

@Specialization
public boolean equal(long a, long b) {
return a == b;
@@ -800,11 +688,6 @@ public int compare(int a, int b) {
return Integer.compare(a, b);
}

@Specialization
public int compare(int a, long b) {
return Long.compare(a, b);
}

@Specialization
public int compare(int a, double b) {
return Double.compare(a, b);
@@ -815,11 +698,6 @@ public int compare(int a, RubyBasicObject b) {
return BigInteger.valueOf(a).compareTo(BignumNodes.getBigIntegerValue(b));
}

@Specialization
public int compare(long a, int b) {
return Long.compare(a, b);
}

@Specialization
public int compare(long a, long b) {
return Long.compare(a, b);
@@ -858,11 +736,6 @@ public boolean greaterEqual(int a, int b) {
return a >= b;
}

@Specialization
public boolean greaterEqual(int a, long b) {
return a >= b;
}

@Specialization
public boolean greaterEqual(int a, double b) {
return a >= b;
@@ -873,11 +746,6 @@ public boolean greaterEqual(int a, RubyBasicObject b) {
return BigInteger.valueOf(a).compareTo(BignumNodes.getBigIntegerValue(b)) >= 0;
}

@Specialization
public boolean greaterEqual(long a, int b) {
return a >= b;
}

@Specialization
public boolean greaterEqual(long a, long b) {
return a >= b;
@@ -906,11 +774,6 @@ public boolean greater(int a, int b) {
return a > b;
}

@Specialization
public boolean greater(int a, long b) {
return a > b;
}

@Specialization
public boolean greater(int a, double b) {
return a > b;
@@ -922,11 +785,6 @@ public boolean greater(int a, RubyBasicObject b) {
) > 0;
}

@Specialization
public boolean greater(long a, int b) {
return a > b;
}

@Specialization
public boolean greater(long a, long b) {
return a > b;
@@ -975,21 +833,11 @@ public int bitAnd(int a, int b) {
return a & b;
}

@Specialization
public long bitAnd(int a, long b) {
return a & b;
}

@Specialization(guards = "isRubyBignum(b)")
public Object bitAnd(int a, RubyBasicObject b) {
return fixnumOrBignum(BigInteger.valueOf(a).and(BignumNodes.getBigIntegerValue(b)));
}

@Specialization
public long bitAnd(long a, int b) {
return a & b;
}

@Specialization
public long bitAnd(long a, long b) {
return a & b;
@@ -1013,21 +861,11 @@ public int bitOr(int a, int b) {
return a | b;
}

@Specialization
public long bitOr(int a, long b) {
return a | b;
}

@Specialization(guards = "isRubyBignum(b)")
public Object bitOr(int a, RubyBasicObject b) {
return fixnumOrBignum(BigInteger.valueOf(a).or(BignumNodes.getBigIntegerValue(b)));
}

@Specialization
public long bitOr(long a, int b) {
return a | b;
}

@Specialization
public long bitOr(long a, long b) {
return a | b;
@@ -1051,21 +889,11 @@ public int bitXOr(int a, int b) {
return a ^ b;
}

@Specialization
public long bitXOr(int a, long b) {
return a ^ b;
}

@Specialization(guards = "isRubyBignum(b)")
public Object bitXOr(int a, RubyBasicObject b) {
return fixnumOrBignum(BigInteger.valueOf(a).xor(BignumNodes.getBigIntegerValue(b)));
}

@Specialization
public long bitXOr(long a, int b) {
return a ^ b;
}

@Specialization
public long bitXOr(long a, long b) {
return a ^ b;
Original file line number Diff line number Diff line change
@@ -11,11 +11,13 @@

import org.jruby.truffle.runtime.core.RubyModule;

import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;

public class LexicalScope {
public static final LexicalScope NONE = null;

private final LexicalScope parent;
private RubyModule liveModule;
@CompilationFinal private RubyModule liveModule;

public LexicalScope(LexicalScope parent, RubyModule liveModule) {
this.parent = parent;