src/share/vm/runtime/commandLineFlagConstraintList.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 8112746 Cdiff src/share/vm/runtime/commandLineFlagConstraintList.cpp

src/share/vm/runtime/commandLineFlagConstraintList.cpp

Print this page

        

*** 43,54 **** CommandLineFlagConstraintFunc_bool func, ConstraintType type) : CommandLineFlagConstraint(name, type) { _constraint=func; } ! Flag::Error apply_bool(bool* value, bool verbose) { ! return _constraint(verbose, value); } }; class CommandLineFlagConstraint_int : public CommandLineFlagConstraint { CommandLineFlagConstraintFunc_int _constraint; --- 43,54 ---- CommandLineFlagConstraintFunc_bool func, ConstraintType type) : CommandLineFlagConstraint(name, type) { _constraint=func; } ! Flag::Error apply_bool(bool value, bool verbose) { ! return _constraint(value, verbose); } }; class CommandLineFlagConstraint_int : public CommandLineFlagConstraint { CommandLineFlagConstraintFunc_int _constraint;
*** 59,70 **** CommandLineFlagConstraintFunc_int func, ConstraintType type) : CommandLineFlagConstraint(name, type) { _constraint=func; } ! Flag::Error apply_int(int* value, bool verbose) { ! return _constraint(verbose, value); } }; class CommandLineFlagConstraint_intx : public CommandLineFlagConstraint { CommandLineFlagConstraintFunc_intx _constraint; --- 59,70 ---- CommandLineFlagConstraintFunc_int func, ConstraintType type) : CommandLineFlagConstraint(name, type) { _constraint=func; } ! Flag::Error apply_int(int value, bool verbose) { ! return _constraint(value, verbose); } }; class CommandLineFlagConstraint_intx : public CommandLineFlagConstraint { CommandLineFlagConstraintFunc_intx _constraint;
*** 75,86 **** CommandLineFlagConstraintFunc_intx func, ConstraintType type) : CommandLineFlagConstraint(name, type) { _constraint=func; } ! Flag::Error apply_intx(intx* value, bool verbose) { ! return _constraint(verbose, value); } }; class CommandLineFlagConstraint_uint : public CommandLineFlagConstraint { CommandLineFlagConstraintFunc_uint _constraint; --- 75,86 ---- CommandLineFlagConstraintFunc_intx func, ConstraintType type) : CommandLineFlagConstraint(name, type) { _constraint=func; } ! Flag::Error apply_intx(intx value, bool verbose) { ! return _constraint(value, verbose); } }; class CommandLineFlagConstraint_uint : public CommandLineFlagConstraint { CommandLineFlagConstraintFunc_uint _constraint;
*** 91,102 **** CommandLineFlagConstraintFunc_uint func, ConstraintType type) : CommandLineFlagConstraint(name, type) { _constraint=func; } ! Flag::Error apply_uint(uint* value, bool verbose) { ! return _constraint(verbose, value); } }; class CommandLineFlagConstraint_uintx : public CommandLineFlagConstraint { CommandLineFlagConstraintFunc_uintx _constraint; --- 91,102 ---- CommandLineFlagConstraintFunc_uint func, ConstraintType type) : CommandLineFlagConstraint(name, type) { _constraint=func; } ! Flag::Error apply_uint(uint value, bool verbose) { ! return _constraint(value, verbose); } }; class CommandLineFlagConstraint_uintx : public CommandLineFlagConstraint { CommandLineFlagConstraintFunc_uintx _constraint;
*** 107,118 **** CommandLineFlagConstraintFunc_uintx func, ConstraintType type) : CommandLineFlagConstraint(name, type) { _constraint=func; } ! Flag::Error apply_uintx(uintx* value, bool verbose) { ! return _constraint(verbose, value); } }; class CommandLineFlagConstraint_uint64_t : public CommandLineFlagConstraint { CommandLineFlagConstraintFunc_uint64_t _constraint; --- 107,118 ---- CommandLineFlagConstraintFunc_uintx func, ConstraintType type) : CommandLineFlagConstraint(name, type) { _constraint=func; } ! Flag::Error apply_uintx(uintx value, bool verbose) { ! return _constraint(value, verbose); } }; class CommandLineFlagConstraint_uint64_t : public CommandLineFlagConstraint { CommandLineFlagConstraintFunc_uint64_t _constraint;
*** 123,134 **** CommandLineFlagConstraintFunc_uint64_t func, ConstraintType type) : CommandLineFlagConstraint(name, type) { _constraint=func; } ! Flag::Error apply_uint64_t(uint64_t* value, bool verbose) { ! return _constraint(verbose, value); } }; class CommandLineFlagConstraint_size_t : public CommandLineFlagConstraint { CommandLineFlagConstraintFunc_size_t _constraint; --- 123,134 ---- CommandLineFlagConstraintFunc_uint64_t func, ConstraintType type) : CommandLineFlagConstraint(name, type) { _constraint=func; } ! Flag::Error apply_uint64_t(uint64_t value, bool verbose) { ! return _constraint(value, verbose); } }; class CommandLineFlagConstraint_size_t : public CommandLineFlagConstraint { CommandLineFlagConstraintFunc_size_t _constraint;
*** 139,150 **** CommandLineFlagConstraintFunc_size_t func, ConstraintType type) : CommandLineFlagConstraint(name, type) { _constraint=func; } ! Flag::Error apply_size_t(size_t* value, bool verbose) { ! return _constraint(verbose, value); } }; class CommandLineFlagConstraint_double : public CommandLineFlagConstraint { CommandLineFlagConstraintFunc_double _constraint; --- 139,150 ---- CommandLineFlagConstraintFunc_size_t func, ConstraintType type) : CommandLineFlagConstraint(name, type) { _constraint=func; } ! Flag::Error apply_size_t(size_t value, bool verbose) { ! return _constraint(value, verbose); } }; class CommandLineFlagConstraint_double : public CommandLineFlagConstraint { CommandLineFlagConstraintFunc_double _constraint;
*** 155,166 **** CommandLineFlagConstraintFunc_double func, ConstraintType type) : CommandLineFlagConstraint(name, type) { _constraint=func; } ! Flag::Error apply_double(double* value, bool verbose) { ! return _constraint(verbose, value); } }; // No constraint emitting void emit_constraint_no(...) { /* NOP */ } --- 155,166 ---- CommandLineFlagConstraintFunc_double func, ConstraintType type) : CommandLineFlagConstraint(name, type) { _constraint=func; } ! Flag::Error apply_double(double value, bool verbose) { ! return _constraint(value, verbose); } }; // No constraint emitting void emit_constraint_no(...) { /* NOP */ }
*** 224,234 **** GrowableArray<CommandLineFlagConstraint*>* CommandLineFlagConstraintList::_constraints = NULL; CommandLineFlagConstraint::ConstraintType CommandLineFlagConstraintList::_validating_type = CommandLineFlagConstraint::AtParse; // Check the ranges of all flags that have them or print them out and exit if requested void CommandLineFlagConstraintList::init(void) { - _constraints = new (ResourceObj::C_HEAP, mtInternal) GrowableArray<CommandLineFlagConstraint*>(INITIAL_CONSTRAINTS_SIZE, true); emit_constraint_no(NULL RUNTIME_FLAGS(EMIT_CONSTRAINT_DEVELOPER_FLAG, EMIT_CONSTRAINT_PD_DEVELOPER_FLAG, EMIT_CONSTRAINT_PRODUCT_FLAG, --- 224,233 ----
*** 304,378 **** return found; } // Check constraints for specific constraint type. bool CommandLineFlagConstraintList::check_constraints(CommandLineFlagConstraint::ConstraintType type) { - //#define PRINT_CONSTRAINTS_SIZES - #ifdef PRINT_CONSTRAINTS_SIZES - { - size_t size_constraints = sizeof(CommandLineFlagConstraintList); - for (int i=0; i<length(); i++) { - size_constraints += sizeof(CommandLineFlagConstraint); - CommandLineFlagConstraint* constraint = at(i); - const char* name = constraint->name(); - Flag* flag = Flag::find_flag(name, strlen(name), true, true); - if (flag->is_bool()) { - size_constraints += sizeof(CommandLineFlagConstraintFunc_bool); - size_constraints += sizeof(CommandLineFlagConstraint*); - } else if (flag->is_intx()) { - size_constraints += sizeof(CommandLineFlagConstraintFunc_intx); - size_constraints += sizeof(CommandLineFlagConstraint*); - } else if (flag->is_uintx()) { - size_constraints += sizeof(CommandLineFlagConstraintFunc_uintx); - size_constraints += sizeof(CommandLineFlagConstraint*); - } else if (flag->is_uint64_t()) { - size_constraints += sizeof(CommandLineFlagConstraintFunc_uint64_t); - size_constraints += sizeof(CommandLineFlagConstraint*); - } else if (flag->is_size_t()) { - size_constraints += sizeof(CommandLineFlagConstraintFunc_size_t); - size_constraints += sizeof(CommandLineFlagConstraint*); - } else if (flag->is_double()) { - size_constraints += sizeof(CommandLineFlagConstraintFunc_double); - size_constraints += sizeof(CommandLineFlagConstraint*); - } - } - fprintf(stderr, "Size of %d constraints: " SIZE_FORMAT " bytes\n", - length(), size_constraints); - } - #endif // PRINT_CONSTRAINTS_SIZES - // Skip if we already checked. if (type < _validating_type) { return true; } _validating_type = type; bool status = true; for (int i=0; i<length(); i++) { CommandLineFlagConstraint* constraint = at(i); if (type != constraint->type()) continue; ! const char*name = constraint->name(); Flag* flag = Flag::find_flag(name, strlen(name), true, true); if (flag != NULL) { if (flag->is_bool()) { bool value = flag->get_bool(); ! if (constraint->apply_bool(&value, true) != Flag::SUCCESS) status = false; } else if (flag->is_intx()) { intx value = flag->get_intx(); ! if (constraint->apply_intx(&value, true) != Flag::SUCCESS) status = false; } else if (flag->is_uintx()) { uintx value = flag->get_uintx(); ! if (constraint->apply_uintx(&value, true) != Flag::SUCCESS) status = false; } else if (flag->is_uint64_t()) { uint64_t value = flag->get_uint64_t(); ! if (constraint->apply_uint64_t(&value, true) != Flag::SUCCESS) status = false; } else if (flag->is_size_t()) { size_t value = flag->get_size_t(); ! if (constraint->apply_size_t(&value, true) != Flag::SUCCESS) status = false; } else if (flag->is_double()) { double value = flag->get_double(); ! if (constraint->apply_double(&value, true) != Flag::SUCCESS) status = false; } } } return status; } --- 303,346 ---- return found; } // Check constraints for specific constraint type. bool CommandLineFlagConstraintList::check_constraints(CommandLineFlagConstraint::ConstraintType type) { // Skip if we already checked. if (type < _validating_type) { return true; } _validating_type = type; bool status = true; for (int i=0; i<length(); i++) { CommandLineFlagConstraint* constraint = at(i); if (type != constraint->type()) continue; ! const char* name = constraint->name(); Flag* flag = Flag::find_flag(name, strlen(name), true, true); + // We must check for NULL here as lp64_product flags on 32 bit architecture + // can generate constraint check (despite that they are declared as constants), + // but they will not be returned by Flag::find_flag() if (flag != NULL) { if (flag->is_bool()) { bool value = flag->get_bool(); ! if (constraint->apply_bool(value, true) != Flag::SUCCESS) status = false; } else if (flag->is_intx()) { intx value = flag->get_intx(); ! if (constraint->apply_intx(value, true) != Flag::SUCCESS) status = false; } else if (flag->is_uintx()) { uintx value = flag->get_uintx(); ! if (constraint->apply_uintx(value, true) != Flag::SUCCESS) status = false; } else if (flag->is_uint64_t()) { uint64_t value = flag->get_uint64_t(); ! if (constraint->apply_uint64_t(value, true) != Flag::SUCCESS) status = false; } else if (flag->is_size_t()) { size_t value = flag->get_size_t(); ! if (constraint->apply_size_t(value, true) != Flag::SUCCESS) status = false; } else if (flag->is_double()) { double value = flag->get_double(); ! if (constraint->apply_double(value, true) != Flag::SUCCESS) status = false; } } } return status; }
src/share/vm/runtime/commandLineFlagConstraintList.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File