src/share/vm/classfile/javaClasses.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8076112 Sdiff src/share/vm/classfile

src/share/vm/classfile/javaClasses.cpp

Print this page




1690         }
1691       }
1692     }
1693 #ifdef ASSERT
1694     assert(st_method() == method && st.bci() == bci,
1695            "Wrong stack trace");
1696     st.next();
1697     // vframeStream::method isn't GC-safe so store off a copy
1698     // of the Method* in case we GC.
1699     if (!st.at_end()) {
1700       st_method = st.method();
1701     }
1702 #endif
1703 
1704     // the format of the stacktrace will be:
1705     // - 1 or more fillInStackTrace frames for the exception class (skipped)
1706     // - 0 or more <init> methods for the exception class (skipped)
1707     // - rest of the stack
1708 
1709     if (!skip_fillInStackTrace_check) {
1710       if ((method->name() == vmSymbols::fillInStackTrace_name() ||
1711            method->name() == vmSymbols::fillInStackTrace0_name()) &&
1712           throwable->is_a(method->method_holder())) {
1713         continue;
1714       }
1715       else {
1716         skip_fillInStackTrace_check = true; // gone past them all
1717       }
1718     }
1719     if (!skip_throwableInit_check) {
1720       assert(skip_fillInStackTrace_check, "logic error in backtrace filtering");
1721 
1722       // skip <init> methods of the exception class and superclasses
1723       // This is simlar to classic VM.
1724       if (method->name() == vmSymbols::object_initializer_name() &&
1725           throwable->is_a(method->method_holder())) {
1726         continue;
1727       } else {
1728         // there are none or we've seen them all - either way stop checking
1729         skip_throwableInit_check = true;
1730       }
1731     }




1690         }
1691       }
1692     }
1693 #ifdef ASSERT
1694     assert(st_method() == method && st.bci() == bci,
1695            "Wrong stack trace");
1696     st.next();
1697     // vframeStream::method isn't GC-safe so store off a copy
1698     // of the Method* in case we GC.
1699     if (!st.at_end()) {
1700       st_method = st.method();
1701     }
1702 #endif
1703 
1704     // the format of the stacktrace will be:
1705     // - 1 or more fillInStackTrace frames for the exception class (skipped)
1706     // - 0 or more <init> methods for the exception class (skipped)
1707     // - rest of the stack
1708 
1709     if (!skip_fillInStackTrace_check) {
1710       if (method->name() == vmSymbols::fillInStackTrace_name() &&

1711           throwable->is_a(method->method_holder())) {
1712         continue;
1713       }
1714       else {
1715         skip_fillInStackTrace_check = true; // gone past them all
1716       }
1717     }
1718     if (!skip_throwableInit_check) {
1719       assert(skip_fillInStackTrace_check, "logic error in backtrace filtering");
1720 
1721       // skip <init> methods of the exception class and superclasses
1722       // This is simlar to classic VM.
1723       if (method->name() == vmSymbols::object_initializer_name() &&
1724           throwable->is_a(method->method_holder())) {
1725         continue;
1726       } else {
1727         // there are none or we've seen them all - either way stop checking
1728         skip_throwableInit_check = true;
1729       }
1730     }


src/share/vm/classfile/javaClasses.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File