OpenJDK / jdk / hs
changeset 9169:644cd4523a01
Merge
author | vladidan |
---|---|
date | Tue, 12 Apr 2011 10:32:42 -0400 |
parents | c2cdeb17ec31 59f29856d4b2 |
children | 56670ec8e643 |
files | |
diffstat | 3 files changed, 30 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/hotspot/src/share/tools/ProjectCreator/WinGammaPlatformVC10.java Mon Apr 11 23:02:37 2011 -0400 +++ b/hotspot/src/share/tools/ProjectCreator/WinGammaPlatformVC10.java Tue Apr 12 10:32:42 2011 -0400 @@ -497,6 +497,9 @@ addAttr(rv, "TargetMachine", "MachineX64"); } + // We always want the /DEBUG option to get full symbol information in the pdb files + addAttr(rv, "GenerateDebugInformation", "true"); + return rv; } @@ -504,8 +507,7 @@ Vector getDebugLinkerFlags() { Vector rv = new Vector(); - // /DEBUG option - addAttr(rv, "GenerateDebugInformation", "true"); + // Empty now that /DEBUG option is used by all configs return rv; }
--- a/hotspot/src/share/vm/classfile/javaClasses.cpp Mon Apr 11 23:02:37 2011 -0400 +++ b/hotspot/src/share/vm/classfile/javaClasses.cpp Tue Apr 12 10:32:42 2011 -0400 @@ -1444,32 +1444,41 @@ } } #ifdef ASSERT - assert(st_method() == method && st.bci() == bci, - "Wrong stack trace"); - st.next(); - // vframeStream::method isn't GC-safe so store off a copy - // of the methodOop in case we GC. - if (!st.at_end()) { - st_method = st.method(); - } + assert(st_method() == method && st.bci() == bci, + "Wrong stack trace"); + st.next(); + // vframeStream::method isn't GC-safe so store off a copy + // of the methodOop in case we GC. + if (!st.at_end()) { + st_method = st.method(); + } #endif + + // the format of the stacktrace will be: + // - 1 or more fillInStackTrace frames for the exception class (skipped) + // - 0 or more <init> methods for the exception class (skipped) + // - rest of the stack + if (!skip_fillInStackTrace_check) { - // check "fillInStackTrace" only once, so we negate the flag - // after the first time check. - skip_fillInStackTrace_check = true; - if (method->name() == vmSymbols::fillInStackTrace_name()) { + if ((method->name() == vmSymbols::fillInStackTrace_name() || + method->name() == vmSymbols::fillInStackTrace0_name()) && + throwable->is_a(method->method_holder())) { continue; } + else { + skip_fillInStackTrace_check = true; // gone past them all + } } - // skip <init> methods of the exceptions klass. If there is <init> methods - // that belongs to a superclass of the exception we are going to skipping - // them in stack trace. This is simlar to classic VM. if (!skip_throwableInit_check) { + assert(skip_fillInStackTrace_check, "logic error in backtrace filtering"); + + // skip <init> methods of the exception class and superclasses + // This is simlar to classic VM. if (method->name() == vmSymbols::object_initializer_name() && throwable->is_a(method->method_holder())) { continue; } else { - // if no "Throwable.init()" method found, we stop checking it next time. + // there are none or we've seen them all - either way stop checking skip_throwableInit_check = true; } }
--- a/hotspot/src/share/vm/classfile/vmSymbols.hpp Mon Apr 11 23:02:37 2011 -0400 +++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp Tue Apr 12 10:32:42 2011 -0400 @@ -330,6 +330,7 @@ template(dispatch_name, "dispatch") \ template(getSystemClassLoader_name, "getSystemClassLoader") \ template(fillInStackTrace_name, "fillInStackTrace") \ + template(fillInStackTrace0_name, "fillInStackTrace0") \ template(getCause_name, "getCause") \ template(initCause_name, "initCause") \ template(setProperty_name, "setProperty") \