Skip to content

Commit aa5dc8e

Browse files
committed
Fix native type identity comparison
1 parent 3b34efa commit aa5dc8e

File tree

1 file changed

+7
-19
lines changed
  • graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/type

1 file changed

+7
-19
lines changed

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

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,6 @@
223223
import com.oracle.truffle.api.dsl.TypeSystemReference;
224224
import com.oracle.truffle.api.frame.VirtualFrame;
225225
import com.oracle.truffle.api.interop.InteropLibrary;
226-
import com.oracle.truffle.api.interop.UnsupportedMessageException;
227226
import com.oracle.truffle.api.library.CachedLibrary;
228227
import com.oracle.truffle.api.nodes.ControlFlowException;
229228
import com.oracle.truffle.api.nodes.Node;
@@ -1431,25 +1430,14 @@ static boolean doManaged(PythonBuiltinClass left, PythonBuiltinClassType right)
14311430

14321431
@Specialization
14331432
static boolean doNativeSingleContext(PythonAbstractNativeObject left, PythonAbstractNativeObject right,
1434-
@CachedLibrary(limit = "3") InteropLibrary lib1,
1435-
@CachedLibrary(limit = "3") InteropLibrary lib2) {
1436-
if (lib1.isPointer(left.getPtr())) {
1437-
if (lib2.isPointer(right.getPtr())) {
1438-
try {
1439-
return lib1.asPointer(left.getPtr()) == lib2.asPointer(right.getPtr());
1440-
} catch (UnsupportedMessageException e) {
1441-
throw CompilerDirectives.shouldNotReachHere(e);
1442-
}
1443-
} else {
1444-
return false;
1445-
}
1446-
} else {
1447-
if (lib2.isPointer(right.getPtr())) {
1448-
return false;
1449-
} else {
1450-
return lib1.isIdentical(left.getPtr(), right.getPtr(), lib2);
1451-
}
1433+
@CachedLibrary(limit = "1") InteropLibrary lib) {
1434+
if (left == right) {
1435+
return true;
1436+
}
1437+
if (left.getPtr() instanceof Long && right.getPtr() instanceof Long) {
1438+
return (long) left.getPtr() == (long) right.getPtr();
14521439
}
1440+
return lib.isIdentical(left.getPtr(), right.getPtr(), lib);
14531441
}
14541442

14551443
@Fallback

0 commit comments

Comments
 (0)