Skip to content

Commit bd1c810

Browse files
committed
[GR-53574] Allow TruffleString only keys in builtinConstants
PullRequest: graalpython/3338
2 parents bab558e + 61cba53 commit bd1c810

File tree

6 files changed

+15
-40
lines changed

6 files changed

+15
-40
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/PythonBuiltins.java

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@
122122
import com.oracle.graal.python.builtins.objects.module.PythonModule;
123123
import com.oracle.graal.python.builtins.objects.object.PythonObject;
124124
import com.oracle.graal.python.builtins.objects.type.PythonBuiltinClass;
125-
import com.oracle.graal.python.nodes.HiddenAttr;
126125
import com.oracle.graal.python.nodes.PGuards;
127126
import com.oracle.graal.python.nodes.function.BuiltinFunctionRootNode;
128127
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
@@ -133,7 +132,7 @@
133132
import com.oracle.truffle.api.strings.TruffleString;
134133

135134
public abstract class PythonBuiltins {
136-
private final Map<Object, Object> builtinConstants = new HashMap<>();
135+
private final Map<TruffleString, Object> builtinConstants = new HashMap<>();
137136
private final Map<TruffleString, BoundBuiltinCallable<?>> builtinFunctions = new HashMap<>();
138137

139138
protected abstract List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFactories();
@@ -271,37 +270,22 @@ public static int numDefaults(Builtin builtin) {
271270
return maxNumPosArgs - builtin.minNumOfPositionalArgs();
272271
}
273272

274-
private void addBuiltinConstantInternal(Object name, Object value) {
275-
assert name instanceof TruffleString || name instanceof HiddenAttr;
276-
builtinConstants.put(name, ensureNoJavaString(value));
277-
}
278-
279-
protected final void addBuiltinConstant(HiddenAttr name, Object value) {
280-
addBuiltinConstantInternal(name, value);
281-
}
282-
283273
protected final void addBuiltinConstant(String name, Object value) {
284-
addBuiltinConstantInternal(toTruffleStringUncached(name), value);
274+
addBuiltinConstant(toTruffleStringUncached(name), value);
285275
}
286276

287277
protected final void addBuiltinConstant(TruffleString name, Object value) {
288-
addBuiltinConstantInternal(name, value);
278+
builtinConstants.put(name, ensureNoJavaString(value));
289279
}
290280

291281
protected Object getBuiltinConstant(TruffleString name) {
292282
return builtinConstants.get(name);
293283
}
294284

295285
void addConstantsToModuleObject(PythonObject obj) {
296-
for (Map.Entry<Object, Object> entry : builtinConstants.entrySet()) {
297-
Object constant = assertNoJavaString(entry.getKey());
286+
for (Map.Entry<TruffleString, Object> entry : builtinConstants.entrySet()) {
298287
Object value = assertNoJavaString(entry.getValue());
299-
if (constant instanceof HiddenAttr attr) {
300-
HiddenAttr.WriteNode.executeUncached(obj, attr, value);
301-
} else {
302-
assert constant instanceof TruffleString;
303-
obj.setAttribute((TruffleString) constant, value);
304-
}
288+
obj.setAttribute(entry.getKey(), value);
305289
}
306290
}
307291

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/SignalModuleBuiltins.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ static long getOldDelay(ModuleData moduleData) {
518518
}
519519
}
520520

521-
private static class ModuleData {
521+
private static final class ModuleData {
522522
final ConcurrentHashMap<Integer, Object> signalHandlers = new ConcurrentHashMap<>();
523523
final ConcurrentHashMap<Integer, SignalHandler> defaultSignalHandlers = new ConcurrentHashMap<>();
524524
final ConcurrentLinkedDeque<SignalTriggerAction> signalQueue = new ConcurrentLinkedDeque<>();

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/TimeModuleBuiltins.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1153,7 +1153,7 @@ public Object strptime(VirtualFrame frame, TruffleString dataString, TruffleStri
11531153
}
11541154
}
11551155

1156-
private static class ModuleState {
1156+
private static final class ModuleState {
11571157
ZoneId currentZoneId;
11581158
long timeSlept;
11591159
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/WarningsModuleBuiltins.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1187,7 +1187,7 @@ private void executeImpl(Object source, Object category, TruffleString format, i
11871187
}
11881188
}
11891189

1190-
private static class ModuleState {
1190+
private static final class ModuleState {
11911191
long filtersVersion;
11921192
Object filters;
11931193
TruffleString defaultAction;

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

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import static com.oracle.graal.python.nodes.HiddenAttr.DEALLOC;
3737
import static com.oracle.graal.python.nodes.HiddenAttr.DEL;
3838
import static com.oracle.graal.python.nodes.HiddenAttr.DICTOFFSET;
39-
import static com.oracle.graal.python.nodes.HiddenAttr.DOC;
4039
import static com.oracle.graal.python.nodes.HiddenAttr.FLAGS;
4140
import static com.oracle.graal.python.nodes.HiddenAttr.FREE;
4241
import static com.oracle.graal.python.nodes.HiddenAttr.ITEMSIZE;
@@ -85,6 +84,7 @@
8584
import static com.oracle.graal.python.runtime.exception.PythonErrorType.AttributeError;
8685
import static com.oracle.graal.python.runtime.exception.PythonErrorType.TypeError;
8786
import static com.oracle.graal.python.util.PythonUtils.TS_ENCODING;
87+
import static com.oracle.graal.python.util.PythonUtils.tsLiteral;
8888

8989
import java.util.Arrays;
9090
import java.util.HashMap;
@@ -95,7 +95,6 @@
9595
import com.oracle.graal.python.annotations.Slot.SlotKind;
9696
import com.oracle.graal.python.builtins.Builtin;
9797
import com.oracle.graal.python.builtins.CoreFunctions;
98-
import com.oracle.graal.python.builtins.Python3Core;
9998
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
10099
import com.oracle.graal.python.builtins.PythonBuiltins;
101100
import com.oracle.graal.python.builtins.modules.BuiltinConstructorsFactory;
@@ -215,7 +214,7 @@ public final class TypeBuiltins extends PythonBuiltins {
215214
public static final HashMap<String, HiddenAttr> INITIAL_HIDDEN_TYPE_ATTRS = new HashMap<>();
216215

217216
static {
218-
for (HiddenAttr attr : new HiddenAttr[]{DICTOFFSET, ITEMSIZE, BASICSIZE, ALLOC, DEALLOC, DEL, FREE, CLEAR, FLAGS, VECTORCALL_OFFSET, DOC}) {
217+
for (HiddenAttr attr : new HiddenAttr[]{DICTOFFSET, ITEMSIZE, BASICSIZE, ALLOC, DEALLOC, DEL, FREE, CLEAR, FLAGS, VECTORCALL_OFFSET}) {
219218
INITIAL_HIDDEN_TYPE_ATTRS.put(attr.getName(), attr);
220219
}
221220
}
@@ -225,15 +224,6 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
225224
return TypeBuiltinsFactory.getFactories();
226225
}
227226

228-
@Override
229-
public void initialize(Python3Core core) {
230-
super.initialize(core);
231-
addBuiltinConstant(DOC, //
232-
"type(object_or_name, bases, dict)\n" + //
233-
"type(object) -> the object's type\n" + //
234-
"type(name, bases, dict) -> a new type");
235-
}
236-
237227
@Builtin(name = J___REPR__, minNumOfPositionalArgs = 1)
238228
@GenerateNodeFactory
239229
@ImportStatic(SpecialAttributeNames.class)
@@ -268,6 +258,10 @@ static TruffleString repr(VirtualFrame frame, Object self,
268258
@ImportStatic(SpecialAttributeNames.class)
269259
public abstract static class DocNode extends PythonBinaryBuiltinNode {
270260

261+
private static final TruffleString BUILTIN_DOC = tsLiteral("type(object_or_name, bases, dict)\n" + //
262+
"type(object) -> the object's type\n" + //
263+
"type(name, bases, dict) -> a new type");
264+
271265
@Specialization(guards = "isNoValue(value)")
272266
Object getDoc(PythonBuiltinClassType self, @SuppressWarnings("unused") PNone value) {
273267
return getDoc(getContext().lookupType(self), value);
@@ -278,7 +272,7 @@ Object getDoc(PythonBuiltinClassType self, @SuppressWarnings("unused") PNone val
278272
static Object getDoc(PythonBuiltinClass self, @SuppressWarnings("unused") PNone value) {
279273
// see type.c#type_get_doc()
280274
if (IsBuiltinClassExactProfile.profileClassSlowPath(self, PythonBuiltinClassType.PythonClass)) {
281-
return HiddenAttr.ReadNode.executeUncached(self, DOC, NO_VALUE);
275+
return BUILTIN_DOC;
282276
} else {
283277
return self.getAttribute(T___DOC__);
284278
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/HiddenAttr.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
import static com.oracle.graal.python.nodes.BuiltinNames.J___GRAALPYTHON_INTEROP_BEHAVIOR__;
4646
import static com.oracle.graal.python.nodes.SpecialAttributeNames.J___BASICSIZE__;
4747
import static com.oracle.graal.python.nodes.SpecialAttributeNames.J___DICTOFFSET__;
48-
import static com.oracle.graal.python.nodes.SpecialAttributeNames.J___DOC__;
4948
import static com.oracle.graal.python.nodes.SpecialAttributeNames.J___FLAGS__;
5049
import static com.oracle.graal.python.nodes.SpecialAttributeNames.J___ITEMSIZE__;
5150
import static com.oracle.graal.python.nodes.SpecialAttributeNames.J___VECTORCALLOFFSET__;
@@ -89,7 +88,6 @@ public final class HiddenAttr {
8988
public static final HiddenAttr VECTORCALL_OFFSET = new HiddenAttr(J___VECTORCALLOFFSET__);
9089
public static final HiddenAttr GETBUFFER = new HiddenAttr("__getbuffer__");
9190
public static final HiddenAttr RELEASEBUFFER = new HiddenAttr("__releasebuffer__");
92-
public static final HiddenAttr DOC = new HiddenAttr(J___DOC__);
9391
public static final HiddenAttr WEAKLIST = new HiddenAttr("__weaklist__"); // _weakref
9492
public static final HiddenAttr WEAK_REF_QUEUE = new HiddenAttr("weakRefQueue"); // _weakref
9593
public static final HiddenAttr ENCODER_OBJECT = new HiddenAttr("encoder_object"); // cjkcodecs
@@ -107,7 +105,6 @@ public final class HiddenAttr {
107105
public static final HiddenAttr NATIVE_STORAGE = new HiddenAttr("native_storage");
108106
public static final HiddenAttr NATIVE_SLOTS = new HiddenAttr("__native_slots__");
109107
public static final HiddenAttr INSTANCESHAPE = new HiddenAttr("instanceshape");
110-
public static final HiddenAttr STRUCT_CACHE = new HiddenAttr("cache");
111108

112109
private final HiddenKey key;
113110

0 commit comments

Comments
 (0)