Tue, 12 Apr 2011 10:32:42 -0400
Merge
1.1 --- a/src/share/tools/ProjectCreator/WinGammaPlatformVC10.java Mon Apr 11 23:02:37 2011 -0400 1.2 +++ b/src/share/tools/ProjectCreator/WinGammaPlatformVC10.java Tue Apr 12 10:32:42 2011 -0400 1.3 @@ -497,6 +497,9 @@ 1.4 addAttr(rv, "TargetMachine", "MachineX64"); 1.5 } 1.6 1.7 + // We always want the /DEBUG option to get full symbol information in the pdb files 1.8 + addAttr(rv, "GenerateDebugInformation", "true"); 1.9 + 1.10 return rv; 1.11 } 1.12 1.13 @@ -504,8 +507,7 @@ 1.14 Vector getDebugLinkerFlags() { 1.15 Vector rv = new Vector(); 1.16 1.17 - // /DEBUG option 1.18 - addAttr(rv, "GenerateDebugInformation", "true"); 1.19 + // Empty now that /DEBUG option is used by all configs 1.20 1.21 return rv; 1.22 }
2.1 --- a/src/share/vm/classfile/javaClasses.cpp Mon Apr 11 23:02:37 2011 -0400 2.2 +++ b/src/share/vm/classfile/javaClasses.cpp Tue Apr 12 10:32:42 2011 -0400 2.3 @@ -1444,32 +1444,41 @@ 2.4 } 2.5 } 2.6 #ifdef ASSERT 2.7 - assert(st_method() == method && st.bci() == bci, 2.8 - "Wrong stack trace"); 2.9 - st.next(); 2.10 - // vframeStream::method isn't GC-safe so store off a copy 2.11 - // of the methodOop in case we GC. 2.12 - if (!st.at_end()) { 2.13 - st_method = st.method(); 2.14 - } 2.15 + assert(st_method() == method && st.bci() == bci, 2.16 + "Wrong stack trace"); 2.17 + st.next(); 2.18 + // vframeStream::method isn't GC-safe so store off a copy 2.19 + // of the methodOop in case we GC. 2.20 + if (!st.at_end()) { 2.21 + st_method = st.method(); 2.22 + } 2.23 #endif 2.24 + 2.25 + // the format of the stacktrace will be: 2.26 + // - 1 or more fillInStackTrace frames for the exception class (skipped) 2.27 + // - 0 or more <init> methods for the exception class (skipped) 2.28 + // - rest of the stack 2.29 + 2.30 if (!skip_fillInStackTrace_check) { 2.31 - // check "fillInStackTrace" only once, so we negate the flag 2.32 - // after the first time check. 2.33 - skip_fillInStackTrace_check = true; 2.34 - if (method->name() == vmSymbols::fillInStackTrace_name()) { 2.35 + if ((method->name() == vmSymbols::fillInStackTrace_name() || 2.36 + method->name() == vmSymbols::fillInStackTrace0_name()) && 2.37 + throwable->is_a(method->method_holder())) { 2.38 continue; 2.39 } 2.40 + else { 2.41 + skip_fillInStackTrace_check = true; // gone past them all 2.42 + } 2.43 } 2.44 - // skip <init> methods of the exceptions klass. If there is <init> methods 2.45 - // that belongs to a superclass of the exception we are going to skipping 2.46 - // them in stack trace. This is simlar to classic VM. 2.47 if (!skip_throwableInit_check) { 2.48 + assert(skip_fillInStackTrace_check, "logic error in backtrace filtering"); 2.49 + 2.50 + // skip <init> methods of the exception class and superclasses 2.51 + // This is simlar to classic VM. 2.52 if (method->name() == vmSymbols::object_initializer_name() && 2.53 throwable->is_a(method->method_holder())) { 2.54 continue; 2.55 } else { 2.56 - // if no "Throwable.init()" method found, we stop checking it next time. 2.57 + // there are none or we've seen them all - either way stop checking 2.58 skip_throwableInit_check = true; 2.59 } 2.60 }
3.1 --- a/src/share/vm/classfile/vmSymbols.hpp Mon Apr 11 23:02:37 2011 -0400 3.2 +++ b/src/share/vm/classfile/vmSymbols.hpp Tue Apr 12 10:32:42 2011 -0400 3.3 @@ -330,6 +330,7 @@ 3.4 template(dispatch_name, "dispatch") \ 3.5 template(getSystemClassLoader_name, "getSystemClassLoader") \ 3.6 template(fillInStackTrace_name, "fillInStackTrace") \ 3.7 + template(fillInStackTrace0_name, "fillInStackTrace0") \ 3.8 template(getCause_name, "getCause") \ 3.9 template(initCause_name, "initCause") \ 3.10 template(setProperty_name, "setProperty") \