Skip to content

Commit 38ac43b

Browse files
committed
[GR-26395] Periodic update of the graal import.
PullRequest: truffleruby/3639
2 parents 2fba299 + a5a6186 commit 38ac43b

File tree

4 files changed

+33
-9
lines changed

4 files changed

+33
-9
lines changed

mx.truffleruby/suite.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
{
88
"name": "regex",
99
"subdir": True,
10-
"version": "e5310bf91d65cf8871f6adb90656f671cfb27372",
10+
"version": "d090c8901583d6c6471b82c1c9f4ba644411bf5e",
1111
"urls": [
1212
{"url": "https://github.com/oracle/graal.git", "kind": "git"},
1313
{"url": "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind": "binary"},
@@ -16,7 +16,7 @@
1616
{
1717
"name": "sulong",
1818
"subdir": True,
19-
"version": "e5310bf91d65cf8871f6adb90656f671cfb27372",
19+
"version": "d090c8901583d6c6471b82c1c9f4ba644411bf5e",
2020
"urls": [
2121
{"url": "https://github.com/oracle/graal.git", "kind": "git"},
2222
{"url": "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind": "binary"},

src/main/java/org/truffleruby/core/numeric/BignumOperations.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,9 @@
1313

1414
public class BignumOperations {
1515

16-
private static final BigInteger LONG_MIN_BIGINT = BigInteger.valueOf(Long.MIN_VALUE);
17-
private static final BigInteger LONG_MAX_BIGINT = BigInteger.valueOf(Long.MAX_VALUE);
18-
1916
public static RubyBignum createBignum(BigInteger value) {
20-
assert value.compareTo(LONG_MIN_BIGINT) < 0 ||
21-
value.compareTo(LONG_MAX_BIGINT) > 0 : "Bignum in long range : " + value;
22-
final RubyBignum instance = new RubyBignum(value);
2317
// TODO BJF Jul-30-2020 Add allocation tracing
24-
return instance;
18+
return new RubyBignum(value);
2519
}
2620

2721
}

src/main/java/org/truffleruby/core/numeric/RubyBignum.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,14 @@
2323
@ExportLibrary(InteropLibrary.class)
2424
public final class RubyBignum extends ImmutableRubyObjectNotCopyable {
2525

26+
private static final BigInteger LONG_MIN_BIGINT = BigInteger.valueOf(Long.MIN_VALUE);
27+
private static final BigInteger LONG_MAX_BIGINT = BigInteger.valueOf(Long.MAX_VALUE);
28+
2629
public final BigInteger value;
2730

2831
public RubyBignum(BigInteger value) {
32+
assert value.compareTo(LONG_MIN_BIGINT) < 0 ||
33+
value.compareTo(LONG_MAX_BIGINT) > 0 : "Bignum in long range : " + value;
2934
this.value = value;
3035
}
3136

src/main/java/org/truffleruby/interop/InteropNodes.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.truffleruby.core.array.library.ArrayStoreLibrary;
3737
import org.truffleruby.core.encoding.Encodings;
3838
import org.truffleruby.core.encoding.RubyEncoding;
39+
import org.truffleruby.core.numeric.FixnumOrBignumNode;
3940
import org.truffleruby.core.string.RubyString;
4041
import org.truffleruby.core.string.StringHelperNodes;
4142
import org.truffleruby.core.string.StringOperations;
@@ -1051,6 +1052,15 @@ protected boolean fits(Object receiver,
10511052
}
10521053
}
10531054

1055+
@CoreMethod(names = "fits_in_big_integer?", onSingleton = true, required = 1)
1056+
public abstract static class FitsInBigIntegerNode extends CoreMethodArrayArgumentsNode {
1057+
@Specialization(limit = "getInteropCacheLimit()")
1058+
protected boolean fits(Object receiver,
1059+
@CachedLibrary("receiver") InteropLibrary receivers) {
1060+
return receivers.fitsInBigInteger(receiver);
1061+
}
1062+
}
1063+
10541064
@CoreMethod(names = "fits_in_float?", onSingleton = true, required = 1)
10551065
public abstract static class FitsInFloatNode extends CoreMethodArrayArgumentsNode {
10561066
@Specialization(limit = "getInteropCacheLimit()")
@@ -1125,6 +1135,21 @@ protected long as(Object receiver,
11251135
}
11261136
}
11271137

1138+
@CoreMethod(names = "as_big_integer", onSingleton = true, required = 1)
1139+
public abstract static class AsBigIntegerNode extends CoreMethodArrayArgumentsNode {
1140+
@Specialization(limit = "getInteropCacheLimit()")
1141+
protected Object as(Object receiver,
1142+
@CachedLibrary("receiver") InteropLibrary receivers,
1143+
@Cached FixnumOrBignumNode fixnumOrBignumNode,
1144+
@Cached TranslateInteropExceptionNode translateInteropException) {
1145+
try {
1146+
return fixnumOrBignumNode.fixnumOrBignum(receivers.asBigInteger(receiver));
1147+
} catch (InteropException e) {
1148+
throw translateInteropException.execute(e);
1149+
}
1150+
}
1151+
}
1152+
11281153
@CoreMethod(names = "as_float", onSingleton = true, required = 1)
11291154
public abstract static class AsFloatNode extends CoreMethodArrayArgumentsNode {
11301155
@Specialization(limit = "getInteropCacheLimit()")

0 commit comments

Comments
 (0)