Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jruby/jruby
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 9b1ae224f4ae
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 380c3997e22e
Choose a head ref
  • 2 commits
  • 2 files changed
  • 1 contributor

Commits on Mar 10, 2016

  1. deprecate ThreadContext's createBacktrace2 in favor of getBacktrace

    ... not really "creating" the backtrace - simply returning raw tracked backtrace elements
    kares committed Mar 10, 2016

    Verified

    This commit was signed with the committer’s verified signature.
    makenowjust Hiroya Fujinami
    Copy the full SHA
    f060c79 View commit details
  2. fix double incrementing caller count + allow for raw backtrace retrie…

    …val for given level
    kares committed Mar 10, 2016
    Copy the full SHA
    380c399 View commit details
Showing with 22 additions and 13 deletions.
  1. +18 −9 core/src/main/java/org/jruby/runtime/ThreadContext.java
  2. +4 −4 core/src/main/java/org/jruby/runtime/backtrace/TraceType.java
27 changes: 18 additions & 9 deletions core/src/main/java/org/jruby/runtime/ThreadContext.java
Original file line number Diff line number Diff line change
@@ -683,6 +683,8 @@ public IRubyObject createCallerBacktrace(int level, Integer length, StackTraceEl
* @return an Array with the backtrace locations
*/
public IRubyObject createCallerLocations(int level, Integer length, StackTraceElement[] stacktrace) {
runtime.incrementCallerCount();

RubyStackTraceElement[] trace = getTraceSubset(level, length, stacktrace);

if (trace == null) return nil;
@@ -691,7 +693,6 @@ public IRubyObject createCallerLocations(int level, Integer length, StackTraceEl
}

private RubyStackTraceElement[] getTraceSubset(int level, Integer length, StackTraceElement[] stacktrace) {
runtime.incrementCallerCount();

if (length != null && length == 0) return RubyStackTraceElement.EMPTY_ARRAY;

@@ -741,16 +742,24 @@ public void setEventHooksEnabled(boolean flag) {
eventHooksEnabled = flag;
}

@Deprecated
public BacktraceElement[] createBacktrace2(int level, boolean nativeException) {
return getBacktrace();
}

/**
* Create an Array with backtrace information.
* @param level
* @param nativeException
* @return an Array with the backtrace
* Create a snapshot Array with current backtrace information.
* @return the backtrace
*/
public BacktraceElement[] createBacktrace2(int level, boolean nativeException) {
BacktraceElement[] backtrace = this.backtrace;
BacktraceElement[] newTrace = new BacktraceElement[backtraceIndex + 1];
System.arraycopy(backtrace, 0, newTrace, 0, newTrace.length);
public BacktraceElement[] getBacktrace() {
return getBacktrace(0);
}

public final BacktraceElement[] getBacktrace(int level) {
final int len = backtraceIndex + 1;
if ( level < 0 ) level = len + level;
BacktraceElement[] newTrace = new BacktraceElement[len - level];
System.arraycopy(backtrace, level, newTrace, 0, newTrace.length);
return newTrace;
}

8 changes: 4 additions & 4 deletions core/src/main/java/org/jruby/runtime/backtrace/TraceType.java
Original file line number Diff line number Diff line change
@@ -155,7 +155,7 @@ public BacktraceData getBacktraceData(ThreadContext context, StackTraceElement[]
public BacktraceData getBacktraceData(ThreadContext context, StackTraceElement[] javaTrace, boolean nativeException) {
return new BacktraceData(
javaTrace,
context.createBacktrace2(0, nativeException),
context.getBacktrace(),
true,
false,
false);
@@ -169,7 +169,7 @@ public BacktraceData getBacktraceData(ThreadContext context, StackTraceElement[]
public BacktraceData getBacktraceData(ThreadContext context, StackTraceElement[] javaTrace, boolean nativeException) {
return new BacktraceData(
javaTrace,
context.createBacktrace2(0, nativeException),
context.getBacktrace(),
false,
false,
true);
@@ -183,7 +183,7 @@ public BacktraceData getBacktraceData(ThreadContext context, StackTraceElement[]
public BacktraceData getBacktraceData(ThreadContext context, StackTraceElement[] javaTrace, boolean nativeException) {
return new BacktraceData(
javaTrace,
context.createBacktrace2(0, nativeException),
context.getBacktrace(),
false,
context.runtime.getInstanceConfig().getBacktraceMask(),
false);
@@ -197,7 +197,7 @@ public BacktraceData getBacktraceData(ThreadContext context, StackTraceElement[]
public BacktraceData getBacktraceData(ThreadContext context, StackTraceElement[] javaTrace, boolean nativeException) {
return new BacktraceData(
javaTrace,
context.createBacktrace2(0, nativeException),
context.getBacktrace(),
false,
true,
false);