hotspot/src/share/vm/runtime/commandLineFlagRangeList.cpp
changeset 31995 aa4049b4184a
parent 31592 43f48e165466
child 32351 1da9b960b3d4
equal deleted inserted replaced
31994:3721b7aa3a0d 31995:aa4049b4184a
   363     range->print(st);
   363     range->print(st);
   364   } else if (unspecified == true) {
   364   } else if (unspecified == true) {
   365     st->print("[                           ...                           ]");
   365     st->print("[                           ...                           ]");
   366   }
   366   }
   367 }
   367 }
       
   368 
       
   369 bool CommandLineFlagRangeList::check_ranges() {
       
   370 //#define PRINT_RANGES_SIZES
       
   371 #ifdef PRINT_RANGES_SIZES
       
   372   {
       
   373     size_t size_ranges = sizeof(CommandLineFlagRangeList);
       
   374     for (int i=0; i<length(); i++) {
       
   375       size_ranges += sizeof(CommandLineFlagRange);
       
   376       CommandLineFlagRange* range = at(i);
       
   377       const char* name = range->name();
       
   378       Flag* flag = Flag::find_flag(name, strlen(name), true, true);
       
   379       if (flag->is_intx()) {
       
   380         size_ranges += 2*sizeof(intx);
       
   381         size_ranges += sizeof(CommandLineFlagRange*);
       
   382       } else if (flag->is_uintx()) {
       
   383         size_ranges += 2*sizeof(uintx);
       
   384         size_ranges += sizeof(CommandLineFlagRange*);
       
   385       } else if (flag->is_uint64_t()) {
       
   386         size_ranges += 2*sizeof(uint64_t);
       
   387         size_ranges += sizeof(CommandLineFlagRange*);
       
   388       } else if (flag->is_size_t()) {
       
   389         size_ranges += 2*sizeof(size_t);
       
   390         size_ranges += sizeof(CommandLineFlagRange*);
       
   391       } else if (flag->is_double()) {
       
   392         size_ranges += 2*sizeof(double);
       
   393         size_ranges += sizeof(CommandLineFlagRange*);
       
   394       }
       
   395     }
       
   396     fprintf(stderr, "Size of %d ranges: " SIZE_FORMAT " bytes\n",
       
   397             length(), size_ranges);
       
   398   }
       
   399 #endif // PRINT_RANGES_SIZES
       
   400 
       
   401   // Check ranges.
       
   402   bool status = true;
       
   403   for (int i=0; i<length(); i++) {
       
   404     CommandLineFlagRange* range = at(i);
       
   405     const char* name = range->name();
       
   406     Flag* flag = Flag::find_flag(name, strlen(name), true, true);
       
   407     if (flag != NULL) {
       
   408       if (flag->is_intx()) {
       
   409         intx value = flag->get_intx();
       
   410         if (range->check_intx(value, true) != Flag::SUCCESS) status = false;
       
   411       } else if (flag->is_uintx()) {
       
   412         uintx value = flag->get_uintx();
       
   413         if (range->check_uintx(value, true) != Flag::SUCCESS) status = false;
       
   414       } else if (flag->is_uint64_t()) {
       
   415         uint64_t value = flag->get_uint64_t();
       
   416         if (range->check_uint64_t(value, true) != Flag::SUCCESS) status = false;
       
   417       } else if (flag->is_size_t()) {
       
   418         size_t value = flag->get_size_t();
       
   419         if (range->check_size_t(value, true) != Flag::SUCCESS) status = false;
       
   420       } else if (flag->is_double()) {
       
   421         double value = flag->get_double();
       
   422         if (range->check_double(value, true) != Flag::SUCCESS) status = false;
       
   423       }
       
   424     }
       
   425   }
       
   426   return status;
       
   427 }