Skip to content

Commit c0f779b

Browse files
committed
add support for testing if null-like foreign objects are None
1 parent 2f4f8a9 commit c0f779b

File tree

1 file changed

+13
-0
lines changed
  • graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/expression

1 file changed

+13
-0
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/expression/IsNode.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,21 @@
4040
*/
4141
package com.oracle.graal.python.nodes.expression;
4242

43+
import com.oracle.graal.python.builtins.objects.PNone;
4344
import com.oracle.graal.python.builtins.objects.cext.CExtNodes;
4445
import com.oracle.graal.python.builtins.objects.cext.PythonNativeObject;
4546
import com.oracle.graal.python.builtins.objects.ints.PInt;
4647
import com.oracle.graal.python.nodes.PNode;
4748
import com.oracle.truffle.api.dsl.Cached;
4849
import com.oracle.truffle.api.dsl.Fallback;
50+
import com.oracle.truffle.api.dsl.ImportStatic;
4951
import com.oracle.truffle.api.dsl.Specialization;
52+
import com.oracle.truffle.api.interop.ForeignAccess;
53+
import com.oracle.truffle.api.interop.Message;
54+
import com.oracle.truffle.api.interop.TruffleObject;
55+
import com.oracle.truffle.api.nodes.Node;
5056

57+
@ImportStatic(Message.class)
5158
public abstract class IsNode extends BinaryOpNode {
5259
public static IsNode create(PNode left, PNode right) {
5360
return IsNodeGen.create(left, right);
@@ -171,6 +178,12 @@ boolean doNative(PythonNativeObject left, PythonNativeObject right,
171178
return isNode.execute(left, right);
172179
}
173180

181+
@Specialization(guards = "isForeignObject(left)")
182+
boolean doForeignObject(TruffleObject left, @SuppressWarnings("unused") PNone none,
183+
@Cached("IS_NULL.createNode()") Node isNullNode) {
184+
return ForeignAccess.sendIsNull(isNullNode, left);
185+
}
186+
174187
@Fallback
175188
boolean doGeneric(Object left, Object right) {
176189
return left == right;

0 commit comments

Comments
 (0)