Skip to content

Commit 58bab44

Browse files
committed
add TruffleBoundary in various places
1 parent d785617 commit 58bab44

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/mappingproxy/MappingproxyBuiltins.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import com.oracle.graal.python.builtins.objects.PNone;
4444
import com.oracle.graal.python.builtins.objects.dict.PDict;
4545
import com.oracle.graal.python.builtins.objects.list.PList;
46+
import com.oracle.graal.python.builtins.objects.object.PythonObject;
4647
import com.oracle.graal.python.builtins.objects.tuple.PTuple;
4748
import com.oracle.graal.python.nodes.attributes.DeleteAttributeNode;
4849
import com.oracle.graal.python.nodes.attributes.ReadAttributeFromObjectNode;
@@ -52,6 +53,7 @@
5253
import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode;
5354
import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
5455
import com.oracle.graal.python.runtime.exception.PythonErrorType;
56+
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
5557
import com.oracle.truffle.api.dsl.Cached;
5658
import com.oracle.truffle.api.dsl.Fallback;
5759
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
@@ -103,7 +105,13 @@ Object doGeneric(@SuppressWarnings("unused") Object self, Object o) {
103105
public abstract static class KeysNode extends PythonBuiltinNode {
104106
@Specialization
105107
public Object keys(PMappingproxy self) {
106-
return factory().createList(self.getObject().getAttributeNames().toArray());
108+
PythonObject object = self.getObject();
109+
return factory().createList(createKeys(object));
110+
}
111+
112+
@TruffleBoundary
113+
private static Object[] createKeys(PythonObject object) {
114+
return object.getAttributeNames().toArray();
107115
}
108116
}
109117

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/type/PythonClass.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@ public void setAttribute(Object name, Object value) {
239239
}
240240

241241
@Override
242+
@TruffleBoundary
242243
public Object getAttribute(String name) {
243244
for (PythonClass o : methodResolutionOrder) {
244245
if (o.getStorage().containsKey(name)) {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/JavaTypeConversions.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939

4040
public class JavaTypeConversions {
4141

42-
@TruffleBoundary
42+
@TruffleBoundary(transferToInterpreterOnException = false)
4343
public static Object stringToInt(String num, int base) {
4444
if ((base >= 2 && base <= 32) || base == 0) {
4545
BigInteger bi = asciiToBigInteger(num, 10, false);
@@ -78,7 +78,7 @@ public static boolean toBoolean(Object arg) {
7878
}
7979
}
8080

81-
@TruffleBoundary
81+
@TruffleBoundary(transferToInterpreterOnException = false)
8282
public static Object toInt(Object arg) {
8383
if (arg instanceof Integer || arg instanceof BigInteger) {
8484
return arg;
@@ -125,7 +125,7 @@ public static double toDouble(Object value) {
125125
}
126126

127127
// Copied directly from Jython
128-
@TruffleBoundary
128+
@TruffleBoundary(transferToInterpreterOnException = false)
129129
private static BigInteger asciiToBigInteger(String str, int possibleBase, boolean isLong) {
130130
int base = possibleBase;
131131
int b = 0;
@@ -246,7 +246,7 @@ public static double convertStringToDouble(String str) {
246246
}
247247

248248
// Taken from Jython PyString's __complex__() method
249-
@TruffleBoundary
249+
@TruffleBoundary(transferToInterpreterOnException = false)
250250
public static PComplex convertStringToComplex(String str, PythonClass cls, PythonObjectFactory factory) {
251251
boolean gotRe = false;
252252
boolean gotIm = false;

0 commit comments

Comments
 (0)