Skip to content

Commit 43b4afb

Browse files
committed
[GR-44435] Resolve all but 'truffle-inlining' Truffle DSL warnings in the lib package.
PullRequest: graalpython/2682
2 parents edf3549 + ee436cb commit 43b4afb

40 files changed

+394
-230
lines changed

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

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2021, 2022, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2021, 2023, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -46,14 +46,17 @@
4646
import com.oracle.graal.python.builtins.objects.type.SpecialMethodSlot;
4747
import com.oracle.graal.python.nodes.PNodeWithContext;
4848
import com.oracle.graal.python.nodes.attributes.LookupCallableSlotInMRONode;
49-
import com.oracle.graal.python.nodes.object.GetClassNode;
49+
import com.oracle.graal.python.nodes.object.InlinedGetClassNode;
50+
import com.oracle.graal.python.nodes.util.LazyInteropLibrary;
51+
import com.oracle.truffle.api.dsl.Bind;
5052
import com.oracle.truffle.api.dsl.Cached;
53+
import com.oracle.truffle.api.dsl.Cached.Shared;
5154
import com.oracle.truffle.api.dsl.GenerateUncached;
5255
import com.oracle.truffle.api.dsl.ImportStatic;
5356
import com.oracle.truffle.api.dsl.NeverDefault;
5457
import com.oracle.truffle.api.dsl.Specialization;
5558
import com.oracle.truffle.api.interop.InteropLibrary;
56-
import com.oracle.truffle.api.library.CachedLibrary;
59+
import com.oracle.truffle.api.nodes.Node;
5760
import com.oracle.truffle.api.strings.TruffleString;
5861

