2626
2727package com .oracle .graal .python .builtins .objects .code ;
2828
29+ import static com .oracle .graal .python .nodes .SpecialMethodNames .__REPR__ ;
30+
2931import java .util .List ;
3032
3133import com .oracle .graal .python .builtins .Builtin ;
3436import com .oracle .graal .python .builtins .PythonBuiltins ;
3537import com .oracle .graal .python .builtins .objects .PNone ;
3638import 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 ;
3840import com .oracle .truffle .api .CompilerDirectives .TruffleBoundary ;
3941import com .oracle .truffle .api .dsl .GenerateNodeFactory ;
4042import com .oracle .truffle .api .dsl .NodeFactory ;
@@ -50,7 +52,7 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
5052
5153 @ Builtin (name = "co_freevars" , minNumOfPositionalArgs = 1 , isGetter = true )
5254 @ GenerateNodeFactory
53- public abstract static class GetFreeVarsNode extends PythonBuiltinNode {
55+ public abstract static class GetFreeVarsNode extends PythonUnaryBuiltinNode {
5456 @ Specialization
5557 protected Object get (PCode self ) {
5658 Object [] freeVars = self .getFreeVars ();
@@ -63,7 +65,7 @@ protected Object get(PCode self) {
6365
6466 @ Builtin (name = "co_cellvars" , minNumOfPositionalArgs = 1 , isGetter = true )
6567 @ GenerateNodeFactory
66- public abstract static class GetCellVarsNode extends PythonBuiltinNode {
68+ public abstract static class GetCellVarsNode extends PythonUnaryBuiltinNode {
6769 @ Specialization
6870 protected Object get (PCode self ) {
6971 Object [] cellVars = self .getCellVars ();
@@ -76,7 +78,7 @@ protected Object get(PCode self) {
7678
7779 @ Builtin (name = "co_filename" , minNumOfPositionalArgs = 1 , isGetter = true )
7880 @ GenerateNodeFactory
79- public abstract static class GetFilenameNode extends PythonBuiltinNode {
81+ public abstract static class GetFilenameNode extends PythonUnaryBuiltinNode {
8082 @ Specialization
8183 protected Object get (PCode self ) {
8284 String filename = self .getFilename ();
@@ -89,7 +91,7 @@ protected Object get(PCode self) {
8991
9092 @ Builtin (name = "co_firstlineno" , minNumOfPositionalArgs = 1 , isGetter = true )
9193 @ GenerateNodeFactory
92- public abstract static class GetLinenoNode extends PythonBuiltinNode {
94+ public abstract static class GetLinenoNode extends PythonUnaryBuiltinNode {
9395 @ Specialization
9496 protected Object get (PCode self ) {
9597 return self .getFirstLineNo ();
@@ -98,7 +100,7 @@ protected Object get(PCode self) {
98100
99101 @ Builtin (name = "co_name" , minNumOfPositionalArgs = 1 , isGetter = true )
100102 @ GenerateNodeFactory
101- public abstract static class GetNameNode extends PythonBuiltinNode {
103+ public abstract static class GetNameNode extends PythonUnaryBuiltinNode {
102104 @ Specialization
103105 @ TruffleBoundary
104106 protected Object get (PCode self ) {
@@ -112,7 +114,7 @@ protected Object get(PCode self) {
112114
113115 @ Builtin (name = "co_argcount" , minNumOfPositionalArgs = 1 , isGetter = true )
114116 @ GenerateNodeFactory
115- public abstract static class GetArgCountNode extends PythonBuiltinNode {
117+ public abstract static class GetArgCountNode extends PythonUnaryBuiltinNode {
116118 @ Specialization
117119 protected Object get (PCode self ) {
118120 return self .getArgcount ();
@@ -121,7 +123,7 @@ protected Object get(PCode self) {
121123
122124 @ Builtin (name = "co_posonlyargcount" , minNumOfPositionalArgs = 1 , isGetter = true )
123125 @ GenerateNodeFactory
124- public abstract static class GetPosOnlyArgCountNode extends PythonBuiltinNode {
126+ public abstract static class GetPosOnlyArgCountNode extends PythonUnaryBuiltinNode {
125127 @ Specialization
126128 protected Object get (PCode self ) {
127129 return self .getPositionalOnlyArgCount ();
@@ -130,7 +132,7 @@ protected Object get(PCode self) {
130132
131133 @ Builtin (name = "co_kwonlyargcount" , minNumOfPositionalArgs = 1 , isGetter = true )
132134 @ GenerateNodeFactory
133- public abstract static class GetKnownlyArgCountNode extends PythonBuiltinNode {
135+ public abstract static class GetKnownlyArgCountNode extends PythonUnaryBuiltinNode {
134136 @ Specialization
135137 protected Object get (PCode self ) {
136138 return self .getKwonlyargcount ();
@@ -139,7 +141,7 @@ protected Object get(PCode self) {
139141
140142 @ Builtin (name = "co_nlocals" , minNumOfPositionalArgs = 1 , isGetter = true )
141143 @ GenerateNodeFactory
142- public abstract static class GetNLocalsNode extends PythonBuiltinNode {
144+ public abstract static class GetNLocalsNode extends PythonUnaryBuiltinNode {
143145 @ Specialization
144146 protected Object get (PCode self ) {
145147 return self .getNlocals ();
@@ -148,7 +150,7 @@ protected Object get(PCode self) {
148150
149151 @ Builtin (name = "co_stacksize" , minNumOfPositionalArgs = 1 , isGetter = true )
150152 @ GenerateNodeFactory
151- public abstract static class GetStackSizeNode extends PythonBuiltinNode {
153+ public abstract static class GetStackSizeNode extends PythonUnaryBuiltinNode {
152154 @ Specialization
153155 protected Object get (PCode self ) {
154156 return self .getStacksize ();
@@ -157,7 +159,7 @@ protected Object get(PCode self) {
157159
158160 @ Builtin (name = "co_flags" , minNumOfPositionalArgs = 1 , isGetter = true )
159161 @ GenerateNodeFactory
160- public abstract static class GetFlagsNode extends PythonBuiltinNode {
162+ public abstract static class GetFlagsNode extends PythonUnaryBuiltinNode {
161163 @ Specialization
162164 protected Object get (PCode self ) {
163165 return self .getFlags ();
@@ -166,7 +168,7 @@ protected Object get(PCode self) {
166168
167169 @ Builtin (name = "co_code" , minNumOfPositionalArgs = 1 , isGetter = true )
168170 @ GenerateNodeFactory
169- public abstract static class GetCodeNode extends PythonBuiltinNode {
171+ public abstract static class GetCodeNode extends PythonUnaryBuiltinNode {
170172 @ Specialization
171173 protected Object get (PCode self ) {
172174 byte [] codestring = self .getCodestring ();
@@ -179,7 +181,7 @@ protected Object get(PCode self) {
179181
180182 @ Builtin (name = "co_consts" , minNumOfPositionalArgs = 1 , isGetter = true )
181183 @ GenerateNodeFactory
182- public abstract static class GetConstsNode extends PythonBuiltinNode {
184+ public abstract static class GetConstsNode extends PythonUnaryBuiltinNode {
183185 @ Specialization
184186 protected Object get (PCode self ) {
185187 Object [] constants = self .getConstants ();
@@ -192,7 +194,7 @@ protected Object get(PCode self) {
192194
193195 @ Builtin (name = "co_names" , minNumOfPositionalArgs = 1 , isGetter = true )
194196 @ GenerateNodeFactory
195- public abstract static class GetNamesNode extends PythonBuiltinNode {
197+ public abstract static class GetNamesNode extends PythonUnaryBuiltinNode {
196198 @ Specialization
197199 protected Object get (PCode self ) {
198200 Object [] names = self .getNames ();
@@ -205,7 +207,7 @@ protected Object get(PCode self) {
205207
206208 @ Builtin (name = "co_varnames" , minNumOfPositionalArgs = 1 , isGetter = true )
207209 @ GenerateNodeFactory
208- public abstract static class GetVarNamesNode extends PythonBuiltinNode {
210+ public abstract static class GetVarNamesNode extends PythonUnaryBuiltinNode {
209211 @ Specialization
210212 protected Object get (PCode self ) {
211213 Object [] varNames = self .getVarnames ();
@@ -218,7 +220,7 @@ protected Object get(PCode self) {
218220
219221 @ Builtin (name = "co_lnotab" , minNumOfPositionalArgs = 1 , isGetter = true )
220222 @ GenerateNodeFactory
221- public abstract static class GetLNoTabNode extends PythonBuiltinNode {
223+ public abstract static class GetLNoTabNode extends PythonUnaryBuiltinNode {
222224 @ Specialization
223225 protected Object get (PCode self ) {
224226 byte [] lnotab = self .getLnotab ();
@@ -229,4 +231,12 @@ protected Object get(PCode self) {
229231 return factory ().createBytes (lnotab );
230232 }
231233 }
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+ }
232242}
0 commit comments