|
73 | 73 | public abstract class PyObjectGetItem extends PNodeWithContext {
|
74 | 74 | public abstract Object execute(Frame frame, Object object, Object key);
|
75 | 75 |
|
76 |
| - @Specialization(guards = "cannotBeOverridden(object, getClassNode)", limit = "1") |
| 76 | + @Specialization(guards = "cannotBeOverriddenForImmutableType(object)") |
77 | 77 | Object doList(VirtualFrame frame, PList object, Object key,
|
78 |
| - @SuppressWarnings("unused") @Shared("getClass") @Cached GetClassNode getClassNode, |
79 | 78 | @Cached ListBuiltins.GetItemNode getItemNode) {
|
80 | 79 | return getItemNode.execute(frame, object, key);
|
81 | 80 | }
|
82 | 81 |
|
83 |
| - @Specialization(guards = "cannotBeOverridden(object, getClassNode)", limit = "1") |
| 82 | + @Specialization(guards = "cannotBeOverriddenForImmutableType(object)") |
84 | 83 | Object doTuple(VirtualFrame frame, PTuple object, Object key,
|
85 |
| - @SuppressWarnings("unused") @Shared("getClass") @Cached GetClassNode getClassNode, |
86 | 84 | @Cached TupleBuiltins.GetItemNode getItemNode) {
|
87 | 85 | return getItemNode.execute(frame, object, key);
|
88 | 86 | }
|
89 | 87 |
|
90 | 88 | @InliningCutoff // TODO: inline this probably?
|
91 |
| - @Specialization(guards = "cannotBeOverridden(object, getClassNode)", limit = "1") |
| 89 | + @Specialization(guards = "cannotBeOverriddenForImmutableType(object)") |
92 | 90 | Object doDict(VirtualFrame frame, PDict object, Object key,
|
93 |
| - @SuppressWarnings("unused") @Shared("getClass") @Cached GetClassNode getClassNode, |
94 | 91 | @Cached DictBuiltins.GetItemNode getItemNode) {
|
95 | 92 | return getItemNode.execute(frame, object, key);
|
96 | 93 | }
|
97 | 94 |
|
98 | 95 | @InliningCutoff // no point inlining the complex case
|
99 | 96 | @Specialization(replaces = {"doList", "doTuple", "doDict"})
|
100 | 97 | Object doGeneric(VirtualFrame frame, Object object, Object key,
|
101 |
| - @Shared("getClass") @Cached GetClassNode getClassNode, |
| 98 | + @Cached GetClassNode getClassNode, |
102 | 99 | @Cached(parameters = "GetItem") LookupSpecialMethodSlotNode lookupGetItem,
|
103 | 100 | @Cached CallBinaryMethodNode callGetItem,
|
104 | 101 | @Cached PyObjectGetItemClass getItemClass,
|
|
0 commit comments