Skip to content

Commit 3c35312

Browse files
committed
[GR-52606] Replace DynamicObjectLibrary usages with attr Read/Write nodes
PullRequest: graalpython/3235
2 parents 47a7926 + a604285 commit 3c35312

38 files changed

+172
-292
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@
5656
import java.util.ServiceLoader;
5757
import java.util.logging.Level;
5858

59+
import com.oracle.graal.python.nodes.attributes.ReadAttributeFromPythonObjectNode;
60+
import com.oracle.graal.python.nodes.attributes.WriteAttributeToPythonObjectNode;
5961
import org.graalvm.nativeimage.ImageInfo;
6062

6163
import com.oracle.graal.python.PythonLanguage;
@@ -356,8 +358,6 @@
356358
import com.oracle.graal.python.lib.PyObjectCallMethodObjArgs;
357359
import com.oracle.graal.python.lib.PyObjectLookupAttr;
358360
import com.oracle.graal.python.nodes.BuiltinNames;
359-
import com.oracle.graal.python.nodes.attributes.ReadAttributeFromDynamicObjectNode;
360-
import com.oracle.graal.python.nodes.attributes.WriteAttributeToDynamicObjectNode;
361361
import com.oracle.graal.python.nodes.call.GenericInvokeNode;
362362
import com.oracle.graal.python.nodes.statement.AbstractImportNode;
363363
import com.oracle.graal.python.pegparser.FutureFeature;
@@ -899,8 +899,8 @@ private void initializeImportlib() {
899899
PythonModule bootstrapExternal;
900900

901901
PyObjectCallMethodObjArgs callNode = PyObjectCallMethodObjArgs.getUncached();
902-
WriteAttributeToDynamicObjectNode writeNode = WriteAttributeToDynamicObjectNode.getUncached();
903-
ReadAttributeFromDynamicObjectNode readNode = ReadAttributeFromDynamicObjectNode.getUncached();
902+
WriteAttributeToPythonObjectNode writeNode = WriteAttributeToPythonObjectNode.getUncached();
903+
ReadAttributeFromPythonObjectNode readNode = ReadAttributeFromPythonObjectNode.getUncached();
904904
PyDictSetItem setItem = PyDictSetItem.getUncached();
905905

906906
// first, a workaround since postInitialize hasn't run yet for the _weakref module aliases

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ void addConstantsToModuleObject(PythonObject obj) {
297297
HiddenAttr.WriteNode.executeUncached(obj, attr, value);
298298
} else {
299299
assert constant instanceof TruffleString;
300-
obj.setAttribute(constant, value);
300+
obj.setAttribute((TruffleString) constant, value);
301301
}
302302
}
303303
}

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@
100100
import com.oracle.graal.python.nodes.PConstructAndRaiseNode;
101101
import com.oracle.graal.python.nodes.PGuards;
102102
import com.oracle.graal.python.nodes.PRaiseNode;
103-
import com.oracle.graal.python.nodes.attributes.ReadAttributeFromDynamicObjectNode;
103+
import com.oracle.graal.python.nodes.attributes.ReadAttributeFromPythonObjectNode;
104104
import com.oracle.graal.python.nodes.attributes.SetAttributeNode;
105-
import com.oracle.graal.python.nodes.attributes.WriteAttributeToDynamicObjectNode;
105+
import com.oracle.graal.python.nodes.attributes.WriteAttributeToPythonObjectNode;
106106
import com.oracle.graal.python.nodes.call.GenericInvokeNode;
107107
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
108108
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
@@ -289,8 +289,8 @@ public abstract static class CreateDynamic extends PythonBinaryBuiltinNode {
289289
Object run(VirtualFrame frame, PythonObject moduleSpec, @SuppressWarnings("unused") Object filename,
290290
@Bind("this") Node inliningTarget,
291291
@Cached("createFor(this)") IndirectCallData indirectCallData,
292-
@Cached ReadAttributeFromDynamicObjectNode readNameNode,
293-
@Cached ReadAttributeFromDynamicObjectNode readOriginNode,
292+
@Cached ReadAttributeFromPythonObjectNode readNameNode,
293+
@Cached ReadAttributeFromPythonObjectNode readOriginNode,
294294
@Cached CastToTruffleStringNode castToTruffleStringNode,
295295
@Cached TruffleString.EqualNode eqNode,
296296
@Cached PConstructAndRaiseNode.Lazy constructAndRaiseNode) {
@@ -694,14 +694,14 @@ public static PythonModule importFrozenModuleObject(Python3Core core, TruffleStr
694694

695695
if (info.isPackage) {
696696
/* Set __path__ to the empty list */
697-
WriteAttributeToDynamicObjectNode.getUncached().execute(module, T___PATH__, core.factory().createList());
697+
WriteAttributeToPythonObjectNode.getUncached().execute(module, T___PATH__, core.factory().createList());
698698
}
699699

700700
RootCallTarget callTarget = CodeNodes.GetCodeCallTargetNode.executeUncached(code);
701701
GenericInvokeNode.getUncached().execute(callTarget, PArguments.withGlobals(module));
702702

703703
Object origName = info.origName == null ? PNone.NONE : info.origName;
704-
WriteAttributeToDynamicObjectNode.getUncached().execute(module, T___ORIGNAME__, origName);
704+
WriteAttributeToPythonObjectNode.getUncached().execute(module, T___ORIGNAME__, origName);
705705

706706
return module;
707707
}

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

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
import com.oracle.graal.python.nodes.HiddenAttr;
8080
import com.oracle.graal.python.nodes.PNodeWithContext;
8181
import com.oracle.graal.python.nodes.PRaiseNode;
82+
import com.oracle.graal.python.nodes.attributes.WriteAttributeToPythonObjectNode;
8283
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
8384
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
8485
import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode;
@@ -110,10 +111,8 @@
110111
import com.oracle.truffle.api.dsl.Specialization;
111112
import com.oracle.truffle.api.dsl.TypeSystemReference;
112113
import com.oracle.truffle.api.frame.VirtualFrame;
113-
import com.oracle.truffle.api.library.CachedLibrary;
114114
import com.oracle.truffle.api.nodes.ExplodeLoop;
115115
import com.oracle.truffle.api.nodes.Node;
116-
import com.oracle.truffle.api.object.DynamicObjectLibrary;
117116
import com.oracle.truffle.api.strings.TruffleString;
118117

119118
@CoreFunctions(defineModule = "time")
@@ -1107,7 +1106,7 @@ protected ArgumentClinicProvider getArgumentClinic() {
11071106
@Specialization
11081107
static Object getClockInfo(TruffleString name,
11091108
@Bind("this") Node inliningTarget,
1110-
@CachedLibrary(limit = "1") DynamicObjectLibrary dyLib,
1109+
@Cached WriteAttributeToPythonObjectNode writeAttrNode,
11111110
@Cached TruffleString.EqualNode equalNode,
11121111
@Cached PythonObjectFactory factory,
11131112
@Cached PRaiseNode.Lazy raiseNode) {
@@ -1126,10 +1125,10 @@ static Object getClockInfo(TruffleString name,
11261125
}
11271126

11281127
final PSimpleNamespace ns = factory.createSimpleNamespace();
1129-
dyLib.put(ns, T_ADJUSTABLE, adjustable);
1130-
dyLib.put(ns, T_IMPLEMENTATION, name);
1131-
dyLib.put(ns, T_MONOTONIC, monotonic);
1132-
dyLib.put(ns, T_RESOLUTION, TIME_RESOLUTION);
1128+
writeAttrNode.execute(ns, T_ADJUSTABLE, adjustable);
1129+
writeAttrNode.execute(ns, T_IMPLEMENTATION, name);
1130+
writeAttrNode.execute(ns, T_MONOTONIC, monotonic);
1131+
writeAttrNode.execute(ns, T_RESOLUTION, TIME_RESOLUTION);
11331132
return ns;
11341133
}
11351134
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@
107107
import com.oracle.graal.python.nodes.HiddenAttr;
108108
import com.oracle.graal.python.nodes.PRaiseNode;
109109
import com.oracle.graal.python.nodes.SpecialAttributeNames;
110+
import com.oracle.graal.python.nodes.attributes.ReadAttributeFromPythonObjectNode;
110111
import com.oracle.graal.python.nodes.call.CallNode;
111112
import com.oracle.graal.python.nodes.frame.ReadCallerFrameNode;
112113
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
@@ -144,7 +145,6 @@
144145
import com.oracle.truffle.api.frame.VirtualFrame;
145146
import com.oracle.truffle.api.nodes.Node;
146147
import com.oracle.truffle.api.nodes.NodeInfo;
147-
import com.oracle.truffle.api.object.DynamicObjectLibrary;
148148
import com.oracle.truffle.api.profiles.BranchProfile;
149149
import com.oracle.truffle.api.strings.TruffleString;
150150

@@ -1200,7 +1200,7 @@ protected void execute(Frame frame, Object source, Object category, TruffleStrin
12001200
@TruffleBoundary
12011201
private void executeImpl(Object source, Object category, TruffleString format, int stackLevel, Object... formatArgs) {
12021202
PythonModule _warnings = PythonContext.get(this).lookupBuiltinModule(T__WARNINGS);
1203-
Object warn = DynamicObjectLibrary.getUncached().getOrDefault(_warnings, T_WARN, PNone.NONE);
1203+
Object warn = ReadAttributeFromPythonObjectNode.executeUncached(_warnings, T_WARN, PNone.NONE);
12041204
TruffleString message;
12051205
try {
12061206
message = TruffleString.fromJavaStringUncached(ErrorMessageFormatter.format(format, formatArgs), TS_ENCODING);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextAbstractBuiltins.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@
118118
import com.oracle.graal.python.lib.PySliceNew;
119119
import com.oracle.graal.python.nodes.ErrorMessages;
120120
import com.oracle.graal.python.nodes.PRaiseNode;
121-
import com.oracle.graal.python.nodes.attributes.WriteAttributeToDynamicObjectNode;
121+
import com.oracle.graal.python.nodes.attributes.WriteAttributeToPythonObjectNode;
122122
import com.oracle.graal.python.nodes.builtins.ListNodes.ConstructListNode;
123123
import com.oracle.graal.python.nodes.call.CallNode;
124124
import com.oracle.graal.python.nodes.call.special.LookupAndCallBinaryNode;
@@ -963,21 +963,21 @@ Object get(Object obj,
963963
abstract static class PyObject_SetDoc extends CApiBinaryBuiltinNode {
964964
@Specialization
965965
static int set(PBuiltinFunction obj, TruffleString value,
966-
@Shared("write") @Cached WriteAttributeToDynamicObjectNode write) {
966+
@Shared("write") @Cached WriteAttributeToPythonObjectNode write) {
967967
write.execute(obj, T___DOC__, value);
968968
return 1;
969969
}
970970

971971
@Specialization
972972
static int set(PBuiltinMethod obj, TruffleString value,
973-
@Shared("write") @Cached WriteAttributeToDynamicObjectNode write) {
973+
@Shared("write") @Cached WriteAttributeToPythonObjectNode write) {
974974
set(obj.getBuiltinFunction(), value, write);
975975
return 1;
976976
}
977977

978978
@Specialization
979979
static int set(GetSetDescriptor obj, TruffleString value,
980-
@Shared("write") @Cached WriteAttributeToDynamicObjectNode write) {
980+
@Shared("write") @Cached WriteAttributeToPythonObjectNode write) {
981981
write.execute(obj, T___DOC__, value);
982982
return 1;
983983
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextBuiltins.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,8 @@
167167
import com.oracle.graal.python.nodes.PRaiseNode;
168168
import com.oracle.graal.python.nodes.argument.keywords.ExpandKeywordStarargsNode;
169169
import com.oracle.graal.python.nodes.argument.positional.ExecutePositionalStarargsNode;
170-
import com.oracle.graal.python.nodes.attributes.WriteAttributeToDynamicObjectNode;
171170
import com.oracle.graal.python.nodes.attributes.WriteAttributeToObjectNode;
171+
import com.oracle.graal.python.nodes.attributes.WriteAttributeToPythonObjectNode;
172172
import com.oracle.graal.python.nodes.classes.IsSubtypeNode;
173173
import com.oracle.graal.python.nodes.frame.GetCurrentFrameRef;
174174
import com.oracle.graal.python.nodes.object.GetClassNode;
@@ -1008,8 +1008,8 @@ static void doNativeClass(PythonNativeClass object, TruffleString key, Object va
10081008

10091009
@Specialization(guards = {"!isPythonBuiltinClass(object)"})
10101010
static void doObject(PythonObject object, TruffleString key, Object value,
1011-
@Exclusive @Cached(inline = false) WriteAttributeToDynamicObjectNode writeAttrToDynamicObjectNode) {
1012-
writeAttrToDynamicObjectNode.execute(object, key, value);
1011+
@Exclusive @Cached(inline = false) WriteAttributeToPythonObjectNode writeAttrToPythonObjectNode) {
1012+
writeAttrToPythonObjectNode.execute(object, key, value);
10131013
}
10141014
}
10151015

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextMethodBuiltins.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,14 @@
5959
import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
6060
import com.oracle.graal.python.builtins.objects.method.PBuiltinMethod;
6161
import com.oracle.graal.python.nodes.HiddenAttr;
62+
import com.oracle.graal.python.nodes.attributes.WriteAttributeToPythonObjectNode;
6263
import com.oracle.graal.python.runtime.object.PythonObjectFactory;
6364
import com.oracle.truffle.api.dsl.Bind;
6465
import com.oracle.truffle.api.dsl.Cached;
6566
import com.oracle.truffle.api.dsl.GenerateCached;
6667
import com.oracle.truffle.api.dsl.GenerateInline;
6768
import com.oracle.truffle.api.dsl.Specialization;
68-
import com.oracle.truffle.api.library.CachedLibrary;
6969
import com.oracle.truffle.api.nodes.Node;
70-
import com.oracle.truffle.api.object.DynamicObjectLibrary;
7170
import com.oracle.truffle.api.strings.TruffleString;
7271

7372
public final class PythonCextMethodBuiltins {
@@ -94,20 +93,20 @@ static Object doNativeCallable(Node inliningTarget, Object methodDefPtr, Truffle
9493
@Cached(inline = false) PythonObjectFactory factory,
9594
@Cached CreateFunctionNode createFunctionNode,
9695
@Cached HiddenAttr.WriteNode writeHiddenAttrNode,
97-
@CachedLibrary(limit = "1") DynamicObjectLibrary dylib) {
96+
@Cached(inline = false) WriteAttributeToPythonObjectNode writeAttrNode) {
9897
Object f = createFunctionNode.execute(inliningTarget, name, methObj, wrapper, PNone.NO_VALUE, flags);
9998
assert f instanceof PBuiltinFunction;
10099
PBuiltinFunction func = (PBuiltinFunction) f;
101100
writeHiddenAttrNode.execute(inliningTarget, func, METHOD_DEF_PTR, methodDefPtr);
102-
dylib.put(func, T___NAME__, name);
103-
dylib.put(func, T___DOC__, doc);
101+
writeAttrNode.execute(func, T___NAME__, name);
102+
writeAttrNode.execute(func, T___DOC__, doc);
104103
PBuiltinMethod method;
105104
if (cls != PNone.NO_VALUE) {
106105
method = factory.createBuiltinMethod(self, func, cls);
107106
} else {
108107
method = factory.createBuiltinMethod(self, func);
109108
}
110-
dylib.put(method, T___MODULE__, module);
109+
writeAttrNode.execute(method, T___MODULE__, module);
111110
return method;
112111
}
113112
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextModuleBuiltins.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
import com.oracle.graal.python.lib.PyUnicodeCheckNode;
7272
import com.oracle.graal.python.nodes.ErrorMessages;
7373
import com.oracle.graal.python.nodes.PRaiseNode;
74+
import com.oracle.graal.python.nodes.attributes.ReadAttributeFromPythonObjectNode;
7475
import com.oracle.graal.python.nodes.attributes.ReadAttributeFromObjectNode;
7576
import com.oracle.graal.python.nodes.attributes.WriteAttributeToObjectNode;
7677
import com.oracle.graal.python.nodes.call.CallNode;
@@ -83,9 +84,7 @@
8384
import com.oracle.truffle.api.dsl.Cached.Shared;
8485
import com.oracle.truffle.api.dsl.ImportStatic;
8586
import com.oracle.truffle.api.dsl.Specialization;
86-
import com.oracle.truffle.api.library.CachedLibrary;
8787
import com.oracle.truffle.api.nodes.Node;
88-
import com.oracle.truffle.api.object.DynamicObjectLibrary;
8988
import com.oracle.truffle.api.strings.TruffleString;
9089

9190
public final class PythonCextModuleBuiltins {
@@ -234,9 +233,9 @@ abstract static class PyTruffleModule_AddFunctionToModule extends CApi7BuiltinNo
234233
static Object moduleFunction(Object methodDefPtr, PythonModule mod, TruffleString name, Object cfunc, int flags, int wrapper, Object doc,
235234
@Bind("this") Node inliningTarget,
236235
@Cached ObjectBuiltins.SetattrNode setattrNode,
237-
@CachedLibrary(limit = "1") DynamicObjectLibrary dylib,
236+
@Cached ReadAttributeFromPythonObjectNode readAttrNode,
238237
@Cached CFunctionNewExMethodNode cFunctionNewExMethodNode) {
239-
Object modName = dylib.getOrDefault(mod.getStorage(), T___NAME__, null);
238+
Object modName = readAttrNode.execute(mod, T___NAME__, null);
240239
assert modName != null : "module name is missing!";
241240
Object func = cFunctionNewExMethodNode.execute(inliningTarget, methodDefPtr, name, cfunc, flags, wrapper, mod, modName, doc);
242241
setattrNode.execute(null, mod, name, func);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextSlotBuiltins.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -853,7 +853,7 @@ static Object doTpDict(PythonManagedClass object, Object value,
853853
if (existing != null) {
854854
dict.setDictStorage(existing.getDictStorage());
855855
} else {
856-
dict.setDictStorage(new DynamicObjectStorage(object.getStorage()));
856+
dict.setDictStorage(new DynamicObjectStorage(object));
857857
}
858858
setDict.execute(inliningTarget, object, dict);
859859
} else {

0 commit comments

Comments
 (0)