void Options::dumpOptionsIfNeeded() { if (Options::showOptions()) { DumpLevel level = static_cast<DumpLevel>(Options::showOptions()); if (level > DumpLevel::Verbose) level = DumpLevel::Verbose; const char* title = nullptr; switch (level) { case DumpLevel::None: break; case DumpLevel::Overridden: title = "Overridden JSC options:"; break; case DumpLevel::All: title = "All JSC options:"; break; case DumpLevel::Verbose: title = "All JSC options with descriptions:"; break; } StringBuilder builder; dumpAllOptions(builder, level, title, nullptr, " ", "\n", ShowDefaults); dataLog(builder.toString()); } }
void Options::initialize() { // Initialize each of the options with their default values: #define FOR_EACH_OPTION(type_, name_, defaultValue_, description_) \ name_() = defaultValue_; \ name_##Default() = defaultValue_; JSC_OPTIONS(FOR_EACH_OPTION) #undef FOR_EACH_OPTION // It *probably* makes sense for other platforms to enable this. #if PLATFORM(IOS) && CPU(ARM64) enableLLVMFastISel() = true; #endif // Allow environment vars to override options if applicable. // The evn var should be the name of the option prefixed with // "JSC_". #define FOR_EACH_OPTION(type_, name_, defaultValue_, description_) \ overrideOptionWithHeuristic(name_(), "JSC_" #name_); JSC_OPTIONS(FOR_EACH_OPTION) #undef FOR_EACH_OPTION #if 0 ; // Deconfuse editors that do auto indentation #endif recomputeDependentOptions(); // Do range checks where needed and make corrections to the options: ASSERT(Options::thresholdForOptimizeAfterLongWarmUp() >= Options::thresholdForOptimizeAfterWarmUp()); ASSERT(Options::thresholdForOptimizeAfterWarmUp() >= Options::thresholdForOptimizeSoon()); ASSERT(Options::thresholdForOptimizeAfterWarmUp() >= 0); if (Options::showOptions()) { DumpLevel level = static_cast<DumpLevel>(Options::showOptions()); if (level > DumpLevel::Verbose) level = DumpLevel::Verbose; const char* title = nullptr; switch (level) { case DumpLevel::None: break; case DumpLevel::Overridden: title = "Overridden JSC options:"; break; case DumpLevel::All: title = "All JSC options:"; break; case DumpLevel::Verbose: title = "All JSC options with descriptions:"; break; } dumpAllOptions(level, title); } }
void Options::dumpAllOptions(FILE* stream, DumpLevel level, const char* title) { StringBuilder builder; dumpAllOptions(builder, level, title, nullptr, " ", "\n", ShowDefaults); fprintf(stream, "%s", builder.toString().ascii().data()); }
void Options::dumpAllOptionsInALine(StringBuilder& builder) { dumpAllOptions(builder, DumpLevel::All, nullptr, " ", nullptr, nullptr, DontShowDefaults); }
void usage() { std::cout << "unknow options" << std::endl; dumpAllOptions(); }