Tue, 07 Sep 2010 11:38:09 -0400
Merge
src/share/vm/runtime/arguments.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/share/vm/classfile/stackMapTable.cpp Wed Sep 01 00:40:05 2010 -0700 1.2 +++ b/src/share/vm/classfile/stackMapTable.cpp Tue Sep 07 11:38:09 2010 -0400 1.3 @@ -1,5 +1,5 @@ 1.4 /* 1.5 - * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved. 1.6 + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 1.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.8 * 1.9 * This code is free software; you can redistribute it and/or modify it 1.10 @@ -152,6 +152,7 @@ 1.11 1.12 int32_t StackMapReader::chop( 1.13 VerificationType* locals, int32_t length, int32_t chops) { 1.14 + if (locals == NULL) return -1; 1.15 int32_t pos = length - 1; 1.16 for (int32_t i=0; i<chops; i++) { 1.17 if (locals[pos].is_category2_2nd()) {
2.1 --- a/src/share/vm/runtime/arguments.cpp Wed Sep 01 00:40:05 2010 -0700 2.2 +++ b/src/share/vm/runtime/arguments.cpp Tue Sep 07 11:38:09 2010 -0400 2.3 @@ -2858,6 +2858,13 @@ 2.4 CommandLineFlags::printFlags(); 2.5 vm_exit(0); 2.6 } 2.7 + 2.8 +#ifndef PRODUCT 2.9 + if (match_option(option, "-XX:+PrintFlagsWithComments", &tail)) { 2.10 + CommandLineFlags::printFlags(true); 2.11 + vm_exit(0); 2.12 + } 2.13 +#endif 2.14 } 2.15 2.16 if (IgnoreUnrecognizedVMOptions) {
3.1 --- a/src/share/vm/runtime/globals.cpp Wed Sep 01 00:40:05 2010 -0700 3.2 +++ b/src/share/vm/runtime/globals.cpp Tue Sep 07 11:38:09 2010 -0400 3.3 @@ -68,30 +68,38 @@ 3.4 // Length of format string (e.g. "%.1234s") for printing ccstr below 3.5 #define FORMAT_BUFFER_LEN 16 3.6 3.7 -void Flag::print_on(outputStream* st) { 3.8 - st->print("%5s %-35s %c= ", type, name, (origin != DEFAULT ? ':' : ' ')); 3.9 +void Flag::print_on(outputStream* st, bool withComments) { 3.10 + st->print("%9s %-40s %c= ", type, name, (origin != DEFAULT ? ':' : ' ')); 3.11 if (is_bool()) st->print("%-16s", get_bool() ? "true" : "false"); 3.12 if (is_intx()) st->print("%-16ld", get_intx()); 3.13 if (is_uintx()) st->print("%-16lu", get_uintx()); 3.14 if (is_uint64_t()) st->print("%-16lu", get_uint64_t()); 3.15 + if (is_double()) st->print("%-16f", get_double()); 3.16 + 3.17 if (is_ccstr()) { 3.18 - const char* cp = get_ccstr(); 3.19 - if (cp != NULL) { 3.20 - const char* eol; 3.21 - while ((eol = strchr(cp, '\n')) != NULL) { 3.22 - char format_buffer[FORMAT_BUFFER_LEN]; 3.23 - size_t llen = pointer_delta(eol, cp, sizeof(char)); 3.24 - jio_snprintf(format_buffer, FORMAT_BUFFER_LEN, 3.25 + const char* cp = get_ccstr(); 3.26 + if (cp != NULL) { 3.27 + const char* eol; 3.28 + while ((eol = strchr(cp, '\n')) != NULL) { 3.29 + char format_buffer[FORMAT_BUFFER_LEN]; 3.30 + size_t llen = pointer_delta(eol, cp, sizeof(char)); 3.31 + jio_snprintf(format_buffer, FORMAT_BUFFER_LEN, 3.32 "%%." SIZE_FORMAT "s", llen); 3.33 - st->print(format_buffer, cp); 3.34 - st->cr(); 3.35 - cp = eol+1; 3.36 - st->print("%5s %-35s += ", "", name); 3.37 - } 3.38 - st->print("%-16s", cp); 3.39 - } 3.40 + st->print(format_buffer, cp); 3.41 + st->cr(); 3.42 + cp = eol+1; 3.43 + st->print("%5s %-35s += ", "", name); 3.44 + } 3.45 + st->print("%-16s", cp); 3.46 + } 3.47 + else st->print("%-16s", ""); 3.48 } 3.49 - st->print(" %s", kind); 3.50 + st->print("%-20s", kind); 3.51 + if (withComments) { 3.52 +#ifndef PRODUCT 3.53 + st->print("%s", doc ); 3.54 +#endif 3.55 + } 3.56 st->cr(); 3.57 } 3.58 3.59 @@ -131,67 +139,67 @@ 3.60 // 4991491 do not "optimize out" the was_set false values: omitting them 3.61 // tickles a Microsoft compiler bug causing flagTable to be malformed 3.62 3.63 -#define RUNTIME_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{product}", DEFAULT }, 3.64 -#define RUNTIME_PD_PRODUCT_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{pd product}", DEFAULT }, 3.65 -#define RUNTIME_DIAGNOSTIC_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{diagnostic}", DEFAULT }, 3.66 -#define RUNTIME_EXPERIMENTAL_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{experimental}", DEFAULT }, 3.67 -#define RUNTIME_MANAGEABLE_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{manageable}", DEFAULT }, 3.68 -#define RUNTIME_PRODUCT_RW_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{product rw}", DEFAULT }, 3.69 +#define RUNTIME_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) "{product}", DEFAULT }, 3.70 +#define RUNTIME_PD_PRODUCT_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) "{pd product}", DEFAULT }, 3.71 +#define RUNTIME_DIAGNOSTIC_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) "{diagnostic}", DEFAULT }, 3.72 +#define RUNTIME_EXPERIMENTAL_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) "{experimental}", DEFAULT }, 3.73 +#define RUNTIME_MANAGEABLE_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) "{manageable}", DEFAULT }, 3.74 +#define RUNTIME_PRODUCT_RW_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) "{product rw}", DEFAULT }, 3.75 3.76 #ifdef PRODUCT 3.77 #define RUNTIME_DEVELOP_FLAG_STRUCT(type, name, value, doc) /* flag is constant */ 3.78 #define RUNTIME_PD_DEVELOP_FLAG_STRUCT(type, name, doc) /* flag is constant */ 3.79 #define RUNTIME_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) 3.80 #else 3.81 - #define RUNTIME_DEVELOP_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "", DEFAULT }, 3.82 - #define RUNTIME_PD_DEVELOP_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{pd}", DEFAULT }, 3.83 - #define RUNTIME_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{notproduct}", DEFAULT }, 3.84 + #define RUNTIME_DEVELOP_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, doc, "", DEFAULT }, 3.85 + #define RUNTIME_PD_DEVELOP_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, doc, "{pd}", DEFAULT }, 3.86 + #define RUNTIME_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, doc, "{notproduct}", DEFAULT }, 3.87 #endif 3.88 3.89 #ifdef _LP64 3.90 - #define RUNTIME_LP64_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{lp64_product}", DEFAULT }, 3.91 + #define RUNTIME_LP64_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) "{lp64_product}", DEFAULT }, 3.92 #else 3.93 #define RUNTIME_LP64_PRODUCT_FLAG_STRUCT(type, name, value, doc) /* flag is constant */ 3.94 #endif // _LP64 3.95 3.96 -#define C1_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C1 product}", DEFAULT }, 3.97 -#define C1_PD_PRODUCT_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{C1 pd product}", DEFAULT }, 3.98 +#define C1_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) "{C1 product}", DEFAULT }, 3.99 +#define C1_PD_PRODUCT_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) "{C1 pd product}", DEFAULT }, 3.100 #ifdef PRODUCT 3.101 #define C1_DEVELOP_FLAG_STRUCT(type, name, value, doc) /* flag is constant */ 3.102 #define C1_PD_DEVELOP_FLAG_STRUCT(type, name, doc) /* flag is constant */ 3.103 #define C1_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) 3.104 #else 3.105 - #define C1_DEVELOP_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C1}", DEFAULT }, 3.106 - #define C1_PD_DEVELOP_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{C1 pd}", DEFAULT }, 3.107 - #define C1_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C1 notproduct}", DEFAULT }, 3.108 + #define C1_DEVELOP_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, doc, "{C1}", DEFAULT }, 3.109 + #define C1_PD_DEVELOP_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, doc, "{C1 pd}", DEFAULT }, 3.110 + #define C1_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, doc, "{C1 notproduct}", DEFAULT }, 3.111 #endif 3.112 3.113 3.114 -#define C2_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C2 product}", DEFAULT }, 3.115 -#define C2_PD_PRODUCT_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{C2 pd product}", DEFAULT }, 3.116 -#define C2_DIAGNOSTIC_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C2 diagnostic}", DEFAULT }, 3.117 -#define C2_EXPERIMENTAL_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C2 experimental}", DEFAULT }, 3.118 +#define C2_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) "{C2 product}", DEFAULT }, 3.119 +#define C2_PD_PRODUCT_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) "{C2 pd product}", DEFAULT }, 3.120 +#define C2_DIAGNOSTIC_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) "{C2 diagnostic}", DEFAULT }, 3.121 +#define C2_EXPERIMENTAL_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) "{C2 experimental}", DEFAULT }, 3.122 #ifdef PRODUCT 3.123 #define C2_DEVELOP_FLAG_STRUCT(type, name, value, doc) /* flag is constant */ 3.124 #define C2_PD_DEVELOP_FLAG_STRUCT(type, name, doc) /* flag is constant */ 3.125 #define C2_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) 3.126 #else 3.127 - #define C2_DEVELOP_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C2}", DEFAULT }, 3.128 - #define C2_PD_DEVELOP_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{C2 pd}", DEFAULT }, 3.129 - #define C2_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C2 notproduct}", DEFAULT }, 3.130 + #define C2_DEVELOP_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, doc, "{C2}", DEFAULT }, 3.131 + #define C2_PD_DEVELOP_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, doc, "{C2 pd}", DEFAULT }, 3.132 + #define C2_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, doc, "{C2 notproduct}", DEFAULT }, 3.133 #endif 3.134 3.135 -#define SHARK_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark product}", DEFAULT }, 3.136 -#define SHARK_PD_PRODUCT_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{Shark pd product}", DEFAULT }, 3.137 -#define SHARK_DIAGNOSTIC_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark diagnostic}", DEFAULT }, 3.138 +#define SHARK_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) "{Shark product}", DEFAULT }, 3.139 +#define SHARK_PD_PRODUCT_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) "{Shark pd product}", DEFAULT }, 3.140 +#define SHARK_DIAGNOSTIC_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) "{Shark diagnostic}", DEFAULT }, 3.141 #ifdef PRODUCT 3.142 #define SHARK_DEVELOP_FLAG_STRUCT(type, name, value, doc) /* flag is constant */ 3.143 #define SHARK_PD_DEVELOP_FLAG_STRUCT(type, name, doc) /* flag is constant */ 3.144 #define SHARK_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) 3.145 #else 3.146 - #define SHARK_DEVELOP_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark}", DEFAULT }, 3.147 - #define SHARK_PD_DEVELOP_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{Shark pd}", DEFAULT }, 3.148 - #define SHARK_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark notproduct}", DEFAULT }, 3.149 + #define SHARK_DEVELOP_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, doc, "{Shark}", DEFAULT }, 3.150 + #define SHARK_PD_DEVELOP_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, doc, "{Shark pd}", DEFAULT }, 3.151 + #define SHARK_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, doc, "{Shark notproduct}", DEFAULT }, 3.152 #endif 3.153 3.154 static Flag flagTable[] = { 3.155 @@ -485,7 +493,7 @@ 3.156 3.157 #endif // PRODUCT 3.158 3.159 -void CommandLineFlags::printFlags() { 3.160 +void CommandLineFlags::printFlags(bool withComments) { 3.161 // Print the flags sorted by name 3.162 // note: this method is called before the thread structure is in place 3.163 // which means resource allocation cannot be used. 3.164 @@ -505,7 +513,7 @@ 3.165 tty->print_cr("[Global flags]"); 3.166 for (int i = 0; i < length; i++) { 3.167 if (array[i]->is_unlocked()) { 3.168 - array[i]->print_on(tty); 3.169 + array[i]->print_on(tty, withComments); 3.170 } 3.171 } 3.172 FREE_C_HEAP_ARRAY(Flag*, array);
4.1 --- a/src/share/vm/runtime/globals.hpp Wed Sep 01 00:40:05 2010 -0700 4.2 +++ b/src/share/vm/runtime/globals.hpp Tue Sep 07 11:38:09 2010 -0400 4.3 @@ -90,6 +90,9 @@ 4.4 const char *type; 4.5 const char *name; 4.6 void* addr; 4.7 + 4.8 + NOT_PRODUCT(const char *doc;) 4.9 + 4.10 const char *kind; 4.11 FlagValueOrigin origin; 4.12 4.13 @@ -131,7 +134,7 @@ 4.14 bool is_writeable() const; 4.15 bool is_external() const; 4.16 4.17 - void print_on(outputStream* st); 4.18 + void print_on(outputStream* st, bool withComments = false ); 4.19 void print_as_flag(outputStream* st); 4.20 }; 4.21 4.22 @@ -211,7 +214,7 @@ 4.23 static bool wasSetOnCmdline(const char* name, bool* value); 4.24 static void printSetFlags(); 4.25 4.26 - static void printFlags(); 4.27 + static void printFlags(bool withComments = false ); 4.28 4.29 static void verify() PRODUCT_RETURN; 4.30 }; 4.31 @@ -2406,6 +2409,9 @@ 4.32 product(bool, PrintFlagsFinal, false, \ 4.33 "Print all VM flags after argument and ergonomic processing") \ 4.34 \ 4.35 + notproduct(bool, PrintFlagsWithComments, false, \ 4.36 + "Print all VM flags with default values and descriptions and exit")\ 4.37 + \ 4.38 diagnostic(bool, SerializeVMOutput, true, \ 4.39 "Use a mutex to serialize output to tty and hotspot.log") \ 4.40 \
5.1 --- a/src/share/vm/utilities/macros.hpp Wed Sep 01 00:40:05 2010 -0700 5.2 +++ b/src/share/vm/utilities/macros.hpp Tue Sep 07 11:38:09 2010 -0400 5.3 @@ -76,12 +76,14 @@ 5.4 #ifdef PRODUCT 5.5 #define PRODUCT_ONLY(code) code 5.6 #define NOT_PRODUCT(code) 5.7 +#define NOT_PRODUCT_ARG(arg) 5.8 #define PRODUCT_RETURN {} 5.9 #define PRODUCT_RETURN0 { return 0; } 5.10 #define PRODUCT_RETURN_(code) { code } 5.11 #else // PRODUCT 5.12 #define PRODUCT_ONLY(code) 5.13 #define NOT_PRODUCT(code) code 5.14 +#define NOT_PRODUCT_ARG(arg) arg, 5.15 #define PRODUCT_RETURN /*next token must be ;*/ 5.16 #define PRODUCT_RETURN0 /*next token must be ;*/ 5.17 #define PRODUCT_RETURN_(code) /*next token must be ;*/