Skip to content

Commit 318461b

Browse files
committed
Minor fix and improvements in builtin tp_descrget impls, minor fix in slot_fuzzer.py
1 parent fe31469 commit 318461b

File tree

5 files changed

+16
-8
lines changed

5 files changed

+16
-8
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/ctypes/CFieldBuiltins.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@
113113
import com.oracle.truffle.api.frame.VirtualFrame;
114114
import com.oracle.truffle.api.library.CachedLibrary;
115115
import com.oracle.truffle.api.nodes.Node;
116+
import com.oracle.truffle.api.profiles.InlinedConditionProfile;
116117
import com.oracle.truffle.api.strings.InternalByteArray;
117118
import com.oracle.truffle.api.strings.TruffleString;
118119

@@ -177,10 +178,11 @@ abstract static class GetNode extends DescrGetBuiltinNode {
177178
@Specialization
178179
static Object doit(CFieldObject self, Object inst, @SuppressWarnings("unused") Object type,
179180
@Bind("this") Node inliningTarget,
181+
@Cached InlinedConditionProfile instIsNoValueProfile,
180182
@Cached PyCDataGetNode pyCDataGetNode,
181183
@Cached PyTypeCheck pyTypeCheck,
182184
@Cached PRaiseNode.Lazy raiseNode) {
183-
if (inst == PNone.NO_VALUE) {
185+
if (instIsNoValueProfile.profile(inliningTarget, inst == PNone.NO_VALUE)) {
184186
return self;
185187
}
186188
if (!pyTypeCheck.isCDataObject(inliningTarget, inst)) {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/functools/LruCacheWrapperBuiltins.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -584,8 +584,10 @@ abstract static class GetNode extends DescrGetBuiltinNode {
584584

585585
@Specialization
586586
static Object getmethod(LruCacheObject self, Object obj, @SuppressWarnings("unused") Object type,
587+
@Bind("this") Node inliningTarget,
588+
@Cached InlinedConditionProfile objIsNoneProfile,
587589
@Cached PythonObjectFactory factory) {
588-
if (obj instanceof PNone) {
590+
if (objIsNoneProfile.profile(inliningTarget, obj instanceof PNone)) {
589591
return self;
590592
}
591593
return factory.createMethod(obj, self);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/getsetdescriptor/MemberDescriptorBuiltins.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ static Object doNone(@SuppressWarnings("unused") Object descr, @SuppressWarnings
126126
return descr;
127127
}
128128

129-
@Specialization(guards = "!isNone(obj)")
129+
@Specialization(guards = "!isNoValue(obj)")
130130
static Object doGetSetDescriptor(VirtualFrame frame, GetSetDescriptor descr, Object obj, @SuppressWarnings("unused") Object type,
131131
@Bind("this") Node inliningTarget,
132132
@Cached DescriptorCheckNode descriptorCheckNode,

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/tuple/TupleGetterBuiltins.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,10 @@
6868
import com.oracle.graal.python.nodes.object.GetClassNode;
6969
import com.oracle.graal.python.runtime.object.PythonObjectFactory;
7070
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
71+
import com.oracle.truffle.api.HostCompilerDirectives.InliningCutoff;
7172
import com.oracle.truffle.api.dsl.Bind;
7273
import com.oracle.truffle.api.dsl.Cached;
74+
import com.oracle.truffle.api.dsl.Fallback;
7375
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
7476
import com.oracle.truffle.api.dsl.NodeFactory;
7577
import com.oracle.truffle.api.dsl.Specialization;
@@ -119,10 +121,11 @@ static Object getNone(@SuppressWarnings("unused") VirtualFrame frame, PTupleGett
119121
return self;
120122
}
121123

122-
@Specialization(guards = {"!isPTuple(instance)", "!isNone(instance)"})
123-
static Object getOthers(@SuppressWarnings("unused") VirtualFrame frame, PTupleGetter self, Object instance, @SuppressWarnings("unused") Object owner,
124+
@Fallback
125+
@InliningCutoff
126+
static Object getOthers(@SuppressWarnings("unused") VirtualFrame frame, Object self, Object instance, @SuppressWarnings("unused") Object owner,
124127
@Cached PRaiseNode raiseNode) {
125-
final int index = self.getIndex();
128+
final int index = ((PTupleGetter) self).getIndex();
126129
throw raiseNode.raise(PythonBuiltinClassType.TypeError, DESC_FOR_INDEX_S_FOR_S_DOESNT_APPLY_TO_P,
127130
index, "tuple subclasses", instance);
128131
}

scripts/slot_fuzzer.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,12 @@ def del_descr(self): del self.descr
120120
# language=Python
121121
EXT_COMPILER = '''
122122
import sys
123-
from distutils.core import setup, Extension
124123
from pathlib import Path
125124
import warnings
126125
DIR = Path(__file__).parent.absolute()
127126
127+
with warnings.catch_warnings(action="ignore"):
128+
from distutils.core import setup, Extension
128129
129130
def compile_ext(name):
130131
source_file = name + '.c'
@@ -304,7 +305,7 @@ def native_static_type_impl(name, mod_name, slots):
304305
if (PyType_Ready(&CustomType_{name}) < 0)
305306
return NULL;
306307
Py_INCREF(&CustomType_{name});
307-
return &CustomType_{name};
308+
return (PyObject*) &CustomType_{name};
308309
}}
309310
''')
310311

0 commit comments

Comments
 (0)