Fix: proxy.__bool__ should use BoundaryCallContext.enter/exit · steve-s/graalpython@d2aff38 · GitHub
Skip to content

Commit d2aff38

Browse files
committed
Fix: proxy.__bool__ should use BoundaryCallContext.enter/exit
1 parent adde3b7 commit d2aff38

4 files changed

Lines changed: 76 additions & 37 deletions

File tree

‎graalpython/com.oracle.graal.python.pegparser/src/com/oracle/graal/python/pegparser/Parser.java‎

Lines changed: 1 addition & 1 deletion

‎graalpython/com.oracle.graal.python.processor/src/com/oracle/graal/python/processor/SlotsMapping.java‎

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2024, 2025, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2024, 2026, 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
@@ -51,7 +51,7 @@ private static String getSuffix(boolean isComplex) {
5151

5252
static String getSlotBaseClass(Slot s) {
5353
return switch (s.value()) {
54-
case nb_bool -> "TpSlotInquiry.TpSlotInquiryBuiltin";
54+
case nb_bool -> "TpSlotInquiry.TpSlotInquiryBuiltin" + getSuffix(s.isComplex());
5555
case nb_index, nb_int, nb_float, nb_absolute, nb_positive, nb_negative, nb_invert,
5656
tp_iter, tp_str, tp_repr, am_aiter, am_anext, am_await ->
5757
"TpSlotUnaryFunc.TpSlotUnaryFuncBuiltin";
@@ -128,10 +128,7 @@ static String getUncachedExecuteSignature(SlotKind s) {
128128
}
129129

130130
static boolean supportsComplex(SlotKind s) {
131-
return switch (s) {
132-
case nb_bool -> false;
133-
default -> true;
134-
};
131+
return true;
135132
}
136133

137134
static boolean supportsSimple(SlotKind s) {

‎graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/weakref/ProxyTypeBuiltins.java‎

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,18 @@
4040
*/
4141
package com.oracle.graal.python.builtins.modules.weakref;
4242

43+
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.ReferenceError;
44+
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.TypeError;
45+
import static com.oracle.graal.python.nodes.SpecialMethodNames.J___BYTES__;
46+
import static com.oracle.graal.python.nodes.SpecialMethodNames.J___REVERSED__;
47+
import static com.oracle.graal.python.nodes.SpecialMethodNames.T___BYTES__;
48+
import static com.oracle.graal.python.nodes.SpecialMethodNames.T___DELITEM__;
49+
import static com.oracle.graal.python.nodes.SpecialMethodNames.T___REVERSED__;
50+
import static com.oracle.graal.python.nodes.SpecialMethodNames.T___SETITEM__;
51+
import static com.oracle.graal.python.util.PythonUtils.TS_ENCODING;
52+
53+
import java.util.List;
54+
4355
import com.oracle.graal.python.PythonLanguage;
4456
import com.oracle.graal.python.annotations.Builtin;
4557
import com.oracle.graal.python.annotations.Slot;
@@ -133,18 +145,6 @@
133145
import com.oracle.truffle.api.object.Shape;
134146
import com.oracle.truffle.api.strings.TruffleString;
135147

136-
import java.util.List;
137-
138-
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.ReferenceError;
139-
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.TypeError;
140-
import static com.oracle.graal.python.nodes.SpecialMethodNames.J___BYTES__;
141-
import static com.oracle.graal.python.nodes.SpecialMethodNames.J___REVERSED__;
142-
import static com.oracle.graal.python.nodes.SpecialMethodNames.T___BYTES__;
143-
import static com.oracle.graal.python.nodes.SpecialMethodNames.T___DELITEM__;
144-
import static com.oracle.graal.python.nodes.SpecialMethodNames.T___REVERSED__;
145-
import static com.oracle.graal.python.nodes.SpecialMethodNames.T___SETITEM__;
146-
import static com.oracle.graal.python.util.PythonUtils.TS_ENCODING;
147-
148148
@CoreFunctions(extendClasses = PythonBuiltinClassType.PProxyType)
149149
public final class ProxyTypeBuiltins extends PythonBuiltins {
150150

@@ -311,17 +311,15 @@ static Object richCmp(VirtualFrame frame, PProxyType self, Object other, RichCmp
311311
}
312312
}
313313

314-
@Slot(value = Slot.SlotKind.nb_bool)
314+
@Slot(value = Slot.SlotKind.nb_bool, isComplex = true)
315315
@GenerateUncached
316316
@GenerateNodeFactory
317317
public abstract static class BoolNode extends TpSlotInquiry.NbBoolBuiltinNode {
318-
319318
@Specialization
320-
@TruffleBoundary
321-
static boolean bool(PProxyType self,
322-
@Bind Node inliningTarget) {
323-
Object object = unwrap(self, inliningTarget);
324-
return PyObjectIsTrueNode.executeUncached(object);
319+
static boolean bool(VirtualFrame frame, PProxyType self,
320+
@Bind Node inliningTarget,
321+
@Cached PyObjectIsTrueNode isTrueNode) {
322+
return isTrueNode.execute(frame, unwrap(self, inliningTarget));
325323
}
326324
}
327325

‎graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/type/slots/TpSlotInquiry.java‎

Lines changed: 55 additions & 11 deletions

0 commit comments

Comments
 (0)