Skip to content


[Truffle] -Xtruffle.translator.print_asts= tool.
Browse files Browse the repository at this point in the history
  • Loading branch information
chrisseaton committed Dec 22, 2014
1 parent 9003bdd commit eaa4f2f
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,11 @@ public MethodDefinitionNode compileFunctionNode(SourceSection sourceSection, Str
final RubyRootNode rootNode = new RubyRootNode(
context, sourceSection, environment.getFrameDescriptor(), environment.getSharedMethodInfo(), body);

if (PRINT_AST_METHOD_NAMES.contains(methodName)) {
NodeUtil.printCompactTree(System.err, rootNode);

if (isBlock) {
final CallTarget callTarget = Truffle.getRuntime().createCallTarget(rootNode);
final CallTarget callTargetForMethods = withoutBlockDestructureSemantics(callTarget);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,14 @@
import org.jruby.truffle.runtime.RubyContext;
import org.jruby.util.cli.Options;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

public abstract class Translator extends org.jruby.ast.visitor.AbstractNodeVisitor<RubyNode> {

public static final Set<String> PRINT_AST_METHOD_NAMES = new HashSet<>(Arrays.asList(Options.TRUFFLE_TRANSLATOR_PRINT_AST.load().split(",")));

protected final RubyNode currentNode;
protected final RubyContext context;
protected final Source source;
Expand Down
1 change: 1 addition & 0 deletions core/src/main/java/org/jruby/util/cli/
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ public class Options {
public static final Option<Boolean> TRUFFLE_DISPATCH_METAPROGRAMMING_ALWAYS_INDIRECT = bool(TRUFFLE, "truffle.dispatch.metaprogramming_always_indirect", false, "Always use indirect calls for the metaprogramming methods #__send__ and #send, and for any call site that has to use #method_missing or #const_missing.");
public static final Option<Boolean> TRUFFLE_DISPATCH_METHODMISSING_ALWAYS_CLONED = bool(TRUFFLE, "", true, "Always clone #method_missing call targets.");
public static final Option<Boolean> TRUFFLE_DISPATCH_METHODMISSING_ALWAYS_INLINED = bool(TRUFFLE, "", true, "Always inline #method_missing call targets.");
public static final Option<String> TRUFFLE_TRANSLATOR_PRINT_AST = string(TRUFFLE, "truffle.translator.print_asts", "", "Comma delimited list of method names to print the AST of after translation.");

public static final Option<Boolean> NATIVE_ENABLED = bool(NATIVE, "native.enabled", true, "Enable/disable native code, including POSIX features and C exts.");
public static final Option<Boolean> NATIVE_VERBOSE = bool(NATIVE, "native.verbose", false, "Enable verbose logging of native extension loading.");
Expand Down

0 comments on commit eaa4f2f

Please sign in to comment.