Skip to content

Commit 039ee10

Browse files
committed
[Truffle] Remove the RubyBignum class.
1 parent 1bb107f commit 039ee10

File tree

4 files changed

+24
-22
lines changed

4 files changed

+24
-22
lines changed

truffle/src/main/java/org/jruby/truffle/nodes/RubyGuards.java

+5
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
package org.jruby.truffle.nodes;
1111

1212
import com.oracle.truffle.api.interop.TruffleObject;
13+
import org.jruby.truffle.nodes.core.BigDecimalNodes;
1314
import org.jruby.truffle.runtime.UndefinedPlaceholder;
1415
import org.jruby.truffle.runtime.core.*;
1516

@@ -115,4 +116,8 @@ public static boolean isInfinity(double value) {
115116
return Double.isInfinite(value);
116117
}
117118

119+
public static boolean isRubyBigDecimal(RubyBasicObject value) {
120+
return value.getDynamicObject().getShape().getObjectType() == BigDecimalNodes.BIG_DECIMAL_TYPE;
121+
}
122+
118123
}

truffle/src/main/java/org/jruby/truffle/nodes/core/BigDecimalNodes.java

+14-17
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.jruby.truffle.nodes.objects.Allocator;
2020
import org.jruby.truffle.runtime.RubyContext;
2121
import org.jruby.truffle.runtime.core.*;
22+
import org.jruby.truffle.runtime.object.BasicObjectType;
2223

2324
import java.math.BigDecimal;
2425
import java.math.MathContext;
@@ -27,7 +28,14 @@
2728
@CoreClass(name = "Truffle::BigDecimal")
2829
public abstract class BigDecimalNodes {
2930

31+
public static class BigDecimalType extends BasicObjectType {
32+
33+
}
34+
35+
public static final BigDecimalType BIG_DECIMAL_TYPE = new BigDecimalType();
36+
3037
private static final HiddenKey VALUE_IDENTIFIER = new HiddenKey("value");
38+
public static final Shape BIG_DECIMAL_SHAPE;
3139
private static final DynamicObjectFactory BIG_DECIMAL_FACTORY;
3240
public static final Property VALUE_PROPERTY;
3341

@@ -37,15 +45,8 @@ public abstract class BigDecimalNodes {
3745
VALUE_IDENTIFIER,
3846
allocator.locationForType(BigDecimal.class, EnumSet.of(LocationModifier.NonNull)),
3947
0);
40-
final Shape shape = RubyBasicObject.EMPTY_SHAPE.addProperty(VALUE_PROPERTY);
41-
BIG_DECIMAL_FACTORY = shape.createFactory();
42-
}
43-
44-
// TODO (pitr 15-May-2015) figure out where to put RubyBigDecimal, or remove completely
45-
public static class RubyBigDecimal extends RubyBasicObject {
46-
public RubyBigDecimal(RubyClass rubyClass, DynamicObject dynamicObject) {
47-
super(rubyClass, dynamicObject);
48-
}
48+
BIG_DECIMAL_SHAPE = RubyBasicObject.LAYOUT.createShape(BIG_DECIMAL_TYPE).addProperty(VALUE_PROPERTY);
49+
BIG_DECIMAL_FACTORY = BIG_DECIMAL_SHAPE.createFactory();
4950
}
5051

5152
public static class RubyBigDecimalAllocator implements Allocator {
@@ -84,19 +85,15 @@ public static void setBigDecimalValue(RubyBasicObject bignum, BigDecimal value)
8485
VALUE_PROPERTY.setSafe(bignum.getDynamicObject(), value, null);
8586
}
8687

87-
public static RubyBigDecimal createRubyBigDecimal(RubyClass rubyClass, BigDecimal value) {
88-
return new RubyBigDecimal(rubyClass, BIG_DECIMAL_FACTORY.newInstance(value));
88+
public static RubyBasicObject createRubyBigDecimal(RubyClass rubyClass, BigDecimal value) {
89+
return new RubyBasicObject(rubyClass, BIG_DECIMAL_FACTORY.newInstance(value));
8990
}
9091

9192
public abstract static class BigDecimalCoreMethodNode extends CoreMethodArrayArgumentsNode {
9293

9394
public BigDecimalCoreMethodNode(RubyContext context, SourceSection sourceSection) {
9495
super(context, sourceSection);
9596
}
96-
97-
public static boolean isRubyBigDecimal(Object value) {
98-
return value instanceof RubyBigDecimal;
99-
}
10097
}
10198

10299
@CoreMethod(names = "initialize", required = 1)
@@ -107,12 +104,12 @@ public InitializeNode(RubyContext context, SourceSection sourceSection) {
107104
}
108105

109106
@Specialization(guards = "isRubyBigDecimal(v)")
110-
public RubyBasicObject initialize(RubyBigDecimal self, RubyBasicObject v) {
107+
public RubyBasicObject initialize(RubyBasicObject self, RubyBasicObject v) {
111108
return v;
112109
}
113110

114111
@Specialization(guards = "isRubyString(v)")
115-
public RubyBasicObject initializeFromString(RubyBigDecimal self, RubyBasicObject v) {
112+
public RubyBasicObject initializeFromString(RubyBasicObject self, RubyBasicObject v) {
116113
// TODO (pitr 20-May-2015): add NaN, Infinity handling
117114
switch (v.toString()) {
118115
case "NaN":

truffle/src/main/java/org/jruby/truffle/runtime/core/RubyBasicObject.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import org.jruby.truffle.nodes.objects.Allocator;
2121
import org.jruby.truffle.runtime.ModuleOperations;
2222
import org.jruby.truffle.runtime.RubyContext;
23-
import org.jruby.truffle.runtime.object.RubyObjectType;
23+
import org.jruby.truffle.runtime.object.BasicObjectType;
2424
import org.jruby.truffle.runtime.subsystems.ObjectSpaceManager;
2525

2626
import java.util.LinkedHashMap;
@@ -37,7 +37,7 @@ public class RubyBasicObject implements TruffleObject {
3737
public static final HiddenKey FROZEN_IDENTIFIER = new HiddenKey("frozen?");
3838

3939
public static final Layout LAYOUT = Layout.createLayout(Layout.INT_TO_LONG);
40-
public static final Shape EMPTY_SHAPE = LAYOUT.createShape(new RubyObjectType());
40+
public static final Shape EMPTY_SHAPE = LAYOUT.createShape(new BasicObjectType());
4141

4242
private final DynamicObject dynamicObject;
4343

@@ -147,8 +147,8 @@ public Shape getObjectLayout() {
147147
return dynamicObject.getShape();
148148
}
149149

150-
public RubyObjectType getObjectType() {
151-
return (RubyObjectType) dynamicObject.getShape().getObjectType();
150+
public BasicObjectType getObjectType() {
151+
return (BasicObjectType) dynamicObject.getShape().getObjectType();
152152
}
153153

154154
public RubyClass getLogicalClass() {

truffle/src/main/java/org/jruby/truffle/runtime/object/RubyObjectType.java renamed to truffle/src/main/java/org/jruby/truffle/runtime/object/BasicObjectType.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@
1111

1212
import com.oracle.truffle.api.object.ObjectType;
1313

14-
public class RubyObjectType extends ObjectType {
14+
public class BasicObjectType extends ObjectType {
1515

1616
}

0 commit comments

Comments
 (0)