src/share/classes/java/lang/Throwable.java

Print this page

        

*** 775,785 **** * * @return a reference to this {@code Throwable} instance. * @see java.lang.Throwable#printStackTrace() */ public synchronized Throwable fillInStackTrace() { ! if (stackTrace != null) { fillInStackTrace(0); stackTrace = UNASSIGNED_STACK; } return this; } --- 775,786 ---- * * @return a reference to this {@code Throwable} instance. * @see java.lang.Throwable#printStackTrace() */ public synchronized Throwable fillInStackTrace() { ! if (stackTrace != null || ! backtrace != null /* Out of protocol state */ ) { fillInStackTrace(0); stackTrace = UNASSIGNED_STACK; } return this; }
*** 815,825 **** } private synchronized StackTraceElement[] getOurStackTrace() { // Initialize stack trace field with information from // backtrace if this is the first call to this method ! if (stackTrace == UNASSIGNED_STACK) { int depth = getStackTraceDepth(); stackTrace = new StackTraceElement[depth]; for (int i=0; i < depth; i++) stackTrace[i] = getStackTraceElement(i); } else if (stackTrace == null) { --- 816,827 ---- } private synchronized StackTraceElement[] getOurStackTrace() { // Initialize stack trace field with information from // backtrace if this is the first call to this method ! if (stackTrace == UNASSIGNED_STACK || ! (stackTrace == null && backtrace != null) /* Out of protocol state */) { int depth = getStackTraceDepth(); stackTrace = new StackTraceElement[depth]; for (int i=0; i < depth; i++) stackTrace[i] = getStackTraceElement(i); } else if (stackTrace == null) {
*** 863,873 **** if (defensiveCopy[i] == null) throw new NullPointerException("stackTrace[" + i + "]"); } synchronized (this) { ! if (this.stackTrace == null) // Immutable stack return; this.stackTrace = defensiveCopy; } } --- 865,876 ---- if (defensiveCopy[i] == null) throw new NullPointerException("stackTrace[" + i + "]"); } synchronized (this) { ! if (this.stackTrace == null && // Immutable stack ! backtrace == null) // Test for out of protocol state return; this.stackTrace = defensiveCopy; } }