26
26
27
27
package com .oracle .graal .python .builtins .objects .code ;
28
28
29
+ import static com .oracle .graal .python .nodes .SpecialMethodNames .__REPR__ ;
30
+
29
31
import java .util .List ;
30
32
31
33
import com .oracle .graal .python .builtins .Builtin ;
34
36
import com .oracle .graal .python .builtins .PythonBuiltins ;
35
37
import com .oracle .graal .python .builtins .objects .PNone ;
36
38
import com .oracle .graal .python .nodes .function .PythonBuiltinBaseNode ;
37
- import com .oracle .graal .python .nodes .function .PythonBuiltinNode ;
39
+ import com .oracle .graal .python .nodes .function .builtins . PythonUnaryBuiltinNode ;
38
40
import com .oracle .truffle .api .CompilerDirectives .TruffleBoundary ;
39
41
import com .oracle .truffle .api .dsl .GenerateNodeFactory ;
40
42
import com .oracle .truffle .api .dsl .NodeFactory ;
@@ -50,7 +52,7 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
50
52
51
53
@ Builtin (name = "co_freevars" , minNumOfPositionalArgs = 1 , isGetter = true )
52
54
@ GenerateNodeFactory
53
- public abstract static class GetFreeVarsNode extends PythonBuiltinNode {
55
+ public abstract static class GetFreeVarsNode extends PythonUnaryBuiltinNode {
54
56
@ Specialization
55
57
protected Object get (PCode self ) {
56
58
Object [] freeVars = self .getFreeVars ();
@@ -63,7 +65,7 @@ protected Object get(PCode self) {
63
65
64
66
@ Builtin (name = "co_cellvars" , minNumOfPositionalArgs = 1 , isGetter = true )
65
67
@ GenerateNodeFactory
66
- public abstract static class GetCellVarsNode extends PythonBuiltinNode {
68
+ public abstract static class GetCellVarsNode extends PythonUnaryBuiltinNode {
67
69
@ Specialization
68
70
protected Object get (PCode self ) {
69
71
Object [] cellVars = self .getCellVars ();
@@ -76,7 +78,7 @@ protected Object get(PCode self) {
76
78
77
79
@ Builtin (name = "co_filename" , minNumOfPositionalArgs = 1 , isGetter = true )
78
80
@ GenerateNodeFactory
79
- public abstract static class GetFilenameNode extends PythonBuiltinNode {
81
+ public abstract static class GetFilenameNode extends PythonUnaryBuiltinNode {
80
82
@ Specialization
81
83
protected Object get (PCode self ) {
82
84
String filename = self .getFilename ();
@@ -89,7 +91,7 @@ protected Object get(PCode self) {
89
91
90
92
@ Builtin (name = "co_firstlineno" , minNumOfPositionalArgs = 1 , isGetter = true )
91
93
@ GenerateNodeFactory
92
- public abstract static class GetLinenoNode extends PythonBuiltinNode {
94
+ public abstract static class GetLinenoNode extends PythonUnaryBuiltinNode {
93
95
@ Specialization
94
96
protected Object get (PCode self ) {
95
97
return self .getFirstLineNo ();
@@ -98,7 +100,7 @@ protected Object get(PCode self) {
98
100
99
101
@ Builtin (name = "co_name" , minNumOfPositionalArgs = 1 , isGetter = true )
100
102
@ GenerateNodeFactory
101
- public abstract static class GetNameNode extends PythonBuiltinNode {
103
+ public abstract static class GetNameNode extends PythonUnaryBuiltinNode {
102
104
@ Specialization
103
105
@ TruffleBoundary
104
106
protected Object get (PCode self ) {
@@ -112,7 +114,7 @@ protected Object get(PCode self) {
112
114
113
115
@ Builtin (name = "co_argcount" , minNumOfPositionalArgs = 1 , isGetter = true )
114
116
@ GenerateNodeFactory
115
- public abstract static class GetArgCountNode extends PythonBuiltinNode {
117
+ public abstract static class GetArgCountNode extends PythonUnaryBuiltinNode {
116
118
@ Specialization
117
119
protected Object get (PCode self ) {
118
120
return self .getArgcount ();
@@ -121,7 +123,7 @@ protected Object get(PCode self) {
121
123
122
124
@ Builtin (name = "co_posonlyargcount" , minNumOfPositionalArgs = 1 , isGetter = true )
123
125
@ GenerateNodeFactory
124
- public abstract static class GetPosOnlyArgCountNode extends PythonBuiltinNode {
126
+ public abstract static class GetPosOnlyArgCountNode extends PythonUnaryBuiltinNode {
125
127
@ Specialization
126
128
protected Object get (PCode self ) {
127
129
return self .getPositionalOnlyArgCount ();
@@ -130,7 +132,7 @@ protected Object get(PCode self) {
130
132
131
133
@ Builtin (name = "co_kwonlyargcount" , minNumOfPositionalArgs = 1 , isGetter = true )
132
134
@ GenerateNodeFactory
133
- public abstract static class GetKnownlyArgCountNode extends PythonBuiltinNode {
135
+ public abstract static class GetKnownlyArgCountNode extends PythonUnaryBuiltinNode {
134
136
@ Specialization
135
137
protected Object get (PCode self ) {
136
138
return self .getKwonlyargcount ();
@@ -139,7 +141,7 @@ protected Object get(PCode self) {
139
141
140
142
@ Builtin (name = "co_nlocals" , minNumOfPositionalArgs = 1 , isGetter = true )
141
143
@ GenerateNodeFactory
142
- public abstract static class GetNLocalsNode extends PythonBuiltinNode {
144
+ public abstract static class GetNLocalsNode extends PythonUnaryBuiltinNode {
143
145
@ Specialization
144
146
protected Object get (PCode self ) {
145
147
return self .getNlocals ();
@@ -148,7 +150,7 @@ protected Object get(PCode self) {
148
150
149
151
@ Builtin (name = "co_stacksize" , minNumOfPositionalArgs = 1 , isGetter = true )
150
152
@ GenerateNodeFactory
151
- public abstract static class GetStackSizeNode extends PythonBuiltinNode {
153
+ public abstract static class GetStackSizeNode extends PythonUnaryBuiltinNode {
152
154
@ Specialization
153
155
protected Object get (PCode self ) {
154
156
return self .getStacksize ();
@@ -157,7 +159,7 @@ protected Object get(PCode self) {
157
159
158
160
@ Builtin (name = "co_flags" , minNumOfPositionalArgs = 1 , isGetter = true )
159
161
@ GenerateNodeFactory
160
- public abstract static class GetFlagsNode extends PythonBuiltinNode {
162
+ public abstract static class GetFlagsNode extends PythonUnaryBuiltinNode {
161
163
@ Specialization
162
164
protected Object get (PCode self ) {
163
165
return self .getFlags ();
@@ -166,7 +168,7 @@ protected Object get(PCode self) {
166
168
167
169
@ Builtin (name = "co_code" , minNumOfPositionalArgs = 1 , isGetter = true )
168
170
@ GenerateNodeFactory
169
- public abstract static class GetCodeNode extends PythonBuiltinNode {
171
+ public abstract static class GetCodeNode extends PythonUnaryBuiltinNode {
170
172
@ Specialization
171
173
protected Object get (PCode self ) {
172
174
byte [] codestring = self .getCodestring ();
@@ -179,7 +181,7 @@ protected Object get(PCode self) {
179
181
180
182
@ Builtin (name = "co_consts" , minNumOfPositionalArgs = 1 , isGetter = true )
181
183
@ GenerateNodeFactory
182
- public abstract static class GetConstsNode extends PythonBuiltinNode {
184
+ public abstract static class GetConstsNode extends PythonUnaryBuiltinNode {
183
185
@ Specialization
184
186
protected Object get (PCode self ) {
185
187
Object [] constants = self .getConstants ();
@@ -192,7 +194,7 @@ protected Object get(PCode self) {
192
194
193
195
@ Builtin (name = "co_names" , minNumOfPositionalArgs = 1 , isGetter = true )
194
196
@ GenerateNodeFactory
195
- public abstract static class GetNamesNode extends PythonBuiltinNode {
197
+ public abstract static class GetNamesNode extends PythonUnaryBuiltinNode {
196
198
@ Specialization
197
199
protected Object get (PCode self ) {
198
200
Object [] names = self .getNames ();
@@ -205,7 +207,7 @@ protected Object get(PCode self) {
205
207
206
208
@ Builtin (name = "co_varnames" , minNumOfPositionalArgs = 1 , isGetter = true )
207
209
@ GenerateNodeFactory
208
- public abstract static class GetVarNamesNode extends PythonBuiltinNode {
210
+ public abstract static class GetVarNamesNode extends PythonUnaryBuiltinNode {
209
211
@ Specialization
210
212
protected Object get (PCode self ) {
211
213
Object [] varNames = self .getVarnames ();
@@ -218,7 +220,7 @@ protected Object get(PCode self) {
218
220
219
221
@ Builtin (name = "co_lnotab" , minNumOfPositionalArgs = 1 , isGetter = true )
220
222
@ GenerateNodeFactory
221
- public abstract static class GetLNoTabNode extends PythonBuiltinNode {
223
+ public abstract static class GetLNoTabNode extends PythonUnaryBuiltinNode {
222
224
@ Specialization
223
225
protected Object get (PCode self ) {
224
226
byte [] lnotab = self .getLnotab ();
@@ -229,4 +231,12 @@ protected Object get(PCode self) {
229
231
return factory ().createBytes (lnotab );
230
232
}
231
233
}
234
+
235
+ @ Builtin (name = __REPR__ , minNumOfPositionalArgs = 1 )
236
+ @ GenerateNodeFactory
237
+ public abstract static class CodeReprNode extends PythonUnaryBuiltinNode {
238
+ Object repr (PCode self ) {
239
+ return self .toString ();
240
+ }
241
+ }
232
242
}
0 commit comments