summaryrefslogtreecommitdiff
path: root/runtime/parsed_options.cc
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/parsed_options.cc')
-rw-r--r--runtime/parsed_options.cc46
1 files changed, 25 insertions, 21 deletions
diff --git a/runtime/parsed_options.cc b/runtime/parsed_options.cc
index 57d32bb476..084e8f6a0e 100644
--- a/runtime/parsed_options.cc
+++ b/runtime/parsed_options.cc
@@ -251,7 +251,7 @@ bool ParsedOptions::Parse(const Runtime::Options& options, bool ignore_unrecogni
// TODO: support -Djava.class.path
i++;
if (i == options.size()) {
- Usage("Missing required class path value for %s", option.c_str());
+ Usage("Missing required class path value for %s\n", option.c_str());
return false;
}
const StringPiece& value = options[i].first;
@@ -279,35 +279,35 @@ bool ParsedOptions::Parse(const Runtime::Options& options, bool ignore_unrecogni
} else if (StartsWith(option, "-Xms")) {
size_t size = ParseMemoryOption(option.substr(strlen("-Xms")).c_str(), 1024);
if (size == 0) {
- Usage("Failed to parse memory option %s", option.c_str());
+ Usage("Failed to parse memory option %s\n", option.c_str());
return false;
}
heap_initial_size_ = size;
} else if (StartsWith(option, "-Xmx")) {
size_t size = ParseMemoryOption(option.substr(strlen("-Xmx")).c_str(), 1024);
if (size == 0) {
- Usage("Failed to parse memory option %s", option.c_str());
+ Usage("Failed to parse memory option %s\n", option.c_str());
return false;
}
heap_maximum_size_ = size;
} else if (StartsWith(option, "-XX:HeapGrowthLimit=")) {
size_t size = ParseMemoryOption(option.substr(strlen("-XX:HeapGrowthLimit=")).c_str(), 1024);
if (size == 0) {
- Usage("Failed to parse memory option %s", option.c_str());
+ Usage("Failed to parse memory option %s\n", option.c_str());
return false;
}
heap_growth_limit_ = size;
} else if (StartsWith(option, "-XX:HeapMinFree=")) {
size_t size = ParseMemoryOption(option.substr(strlen("-XX:HeapMinFree=")).c_str(), 1024);
if (size == 0) {
- Usage("Failed to parse memory option %s", option.c_str());
+ Usage("Failed to parse memory option %s\n", option.c_str());
return false;
}
heap_min_free_ = size;
} else if (StartsWith(option, "-XX:HeapMaxFree=")) {
size_t size = ParseMemoryOption(option.substr(strlen("-XX:HeapMaxFree=")).c_str(), 1024);
if (size == 0) {
- Usage("Failed to parse memory option %s", option.c_str());
+ Usage("Failed to parse memory option %s\n", option.c_str());
return false;
}
heap_max_free_ = size;
@@ -316,7 +316,7 @@ bool ParsedOptions::Parse(const Runtime::Options& options, bool ignore_unrecogni
return false;
}
} else if (StartsWith(option, "-XX:ForegroundHeapGrowthMultiplier=")) {
- if (!ParseDouble(option, '=', 0.1, 0.9, &foreground_heap_growth_multiplier_)) {
+ if (!ParseDouble(option, '=', 0.1, 10.0, &foreground_heap_growth_multiplier_)) {
return false;
}
} else if (StartsWith(option, "-XX:ParallelGCThreads=")) {
@@ -330,7 +330,7 @@ bool ParsedOptions::Parse(const Runtime::Options& options, bool ignore_unrecogni
} else if (StartsWith(option, "-Xss")) {
size_t size = ParseMemoryOption(option.substr(strlen("-Xss")).c_str(), 1);
if (size == 0) {
- Usage("Failed to parse memory option %s", option.c_str());
+ Usage("Failed to parse memory option %s\n", option.c_str());
return false;
}
stack_size_ = size;
@@ -398,7 +398,7 @@ bool ParsedOptions::Parse(const Runtime::Options& options, bool ignore_unrecogni
(gc_option == "noverifycardtable")) {
// Ignored for backwards compatibility.
} else {
- Usage("Unknown -Xgc option %s", gc_option.c_str());
+ Usage("Unknown -Xgc option %s\n", gc_option.c_str());
return false;
}
}
@@ -411,7 +411,7 @@ bool ParsedOptions::Parse(const Runtime::Options& options, bool ignore_unrecogni
if (collector_type != gc::kCollectorTypeNone) {
background_collector_type_ = collector_type;
} else {
- Usage("Unknown -XX:BackgroundGC option %s", substring.c_str());
+ Usage("Unknown -XX:BackgroundGC option %s\n", substring.c_str());
return false;
}
} else if (option == "-XX:+DisableExplicitGC") {
@@ -443,10 +443,13 @@ bool ParsedOptions::Parse(const Runtime::Options& options, bool ignore_unrecogni
} else if (verbose_options[i] == "threads") {
gLogVerbosity.threads = true;
} else {
- Usage("Unknown -verbose option %s", verbose_options[i].c_str());
+ Usage("Unknown -verbose option %s\n", verbose_options[i].c_str());
return false;
}
}
+ } else if (StartsWith(option, "-verbose-methods:")) {
+ gLogVerbosity.compiler = false;
+ Split(option.substr(strlen("-verbose-methods:")), ',', gVerboseMethods);
} else if (StartsWith(option, "-Xlockprofthreshold:")) {
if (!ParseUnsignedInteger(option, ':', &lock_profiling_threshold_)) {
return false;
@@ -476,7 +479,7 @@ bool ParsedOptions::Parse(const Runtime::Options& options, bool ignore_unrecogni
} else if (option == "abort") {
const void* hook = options[i].second;
if (hook == nullptr) {
- Usage("abort was NULL");
+ Usage("abort was NULL\n");
return false;
}
hook_abort_ = reinterpret_cast<void(*)()>(const_cast<void*>(hook));
@@ -568,14 +571,14 @@ bool ParsedOptions::Parse(const Runtime::Options& options, bool ignore_unrecogni
} else if (option == "-Xcompiler-option") {
i++;
if (i == options.size()) {
- Usage("Missing required compiler option for %s", option.c_str());
+ Usage("Missing required compiler option for %s\n", option.c_str());
return false;
}
compiler_options_.push_back(options[i].first);
} else if (option == "-Ximage-compiler-option") {
i++;
if (i == options.size()) {
- Usage("Missing required compiler option for %s", option.c_str());
+ Usage("Missing required compiler option for %s\n", option.c_str());
return false;
}
image_compiler_options_.push_back(options[i].first);
@@ -586,7 +589,7 @@ bool ParsedOptions::Parse(const Runtime::Options& options, bool ignore_unrecogni
} else if (verify_mode == "remote" || verify_mode == "all") {
verify_ = true;
} else {
- Usage("Unknown -Xverify option %s", verify_mode.c_str());
+ Usage("Unknown -Xverify option %s\n", verify_mode.c_str());
return false;
}
} else if (StartsWith(option, "-ea") ||
@@ -626,7 +629,7 @@ bool ParsedOptions::Parse(const Runtime::Options& options, bool ignore_unrecogni
StartsWith(option, "-XX:mainThreadStackSize=")) {
// Ignored for backwards compatibility.
} else if (!ignore_unrecognized) {
- Usage("Unrecognized option %s", option.c_str());
+ Usage("Unrecognized option %s\n", option.c_str());
return false;
}
}
@@ -717,6 +720,7 @@ void ParsedOptions::Usage(const char* fmt, ...) {
UsageMessage(stream, " -XX:HeapMinFree=N\n");
UsageMessage(stream, " -XX:HeapMaxFree=N\n");
UsageMessage(stream, " -XX:HeapTargetUtilization=doublevalue\n");
+ UsageMessage(stream, " -XX:ForegroundHeapGrowthMultiplier=doublevalue\n");
UsageMessage(stream, " -XX:LowMemoryMode\n");
UsageMessage(stream, " -Xprofile:{threadcpuclock,wallclock,dualclock}\n");
UsageMessage(stream, "\n");
@@ -789,7 +793,7 @@ void ParsedOptions::Usage(const char* fmt, ...) {
bool ParsedOptions::ParseStringAfterChar(const std::string& s, char c, std::string* parsed_value) {
std::string::size_type colon = s.find(c);
if (colon == std::string::npos) {
- Usage("Missing char %c in option %s", c, s.c_str());
+ Usage("Missing char %c in option %s\n", c, s.c_str());
return false;
}
// Add one to remove the char we were trimming until.
@@ -800,14 +804,14 @@ bool ParsedOptions::ParseStringAfterChar(const std::string& s, char c, std::stri
bool ParsedOptions::ParseInteger(const std::string& s, char after_char, int* parsed_value) {
std::string::size_type colon = s.find(after_char);
if (colon == std::string::npos) {
- Usage("Missing char %c in option %s", after_char, s.c_str());
+ Usage("Missing char %c in option %s\n", after_char, s.c_str());
return false;
}
const char* begin = &s[colon + 1];
char* end;
size_t result = strtoul(begin, &end, 10);
if (begin == end || *end != '\0') {
- Usage("Failed to parse integer from %s ", s.c_str());
+ Usage("Failed to parse integer from %s\n", s.c_str());
return false;
}
*parsed_value = result;
@@ -821,7 +825,7 @@ bool ParsedOptions::ParseUnsignedInteger(const std::string& s, char after_char,
return false;
}
if (i < 0) {
- Usage("Negative value %d passed for unsigned option %s", i, s.c_str());
+ Usage("Negative value %d passed for unsigned option %s\n", i, s.c_str());
return false;
}
*parsed_value = i;
@@ -840,7 +844,7 @@ bool ParsedOptions::ParseDouble(const std::string& option, char after_char,
// Ensure that we have a value, there was no cruft after it and it satisfies a sensible range.
const bool sane_val = iss.eof() && (value >= min) && (value <= max);
if (!sane_val) {
- Usage("Invalid double value %s for option %s", option.c_str());
+ Usage("Invalid double value %s for option %s\n", substring.c_str(), option.c_str());
return false;
}
*parsed_value = value;