69
69
import org .truffleruby .language .CallStackManager ;
70
70
import org .truffleruby .language .ImmutableRubyObject ;
71
71
import org .truffleruby .core .string .ImmutableRubyString ;
72
- import org .truffleruby .language .Nil ;
73
72
import org .truffleruby .language .RubyDynamicObject ;
74
73
import org .truffleruby .language .RubyGuards ;
75
74
import org .truffleruby .language .RubyRootNode ;
76
- import org .truffleruby .language .arguments .NoKeywordArgumentsDescriptor ;
77
75
import org .truffleruby .language .arguments .RubyArguments ;
78
76
import org .truffleruby .language .backtrace .BacktraceFormatter ;
79
77
import org .truffleruby .language .library .RubyStringLibrary ;
112
110
import org .truffleruby .parser .RubySource ;
113
111
import org .truffleruby .parser .TranslatorEnvironment ;
114
112
import org .truffleruby .parser .YARPTranslatorDriver ;
115
- import org .prism .Loader ;
116
- import org .prism .Parser ;
117
113
118
114
@ CoreModule ("Truffle::Debug" )
119
115
public abstract class TruffleDebugNodes {
@@ -250,83 +246,6 @@ Object printBacktrace() {
250
246
251
247
}
252
248
253
- @ CoreMethod (names = "yarp_serialize" , onSingleton = true , required = 1 )
254
- public abstract static class YARPSerializeNode extends CoreMethodArrayArgumentsNode {
255
- @ TruffleBoundary
256
- @ Specialization (guards = "strings.isRubyString(code)" , limit = "1" )
257
- Object serialize (Object code ,
258
- @ Cached RubyStringLibrary strings ,
259
- @ Cached TruffleString .CopyToByteArrayNode copyToByteArrayNode ,
260
- @ Cached TruffleString .FromByteArrayNode fromByteArrayNode ) {
261
- var tstring = strings .getTString (code );
262
- var tencoding = strings .getTEncoding (code );
263
- var source = copyToByteArrayNode .execute (tstring , tencoding );
264
-
265
- byte [] serialized = Parser .parseAndSerialize (source );
266
-
267
- return createString (fromByteArrayNode , serialized , Encodings .BINARY );
268
- }
269
- }
270
-
271
- @ CoreMethod (names = { "yarp_parse" }, onSingleton = true , required = 1 )
272
- public abstract static class YARPParseNode extends CoreMethodArrayArgumentsNode {
273
- @ TruffleBoundary
274
- @ Specialization (guards = "strings.isRubyString(code)" , limit = "1" )
275
- Object parse (Object code ,
276
- @ Cached RubyStringLibrary strings ,
277
- @ Cached TruffleString .CopyToByteArrayNode copyToByteArrayNode ,
278
- @ Cached TruffleString .FromJavaStringNode fromJavaStringNode ) {
279
- var tstring = strings .getTString (code );
280
- var tencoding = strings .getTEncoding (code );
281
- var source = copyToByteArrayNode .execute (tstring , tencoding );
282
-
283
- byte [] serialized = Parser .parseAndSerialize (source );
284
-
285
- var yarpSource = YARPTranslatorDriver .createYARPSource (source );
286
- var parseResult = Loader .load (serialized , yarpSource );
287
- var ast = parseResult .value ;
288
-
289
- return createString (fromJavaStringNode , ast .toString (), Encodings .UTF_8 );
290
- }
291
- }
292
-
293
- @ CoreMethod (names = "yarp_execute" , onSingleton = true , required = 1 )
294
- public abstract static class YARPExecuteNode extends CoreMethodArrayArgumentsNode {
295
- @ Specialization (guards = "strings.isRubyString(code)" , limit = "1" )
296
- Object yarpExecute (VirtualFrame frame , Object code ,
297
- @ Cached RubyStringLibrary strings ) {
298
- return doExecute (code , RubyArguments .getMethod (frame ));
299
- }
300
-
301
- @ TruffleBoundary
302
- private Object doExecute (Object code , InternalMethod method ) {
303
- TranslatorEnvironment .resetTemporaryVariablesIndex ();
304
-
305
- final RootCallTarget callTarget = getContext ().getCodeLoader ().parseWithYARP (
306
- code ,
307
- ParserContext .TOP_LEVEL ,
308
- null ,
309
- getContext ().getRootLexicalScope (),
310
- null );
311
-
312
- RubyRootNode truffleAST = RubyRootNode .of (callTarget );
313
-
314
- System .err .println ("Truffle AST:" );
315
- NodeUtil .printCompactTree (getContext ().getEnvErrStream (), truffleAST );
316
-
317
- return truffleAST .getCallTarget ().call (RubyArguments .pack (
318
- null ,
319
- null ,
320
- method ,
321
- DeclarationContext .topLevel (getContext ()),
322
- null ,
323
- coreLibrary ().mainObject ,
324
- Nil .INSTANCE ,
325
- NoKeywordArgumentsDescriptor .INSTANCE ,
326
- EMPTY_ARGUMENTS ));
327
- }
328
- }
329
-
330
249
@ CoreMethod (names = "parse_ast" , onSingleton = true , required = 1 )
331
250
public abstract static class ParseASTNode extends CoreMethodArrayArgumentsNode {
332
251
@ TruffleBoundary
@@ -346,8 +265,9 @@ Object ast(Object code,
346
265
347
266
var parseResult = YARPTranslatorDriver .parseToYARPAST (getLanguage (), rubySource , Collections .emptyList (),
348
267
parseEnvironment );
268
+ var ast = parseResult .value ;
349
269
350
- return createString (fromJavaStringNode , parseResult . value .toString (), Encodings .UTF_8 );
270
+ return createString (fromJavaStringNode , ast .toString (), Encodings .UTF_8 );
351
271
}
352
272
}
353
273
0 commit comments