Skip to content

Commit 78bf0d3

Browse files
committed
Refactor according to PR review.
Refactorings include: - Use `@TruffleBoundary` and `@Fallback` where appropiate. - Make `*Builtins` classes final. - Fix (typo-ish): Use `PyComplexCheckNode` instead of `PyUnicodeCheckNode` for checking for complex numbers in `PyNumberCheckNode`. - Add `doBoolean` specialization to `PyNumberCheckNode`.
1 parent 36fd368 commit 78bf0d3

File tree

9 files changed

+21
-11
lines changed

9 files changed

+21
-11
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/PythonBuiltinClassType.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import com.oracle.graal.python.builtins.objects.function.BuiltinMethodDescriptor;
5656
import com.oracle.graal.python.builtins.objects.type.SpecialMethodSlot;
5757
import com.oracle.graal.python.runtime.PythonContext;
58+
import com.oracle.graal.python.util.PythonUtils;
5859
import com.oracle.truffle.api.CompilerAsserts;
5960
import com.oracle.truffle.api.CompilerDirectives;
6061
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
@@ -716,7 +717,7 @@ public final Shape getInstanceShape(PythonLanguage lang) {
716717

717718
Empty.base = Exception;
718719

719-
HashSet<String> set = new HashSet<>();
720+
HashSet<String> set = PythonUtils.ASSERTIONS_ENABLED ? new HashSet<>() : null;
720721
for (PythonBuiltinClassType type : VALUES) {
721722
// check uniqueness
722723
assert set.add("" + type.moduleName + "." + type.name) : type.name();

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/csv/CSVDialect.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import static com.oracle.graal.python.builtins.modules.csv.CSVModuleBuiltins.NOT_SET_CODEPOINT;
4545

4646
import com.oracle.graal.python.builtins.objects.object.PythonBuiltinObject;
47+
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
4748
import com.oracle.truffle.api.object.Shape;
4849

4950
public final class CSVDialect extends PythonBuiltinObject {
@@ -87,6 +88,7 @@ public CSVDialect(Object cls, Shape instanceShape, String delimiter, boolean dou
8788
this.lineTerminatorCodePoints = strToCodePointArray(this.lineTerminator);
8889
}
8990

91+
@TruffleBoundary
9092
private static int[] strToCodePointArray(String str) {
9193
final int strLen = str.length();
9294
final int codePointCount = str.codePointCount(0, strLen);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/csv/CSVDialectBuiltins.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
import com.oracle.truffle.api.dsl.Specialization;
5757

5858
@CoreFunctions(extendClasses = PythonBuiltinClassType.CSVDialect)
59-
public class CSVDialectBuiltins extends PythonBuiltins {
59+
public final class CSVDialectBuiltins extends PythonBuiltins {
6060

6161
@Override
6262
protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFactories() {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/csv/CSVModuleBuiltins.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@
9191
import com.oracle.truffle.api.library.CachedLibrary;
9292

9393
@CoreFunctions(defineModule = "_csv")
94-
public class CSVModuleBuiltins extends PythonBuiltins {
94+
public final class CSVModuleBuiltins extends PythonBuiltins {
9595

9696
static long fieldLimit = 128 * 1024; // max parsed field size
9797
static final String WRITE = "write";

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/csv/CSVReaderBuiltins.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
import static com.oracle.graal.python.nodes.SpecialMethodNames.__NEXT__;
6060

6161
@CoreFunctions(extendClasses = PythonBuiltinClassType.CSVReader)
62-
public class CSVReaderBuiltins extends PythonBuiltins {
62+
public final class CSVReaderBuiltins extends PythonBuiltins {
6363

6464
@Override
6565
protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFactories() {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/csv/CSVWriterBuiltins.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
import com.oracle.truffle.api.frame.VirtualFrame;
6868

6969
@CoreFunctions(extendClasses = PythonBuiltinClassType.CSVWriter)
70-
public class CSVWriterBuiltins extends PythonBuiltins {
70+
public final class CSVWriterBuiltins extends PythonBuiltins {
7171

7272
@Override
7373
protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFactories() {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/lib/PyNumberCheckNode.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import com.oracle.graal.python.nodes.attributes.LookupCallableSlotInMRONode;
4949
import com.oracle.graal.python.nodes.object.GetClassNode;
5050
import com.oracle.truffle.api.dsl.Cached;
51+
import com.oracle.truffle.api.dsl.Fallback;
5152
import com.oracle.truffle.api.dsl.GenerateUncached;
5253
import com.oracle.truffle.api.dsl.ImportStatic;
5354
import com.oracle.truffle.api.dsl.Specialization;
@@ -89,6 +90,11 @@ static boolean doLong(Long object) {
8990
return true;
9091
}
9192

93+
@Specialization
94+
static boolean doBoolean(Boolean object) {
95+
return false;
96+
}
97+
9298
@Specialization
9399
static boolean doNone(PNone object) {
94100
return false;
@@ -100,19 +106,19 @@ static boolean doPythonObject(PythonAbstractObject object,
100106
@Cached(parameters = "Index") LookupCallableSlotInMRONode lookupIndex,
101107
@Cached(parameters = "Float") LookupCallableSlotInMRONode lookupFloat,
102108
@Cached(parameters = "Int") LookupCallableSlotInMRONode lookupInt,
103-
@Cached PyUnicodeCheckNode checkComplex) {
109+
@Cached PyComplexCheckNode checkComplex) {
104110
Object type = getClassNode.execute(object);
105111
return lookupIndex.execute(type) != PNone.NO_VALUE || lookupInt.execute(type) != PNone.NO_VALUE || lookupFloat.execute(type) != PNone.NO_VALUE || checkComplex.execute(object);
106112
}
107113

108-
@Specialization(replaces = "doPythonObject", guards = {"!isDouble(object)", "!isInteger(object)", "!isBoolean(object)", "!isNone(object)", "!isString(object)"})
109-
static boolean doObject(VirtualFrame frame, Object object,
114+
@Fallback
115+
static boolean doObject(Object object,
110116
@CachedLibrary(limit = "3") InteropLibrary interopLibrary,
111117
@Cached GetClassNode getClassNode,
112118
@Cached(parameters = "Index") LookupCallableSlotInMRONode lookupIndex,
113119
@Cached(parameters = "Float") LookupCallableSlotInMRONode lookupFloat,
114120
@Cached(parameters = "Int") LookupCallableSlotInMRONode lookupInt,
115-
@Cached PyUnicodeCheckNode checkComplex) {
121+
@Cached PyComplexCheckNode checkComplex) {
116122
Object type = getClassNode.execute(object);
117123
if (type == PythonBuiltinClassType.ForeignObject) {
118124
return interopLibrary.isNumber(object);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/lib/PyUnicodeCheckNode.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import com.oracle.graal.python.nodes.classes.IsSubtypeNode;
4646
import com.oracle.graal.python.nodes.object.GetClassNode;
4747
import com.oracle.truffle.api.dsl.Cached;
48+
import com.oracle.truffle.api.dsl.Fallback;
4849
import com.oracle.truffle.api.dsl.GenerateUncached;
4950
import com.oracle.truffle.api.dsl.Specialization;
5051
import com.oracle.truffle.api.nodes.Node;
@@ -67,7 +68,7 @@ static boolean doPString(@SuppressWarnings("unused") PString object) {
6768
return true;
6869
}
6970

70-
@Specialization
71+
@Fallback
7172
static boolean doGeneric(Object object,
7273
@Cached GetClassNode getClass,
7374
@Cached IsSubtypeNode isSubtype) {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/util/PythonUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -586,7 +586,7 @@ public static boolean bufferHasRemaining(ByteBuffer buffer) {
586586
return buffer.hasRemaining();
587587
}
588588

589-
@TruffleBoundary(allowInlining = true)
589+
@TruffleBoundary
590590
public static boolean equals(Object a, Object b) {
591591
return a.equals(b);
592592
}

0 commit comments

Comments
 (0)