5962
/**
@@ -83,10 +86,11 @@ static boolean doLong(@SuppressWarnings("unused") Long object) {
8386

8487
@Specialization
8588
static boolean doPythonObject(PythonAbstractObject object,
86-
@Cached GetClassNode getClassNode,
87-
@Cached(parameters = "Float") LookupCallableSlotInMRONode lookupFloat,
88-
@Cached(parameters = "Index") LookupCallableSlotInMRONode lookupIndex) {
89-
Object type = getClassNode.execute(object);
89+
@Bind("this") Node inliningTarget,
90+
@Shared @Cached InlinedGetClassNode getClassNode,
91+
@Shared @Cached(parameters = "Float") LookupCallableSlotInMRONode lookupFloat,
92+
@Shared @Cached(parameters = "Index") LookupCallableSlotInMRONode lookupIndex) {
93+
Object type = getClassNode.execute(inliningTarget, object);
9094
return lookupFloat.execute(type) != PNone.NO_VALUE || lookupIndex.execute(type) != PNone.NO_VALUE;
9195
}
9296

@@ -107,12 +111,14 @@ static boolean doPBCT(@SuppressWarnings("unused") PythonBuiltinClassType object)
107111

108112
@Specialization(replaces = "doPythonObject")
109113
static boolean doGeneric(Object object,
110-
@CachedLibrary(limit = "3") InteropLibrary interopLibrary,
111-
@Cached(parameters = "Float") LookupCallableSlotInMRONode lookupFloat,
112-
@Cached(parameters = "Index") LookupCallableSlotInMRONode lookupIndex,
113-
@Cached GetClassNode getClassNode) {
114-
Object type = getClassNode.execute(object);
114+
@Bind("this") Node inliningTarget,
115+
@Cached LazyInteropLibrary lazyInteropLibrary,
116+
@Shared @Cached(parameters = "Float") LookupCallableSlotInMRONode lookupFloat,
117+
@Shared @Cached(parameters = "Index") LookupCallableSlotInMRONode lookupIndex,
118+
@Shared @Cached InlinedGetClassNode getClassNode) {
119+
Object type = getClassNode.execute(inliningTarget, object);
115120
if (type == PythonBuiltinClassType.ForeignObject) {
121+
InteropLibrary interopLibrary = lazyInteropLibrary.get(inliningTarget);
116122
return interopLibrary.fitsInDouble(object) || interopLibrary.fitsInLong(object) || interopLibrary.isBoolean(object);
117123
}
118124
return lookupFloat.execute(type) != PNone.NO_VALUE || lookupIndex.execute(type) != PNone.NO_VALUE;

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -53,7 +53,7 @@
5353
import com.oracle.graal.python.nodes.call.special.LookupAndCallUnaryNode;
5454
import com.oracle.graal.python.nodes.call.special.LookupAndCallUnaryNode.NoAttributeHandler;
5555
import com.oracle.graal.python.nodes.call.special.LookupSpecialMethodSlotNode;
56-
import com.oracle.graal.python.nodes.object.GetClassNode;
56+
import com.oracle.graal.python.nodes.object.InlinedGetClassNode;
5757
import com.oracle.graal.python.runtime.exception.PythonErrorType;
5858
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
5959
import com.oracle.truffle.api.dsl.NeverDefault;
@@ -126,7 +126,7 @@ public Object execute(Frame frame, Object iterator) {
126126
@SuppressWarnings("static-method")
127127
@TruffleBoundary
128128
private Object executeImpl(Object iterator) {
129-
Object nextMethod = LookupSpecialMethodSlotNode.getUncached(SpecialMethodSlot.Next).execute(null, GetClassNode.getUncached().execute(iterator), iterator);
129+
Object nextMethod = LookupSpecialMethodSlotNode.getUncached(SpecialMethodSlot.Next).execute(null, InlinedGetClassNode.executeUncached(iterator), iterator);
130130
if (nextMethod == PNone.NO_VALUE) {
131131
throw PRaiseNode.getUncached().raise(PythonErrorType.AttributeError, ErrorMessages.OBJ_P_HAS_NO_ATTR_S, iterator, T___NEXT__);
132132
}

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

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@
5252
import com.oracle.graal.python.builtins.objects.type.SpecialMethodSlot;
5353
import com.oracle.graal.python.nodes.PNodeWithContext;
5454
import com.oracle.graal.python.nodes.attributes.LookupCallableSlotInMRONode;
55-
import com.oracle.graal.python.nodes.object.GetClassNode;
55+
import com.oracle.graal.python.nodes.object.InlinedGetClassNode;
56+
import com.oracle.truffle.api.dsl.Bind;
5657
import com.oracle.truffle.api.dsl.Cached;
5758
import com.oracle.truffle.api.dsl.Cached.Shared;
5859
import com.oracle.truffle.api.dsl.GenerateUncached;
@@ -61,6 +62,7 @@
6162
import com.oracle.truffle.api.dsl.Specialization;
6263
import com.oracle.truffle.api.interop.InteropLibrary;
6364
import com.oracle.truffle.api.library.CachedLibrary;
65+
import com.oracle.truffle.api.nodes.Node;
6466

6567
/**
6668
* Equivalent of CPython's {@code PyCallable_Check} function.
@@ -107,17 +109,19 @@ static boolean doType(@SuppressWarnings("unused") PythonBuiltinClassType o) {
107109

108110
@Specialization(replaces = {"doFunction", "doMethod", "doBuiltinFunction", "doBuiltinMethod", "doClass", "doBuiltinClass"})
109111
static boolean doObject(PythonAbstractObject o,
110-
@Shared("getClass") @Cached GetClassNode getClassNode,
112+
@Bind("this") Node inliningTarget,
113+
@Shared("getClass") @Cached InlinedGetClassNode getClassNode,
111114
@Shared("lookupCall") @Cached(parameters = "Call") LookupCallableSlotInMRONode lookupCall) {
112-
return lookupCall.execute(getClassNode.execute(o)) != PNone.NO_VALUE;
115+
return lookupCall.execute(getClassNode.execute(inliningTarget, o)) != PNone.NO_VALUE;
113116
}
114117

115118
@Specialization(replaces = {"doFunction", "doMethod", "doBuiltinFunction", "doBuiltinMethod", "doClass", "doBuiltinClass", "doType", "doObject"})
116119
static boolean doGeneric(Object o,
117-
@Shared("getClass") @Cached GetClassNode getClassNode,
120+
@Bind("this") Node inliningTarget,
121+
@Shared("getClass") @Cached InlinedGetClassNode getClassNode,
118122
@Shared("lookupCall") @Cached(parameters = "Call") LookupCallableSlotInMRONode lookupCall,
119123
@CachedLibrary(limit = "3") InteropLibrary lib) {
120-
Object type = getClassNode.execute(o);
124+
Object type = getClassNode.execute(inliningTarget, o);
121125
if (type == PythonBuiltinClassType.ForeignObject) {
122126
return lib.isExecutable(o) || lib.isInstantiable(o);
123127
}

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2021, 2022, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2021, 2023, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -43,7 +43,8 @@
4343
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
4444
import com.oracle.graal.python.builtins.objects.complex.PComplex;
4545
import com.oracle.graal.python.nodes.classes.IsSubtypeNode;
46-
import com.oracle.graal.python.nodes.object.GetClassNode;
46+
import com.oracle.graal.python.nodes.object.InlinedGetClassNode;
47+
import com.oracle.truffle.api.dsl.Bind;
4748
import com.oracle.truffle.api.dsl.Cached;
4849
import com.oracle.truffle.api.dsl.GenerateUncached;
4950
import com.oracle.truffle.api.dsl.Specialization;
@@ -63,9 +64,10 @@ static boolean doPComplex(@SuppressWarnings("unused") PComplex pComplex) {
6364

6465
@Specialization
6566
static boolean doGeneric(Object object,
66-
@Cached GetClassNode getClassNode,
67+
@Bind("this") Node inliningTarget,
68+
@Cached InlinedGetClassNode getClassNode,
6769
@Cached IsSubtypeNode isSubtypeNode) {
68-
Object type = getClassNode.execute(object);
70+
Object type = getClassNode.execute(inliningTarget, object);
6971
return isSubtypeNode.execute(type, PythonBuiltinClassType.PComplex);
7072
}
7173
}

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
import com.oracle.graal.python.nodes.util.CastToJavaDoubleNode;
6565
import com.oracle.truffle.api.dsl.Bind;
6666
import com.oracle.truffle.api.dsl.Cached;
67+
import com.oracle.truffle.api.dsl.Cached.Exclusive;
6768
import com.oracle.truffle.api.dsl.Cached.Shared;
6869
import com.oracle.truffle.api.dsl.GenerateUncached;
6970
import com.oracle.truffle.api.dsl.ImportStatic;
@@ -123,16 +124,16 @@ static double doNative(PythonAbstractNativeObject object,
123124
}
124125

125126
@Specialization(guards = {"!isDouble(object)", "!isInteger(object)", "!isBoolean(object)", "!isPFloat(object)",
126-
"!isFloatSubtype(inliningTarget, object, getClassNode, isSubtype)"})
127+
"!isFloatSubtype(inliningTarget, object, getClassNode, isSubtype)"}, limit = "1")
127128
static double doObject(VirtualFrame frame, Object object,
128129
@Bind("this") Node inliningTarget,
129130
@Shared("getClassNode") @Cached InlinedGetClassNode getClassNode,
130131
@SuppressWarnings("unused") @Shared("isSubtype") @Cached IsSubtypeNode isSubtype,
131132
@Cached(parameters = "Float") LookupSpecialMethodSlotNode lookup,
132133
@Cached CallUnaryMethodNode call,
133-
@Cached InlinedGetClassNode resultClassNode,
134-
@Cached InlineIsBuiltinClassProfile resultProfile,
135-
@Cached IsSubtypeNode resultSubtypeNode,
134+
@Exclusive @Cached InlinedGetClassNode resultClassNode,
135+
@Exclusive @Cached InlineIsBuiltinClassProfile resultProfile,
136+
@Exclusive @Cached IsSubtypeNode resultSubtypeNode,
136137
@Cached PyIndexCheckNode indexCheckNode,
137138
@Cached PyNumberIndexNode indexNode,
138139
@Cached CastToJavaDoubleNode cast,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2021, 2023, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0

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

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2021, 2022, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2021, 2023, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -46,15 +46,18 @@
4646
import com.oracle.graal.python.builtins.objects.type.SpecialMethodSlot;
4747
import com.oracle.graal.python.nodes.PNodeWithContext;
4848
import com.oracle.graal.python.nodes.attributes.LookupCallableSlotInMRONode;
49-
import com.oracle.graal.python.nodes.object.GetClassNode;
49+
import com.oracle.graal.python.nodes.object.InlinedGetClassNode;
5050
import com.oracle.truffle.api.HostCompilerDirectives.InliningCutoff;
51+
import com.oracle.truffle.api.dsl.Bind;
5152
import com.oracle.truffle.api.dsl.Cached;
53+
import com.oracle.truffle.api.dsl.Cached.Shared;
5254
import com.oracle.truffle.api.dsl.GenerateUncached;
5355
import com.oracle.truffle.api.dsl.ImportStatic;
5456
import com.oracle.truffle.api.dsl.NeverDefault;
5557
import com.oracle.truffle.api.dsl.Specialization;
5658
import com.oracle.truffle.api.interop.InteropLibrary;
5759
import com.oracle.truffle.api.library.CachedLibrary;
60+
import com.oracle.truffle.api.nodes.Node;
5861
import com.oracle.truffle.api.strings.TruffleString;
5962

6063
/**
@@ -81,9 +84,10 @@ static boolean doString(@SuppressWarnings("unused") TruffleString object) {
8184
@InliningCutoff
8285
@Specialization
8386
static boolean doPythonObject(PythonAbstractObject object,
84-
@Cached GetClassNode getClassNode,
85-
@Cached(parameters = "Index") LookupCallableSlotInMRONode lookupIndex) {
86-
return lookupIndex.execute(getClassNode.execute(object)) != PNone.NO_VALUE;
87+
@Bind("this") Node inliningTarget,
88+
@Shared @Cached InlinedGetClassNode getClassNode,
89+
@Shared @Cached(parameters = "Index") LookupCallableSlotInMRONode lookupIndex) {
90+
return lookupIndex.execute(getClassNode.execute(inliningTarget, object)) != PNone.NO_VALUE;
8791
}
8892

8993
@Specialization
@@ -109,10 +113,11 @@ static boolean doPBCT(@SuppressWarnings("unused") PythonBuiltinClassType object)
109113
@InliningCutoff
110114
@Specialization(replaces = "doPythonObject")
111115
static boolean doGeneric(Object object,
116+
@Bind("this") Node inliningTarget,
112117
@CachedLibrary(limit = "3") InteropLibrary interopLibrary,
113-
@Cached GetClassNode getClassNode,
114-
@Cached(parameters = "Index") LookupCallableSlotInMRONode lookupIndex) {
115-
Object type = getClassNode.execute(object);
118+
@Shared @Cached InlinedGetClassNode getClassNode,
119+
@Shared @Cached(parameters = "Index") LookupCallableSlotInMRONode lookupIndex) {
120+
Object type = getClassNode.execute(inliningTarget, object);
116121
if (type == PythonBuiltinClassType.ForeignObject) {
117122
return interopLibrary.fitsInLong(object) || interopLibrary.isBoolean(object);
118123
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,16 +91,16 @@ Object doBigIntRange(PBigRangeIterator iterator,
9191
// TODO list, tuple, enumerate, dict keys, dict values, dict items, string, bytes
9292

9393
@Specialization
94-
Object doGeneric(VirtualFrame frame, Object iterator,
94+
static Object doGeneric(VirtualFrame frame, Object iterator,
9595
@Bind("this") Node inliningTarget,
9696
@Cached InlinedGetClassNode getClassNode,
9797
@Cached(parameters = "Next") LookupSpecialMethodSlotNode lookupNext,
9898
@Cached CallUnaryMethodNode callNext,
9999
@Cached IsBuiltinObjectProfile stopIterationProfile,
100-
@Cached PRaiseNode raiseNode) {
100+
@Cached PRaiseNode.Lazy raiseNode) {
101101
Object nextMethod = lookupNext.execute(frame, getClassNode.execute(inliningTarget, iterator), iterator);
102102
if (nextMethod == PNone.NO_VALUE) {
103-
throw raiseNode.raise(PythonErrorType.TypeError, ErrorMessages.OBJ_NOT_ITERABLE, iterator);
103+
throw raiseNode.get(inliningTarget).raise(PythonErrorType.TypeError, ErrorMessages.OBJ_NOT_ITERABLE, iterator);
104104
}
105105
try {
106106
return callNext.executeObject(frame, nextMethod, iterator);

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,15 @@
4545
import com.oracle.graal.python.nodes.PNodeWithContext;
4646
import com.oracle.graal.python.nodes.SpecialMethodNames;
4747
import com.oracle.graal.python.nodes.classes.IsSubtypeNode;
48-
import com.oracle.graal.python.nodes.object.GetClassNode;
48+
import com.oracle.graal.python.nodes.object.InlinedGetClassNode;
49+
import com.oracle.truffle.api.dsl.Bind;
4950
import com.oracle.truffle.api.dsl.Cached;
5051
import com.oracle.truffle.api.dsl.GenerateUncached;
5152
import com.oracle.truffle.api.dsl.ImportStatic;
5253
import com.oracle.truffle.api.dsl.Specialization;
5354
import com.oracle.truffle.api.interop.InteropLibrary;
5455
import com.oracle.truffle.api.library.CachedLibrary;
56+
import com.oracle.truffle.api.nodes.Node;
5557

5658
/**
5759
* Check if the object is a long or subclass of. Equivalent of CPython's {@code PyLong_Check}.
@@ -83,10 +85,11 @@ static boolean doPInt(@SuppressWarnings("unused") PInt object) {
8385

8486
@Specialization
8587
static boolean doGeneric(Object object,
86-
@Cached GetClassNode getClassNode,
88+
@Bind("this") Node inliningTarget,
89+
@Cached InlinedGetClassNode getClassNode,
8790
@Cached IsSubtypeNode isSubtypeNode,
8891
@CachedLibrary(limit = "3") InteropLibrary interopLibrary) {
89-
Object type = getClassNode.execute(object);
92+
Object type = getClassNode.execute(inliningTarget, object);
9093
if (isSubtypeNode.execute(type, PythonBuiltinClassType.PInt)) {
9194
return true;
9295
} else if (type == PythonBuiltinClassType.ForeignObject) {

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2021, 2022, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2021, 2023, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -55,8 +55,9 @@
5555
import com.oracle.graal.python.builtins.objects.type.SpecialMethodSlot;
5656
import com.oracle.graal.python.nodes.PNodeWithContext;
5757
import com.oracle.graal.python.nodes.attributes.LookupCallableSlotInMRONode;
58-
import com.oracle.graal.python.nodes.object.GetClassNode;
58+
import com.oracle.graal.python.nodes.object.InlinedGetClassNode;
5959
import com.oracle.graal.python.runtime.sequence.PSequence;
60+
import com.oracle.truffle.api.dsl.Bind;
6061
import com.oracle.truffle.api.dsl.Cached;
6162
import com.oracle.truffle.api.dsl.Cached.Shared;
6263
import com.oracle.truffle.api.dsl.GenerateUncached;
@@ -65,6 +66,7 @@
6566
import com.oracle.truffle.api.dsl.Specialization;
6667
import com.oracle.truffle.api.interop.InteropLibrary;
6768
import com.oracle.truffle.api.library.CachedLibrary;
69+
import com.oracle.truffle.api.nodes.Node;
6870
import com.oracle.truffle.api.strings.TruffleString;
6971

7072
/**
@@ -131,18 +133,20 @@ protected static boolean isKnownMapping(Object object) {
131133

132134
@Specialization(guards = {"!isKnownMapping(object)", "!cannotBeMapping(object)"})
133135
boolean doPythonObject(PythonObject object,
134-
@Shared("getClass") @Cached GetClassNode getClassNode,
136+
@Bind("this") Node inliningTarget,
137+
@Shared("getClass") @Cached InlinedGetClassNode getClassNode,
135138
@Shared("lookupGetItem") @Cached(parameters = "GetItem") LookupCallableSlotInMRONode lookupGetItem) {
136-
Object type = getClassNode.execute(object);
139+
Object type = getClassNode.execute(inliningTarget, object);
137140
return lookupGetItem.execute(type) != PNone.NO_VALUE;
138141
}
139142

140143
@Specialization(guards = {"!isKnownMapping(object)", "!cannotBeMapping(object)"}, replaces = "doPythonObject")
141144
boolean doGeneric(Object object,
142-
@Shared("getClass") @Cached GetClassNode getClassNode,
145+
@Bind("this") Node inliningTarget,
146+
@Shared("getClass") @Cached InlinedGetClassNode getClassNode,
143147
@Shared("lookupGetItem") @Cached(parameters = "GetItem") LookupCallableSlotInMRONode lookupGetItem,
144148
@CachedLibrary(limit = "3") InteropLibrary lib) {
145-
Object type = getClassNode.execute(object);
149+
Object type = getClassNode.execute(inliningTarget, object);
146150
if (type == PythonBuiltinClassType.ForeignObject) {
147151
return lib.hasHashEntries(object);
148152
}

0 commit comments

Comments
 (0)