public RubyStackTraceElement getBacktraceElement(ThreadContext context, int uplevel) { // NOTE: could be optimized not to walk the whole stack RubyStackTraceElement[] elements = getBacktrace(context).getBacktrace(context.runtime); // User can ask for level higher than stack if (elements.length <= uplevel + 1) uplevel = -1; return elements[uplevel + 1]; }
private RubyStackTraceElement[] getFullTrace(Integer length, StackTraceElement[] stacktrace) { if (length != null && length == 0) return RubyStackTraceElement.EMPTY_ARRAY; return TraceType.Gather.CALLER.getBacktraceData(this, stacktrace).getBacktrace(runtime); }
public BacktraceData getBacktraceData(ThreadContext context, StackTraceElement[] javaTrace) { return new BacktraceData( javaTrace, BacktraceElement.EMPTY_ARRAY, true, false, false); } },
/** * Gather backtrace data for a normal Ruby trace. * * @param context * @return */ public BacktraceData getBacktraceData(ThreadContext context) { BacktraceData data = getBacktraceData(context, Thread.currentThread().getStackTrace()); context.runtime.incrementBacktraceCount(); if (RubyInstanceConfig.LOG_BACKTRACES) logBacktrace(context.runtime, data.getBacktrace(context.runtime)); return data; }
/** * Get an integrated Ruby/Java backtrace if the current Gather type is NORMAL * * @param context * @param javaTrace * @return */ public BacktraceData getIntegratedBacktrace(ThreadContext context, StackTraceElement[] javaTrace) { return gather.getIntegratedBacktraceData(context, javaTrace); }
/** * Get a normal Ruby backtrace, using the current Gather type. * * @param context * @return */ public BacktraceData getBacktrace(ThreadContext context) { return gather.getBacktraceData(context); }
/** * @deprecated use {@link #logCaller(org.jruby.runtime.backtrace.RubyStackTraceElement[]) } */ public static void dumpCaller(RubyStackTraceElement[] trace) { logCaller(trace); }
/** * @deprecated use {@link #logWarning(org.jruby.runtime.backtrace.RubyStackTraceElement[]) */ public static void dumpWarning(RubyStackTraceElement[] trace) { logWarning(trace); }
public static StackTraceElement[] javaTraceFromRubyTrace(RubyStackTraceElement[] trace) { StackTraceElement[] newTrace = new StackTraceElement[trace.length]; for (int i = 0; i < newTrace.length; i++) { newTrace[i] = trace[i].asStackTraceElement(); } return newTrace; }
/** * @deprecated use {@link #logException(org.jruby.RubyException)} */ public static void dumpException(RubyException exception) { logException(exception); }
private StackTraceElement[] javaTraceFromRubyTrace(RubyStackTraceElement[] trace) { StackTraceElement[] newTrace = new StackTraceElement[trace.length]; for (int i = 0; i < newTrace.length; i++) { newTrace[i] = trace[i].getElement(); } return newTrace; } }
private RubyStackTraceElement[] getFullTrace(Integer length, StackTraceElement[] stacktrace) { if (length != null && length == 0) return RubyStackTraceElement.EMPTY_ARRAY; return TraceType.Gather.CALLER.getBacktraceData(this, stacktrace).getBacktrace(runtime); }
public RubyStackTraceElement getBacktraceElement(ThreadContext context, int uplevel) { // NOTE: could be optimized not to walk the whole stack RubyStackTraceElement[] elements = getBacktrace(context).getBacktrace(context.runtime); // User can ask for level higher than stack if (elements.length <= uplevel + 1) uplevel = -1; return elements[uplevel + 1]; }
/** * Get an integrated Ruby/Java backtrace if the current Gather type is NORMAL * * @param context * @param javaTrace * @return */ public BacktraceData getIntegratedBacktrace(ThreadContext context, StackTraceElement[] javaTrace) { return gather.getIntegratedBacktraceData(context, javaTrace); }
/** * @deprecated use {@link #logCaller(org.jruby.RubyArray)} */ public static void dumpCaller(RubyArray trace) { logCaller(trace); }
/** * @deprecated use {@link #logWarning(org.jruby.runtime.backtrace.RubyStackTraceElement[]) */ public static void dumpWarning(RubyStackTraceElement[] trace) { logWarning(trace); }
public static StackTraceElement[] javaTraceFromRubyTrace(RubyStackTraceElement[] trace) { StackTraceElement[] newTrace = new StackTraceElement[trace.length]; for (int i = 0; i < newTrace.length; i++) { newTrace[i] = trace[i].asStackTraceElement(); } return newTrace; }
public RubyStackTraceElement[] gatherCallerBacktrace() { return Gather.CALLER.getBacktraceData(this).getBacktrace(runtime); }
public RubyStackTraceElement[] gatherCallerBacktrace() { return Gather.CALLER.getBacktraceData(this).getBacktrace(runtime); }
public RubyStackTraceElement[] gatherCallerBacktrace() { return Gather.CALLER.getBacktraceData(this, false).getBacktrace(runtime); }