public TraceInstrument(RubyContext context, SourceSection sourceSection) { this.context = context; traceAssumption = context.getTraceManager().getTraceAssumption(); traceFunc = null; callNode = null; event = context.makeString("line"); file = context.makeString(sourceSection.getSource().getName()); line = sourceSection.getStartLine(); }
@CompilerDirectives.SlowPath private RubyString formatSlow(RubyString format, Object[] args) { final RubyContext context = getContext(); if (args.length == 1 && args[0] instanceof RubyArray) { singleArrayProfile.enter(); return context.makeString( StringFormatter.format(format.toString(), ((RubyArray) args[0]).asList())); } else { multipleArgumentsProfile.enter(); return context.makeString(StringFormatter.format(format.toString(), Arrays.asList(args))); } }
@Override public void init() { if (RubyContext.PRINT_RUNTIME) { runtime .getInstanceConfig() .getError() .println("jruby: using " + Truffle.getRuntime().getName()); } // Bring in core method nodes CoreMethodNodeManager.addStandardMethods(truffleContext.getCoreLibrary().getObjectClass()); // Give the core library manager a chance to tweak some of those methods truffleContext.getCoreLibrary().initializeAfterMethodsAdded(); // Set program arguments for (IRubyObject arg : ((org.jruby.RubyArray) runtime.getObject().getConstant("ARGV")).toJavaArray()) { assert arg != null; truffleContext.getCoreLibrary().getArgv().slowPush(truffleContext.makeString(arg.toString())); } // Set the load path final RubyArray loadPath = (RubyArray) truffleContext.getCoreLibrary().getGlobalVariablesObject().getInstanceVariable("$:"); for (IRubyObject path : ((org.jruby.RubyArray) runtime.getLoadService().getLoadPath()).toJavaArray()) { loadPath.slowPush(truffleContext.makeString(path.toString())); } // Hook if (truffleContext.getHooks() != null) { truffleContext.getHooks().afterInit(truffleContext); } }