globals.cpp revision 342
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara * This code is free software; you can redistribute it and/or modify it
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara * under the terms of the GNU General Public License version 2 only, as
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara * published by the Free Software Foundation.
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara * This code is distributed in the hope that it will be useful, but WITHOUT
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara * version 2 for more details (a copy is included in the LICENSE file that
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara * accompanied this code).
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara * You should have received a copy of the GNU General Public License version
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara * 2 along with this work; if not, write to the Free Software Foundation,
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara * CA 95054 USA or visit www.sun.com if you need additional information or
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara * have any questions.
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara# include "incls/_precompiled.incl"
65e99be301d5a19db33f25841f671756e8dbb9b5ludovicp# include "incls/_globals.cpp.incl"
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergaraRUNTIME_FLAGS(MATERIALIZE_DEVELOPER_FLAG, MATERIALIZE_PD_DEVELOPER_FLAG, \
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara MATERIALIZE_PRODUCT_FLAG, MATERIALIZE_PD_PRODUCT_FLAG, \
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara MATERIALIZE_DIAGNOSTIC_FLAG, MATERIALIZE_NOTPRODUCT_FLAG, \
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara MATERIALIZE_MANAGEABLE_FLAG, MATERIALIZE_PRODUCT_RW_FLAG, \
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergaraRUNTIME_OS_FLAGS(MATERIALIZE_DEVELOPER_FLAG, MATERIALIZE_PD_DEVELOPER_FLAG, \
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara MATERIALIZE_PRODUCT_FLAG, MATERIALIZE_PD_PRODUCT_FLAG, \
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara MATERIALIZE_DIAGNOSTIC_FLAG, MATERIALIZE_NOTPRODUCT_FLAG)
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara return strcmp(name, "UnlockDiagnosticVMOptions") == 0;
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara return true;
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara return (strcmp(kind, "{manageable}") == 0 || strcmp(kind, "{product rw}") == 0);
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara// All flags except "manageable" are assumed internal flags.
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara// Long term, we need to define a mechanism to specify which flags
d34249725651766137db53597def104789089482jvergara// are external/stable and change this function accordingly.
d34249725651766137db53597def104789089482jvergara// Length of format string (e.g. "%.1234s") for printing ccstr below
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara st->print("%5s %-35s %c= ", type, name, (origin != DEFAULT ? ':' : ' '));
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara if (is_bool()) st->print("%-16s", get_bool() ? "true" : "false");
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara const char* eol;
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara size_t llen = pointer_delta(eol, cp, sizeof(char));
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara st->print("-XX:%s%s", get_bool() ? "+" : "-", name);
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara } else if (is_intx()) {
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara st->print("-XX:%s=" INTX_FORMAT, name, get_intx());
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara } else if (is_uintx()) {
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara st->print("-XX:%s=" UINTX_FORMAT, name, get_uintx());
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara } else if (is_ccstr()) {
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara // Need to turn embedded '\n's back into separate arguments
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara // Not so efficient to print one character at a time,
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara // but the choice is to do the transformation to a buffer
27f8adec83293fb8bd3bfa37175322b0ee3bb933jvergara // and print that. And this need not be efficient.
81436082c2366c10d135c69654ca44b9c1618f7ejvergara switch (*cp) {
#define RUNTIME_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{product}", DEFAULT },
#define RUNTIME_PD_PRODUCT_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{pd product}", DEFAULT },
#define RUNTIME_DIAGNOSTIC_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{diagnostic}", DEFAULT },
#define RUNTIME_MANAGEABLE_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{manageable}", DEFAULT },
#define RUNTIME_PRODUCT_RW_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{product rw}", DEFAULT },
#ifdef PRODUCT
#define RUNTIME_DEVELOP_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "", DEFAULT },
#define RUNTIME_PD_DEVELOP_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{pd}", DEFAULT },
#define RUNTIME_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{notproduct}", DEFAULT },
#ifdef _LP64
#define RUNTIME_LP64_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{lp64_product}", DEFAULT },
#define C1_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C1 product}", DEFAULT },
#define C1_PD_PRODUCT_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{C1 pd product}", DEFAULT },
#ifdef PRODUCT
#define C1_DEVELOP_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C1}", DEFAULT },
#define C1_PD_DEVELOP_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{C1 pd}", DEFAULT },
#define C1_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C1 notproduct}", DEFAULT },
#define C2_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C2 product}", DEFAULT },
#define C2_PD_PRODUCT_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{C2 pd product}", DEFAULT },
#define C2_DIAGNOSTIC_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C2 diagnostic}", DEFAULT },
#ifdef PRODUCT
#define C2_DEVELOP_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C2}", DEFAULT },
#define C2_PD_DEVELOP_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{C2 pd}", DEFAULT },
#define C2_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C2 notproduct}", DEFAULT },
RUNTIME_FLAGS(RUNTIME_DEVELOP_FLAG_STRUCT, RUNTIME_PD_DEVELOP_FLAG_STRUCT, RUNTIME_PRODUCT_FLAG_STRUCT, RUNTIME_PD_PRODUCT_FLAG_STRUCT, RUNTIME_DIAGNOSTIC_FLAG_STRUCT, RUNTIME_NOTPRODUCT_FLAG_STRUCT, RUNTIME_MANAGEABLE_FLAG_STRUCT, RUNTIME_PRODUCT_RW_FLAG_STRUCT, RUNTIME_LP64_PRODUCT_FLAG_STRUCT)
RUNTIME_OS_FLAGS(RUNTIME_DEVELOP_FLAG_STRUCT, RUNTIME_PD_DEVELOP_FLAG_STRUCT, RUNTIME_PRODUCT_FLAG_STRUCT, RUNTIME_PD_PRODUCT_FLAG_STRUCT, RUNTIME_DIAGNOSTIC_FLAG_STRUCT, RUNTIME_NOTPRODUCT_FLAG_STRUCT)
#ifndef SERIALGC
G1_FLAGS(RUNTIME_DEVELOP_FLAG_STRUCT, RUNTIME_PD_DEVELOP_FLAG_STRUCT, RUNTIME_PRODUCT_FLAG_STRUCT, RUNTIME_PD_PRODUCT_FLAG_STRUCT, RUNTIME_DIAGNOSTIC_FLAG_STRUCT, RUNTIME_NOTPRODUCT_FLAG_STRUCT, RUNTIME_MANAGEABLE_FLAG_STRUCT, RUNTIME_PRODUCT_RW_FLAG_STRUCT)
#ifdef COMPILER1
C1_FLAGS(C1_DEVELOP_FLAG_STRUCT, C1_PD_DEVELOP_FLAG_STRUCT, C1_PRODUCT_FLAG_STRUCT, C1_PD_PRODUCT_FLAG_STRUCT, C1_NOTPRODUCT_FLAG_STRUCT)
#ifdef COMPILER2
C2_FLAGS(C2_DEVELOP_FLAG_STRUCT, C2_PD_DEVELOP_FLAG_STRUCT, C2_PRODUCT_FLAG_STRUCT, C2_PD_PRODUCT_FLAG_STRUCT, C2_DIAGNOSTIC_FLAG_STRUCT, C2_NOTPRODUCT_FLAG_STRUCT)
return NULL;
return current;
return NULL;
void CommandLineFlagsEx::boolAtPut(CommandLineFlagWithType flag, bool value, FlagValueOrigin origin) {
void CommandLineFlagsEx::intxAtPut(CommandLineFlagWithType flag, intx value, FlagValueOrigin origin) {
void CommandLineFlagsEx::uintxAtPut(CommandLineFlagWithType flag, uintx value, FlagValueOrigin origin) {
void CommandLineFlagsEx::doubleAtPut(CommandLineFlagWithType flag, double value, FlagValueOrigin origin) {
void CommandLineFlagsEx::ccstrAtPut(CommandLineFlagWithType flag, ccstr value, FlagValueOrigin origin) {
int length= 0;
for (int i = 0; i < length; i++) {
#ifndef PRODUCT
int length= 0;
for (int i = 0; i < length; i++) {