Merge

Tue, 07 Sep 2010 11:38:09 -0400

author
kamg
date
Tue, 07 Sep 2010 11:38:09 -0400
changeset 2125
40d7b43b6fe0
parent 2122
dee553c74493
parent 2124
1ab9e2cbfa0e
child 2126
07551f490c76

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 ;*/

mercurial