| Index: src/flags.cc
|
| diff --git a/src/flags.cc b/src/flags.cc
|
| index 2b5e9c6e94ea85fd20726ecc957773200005a718..0f4187a43495b41e8aa151cf8486fd3f84cd8348 100644
|
| --- a/src/flags.cc
|
| +++ b/src/flags.cc
|
| @@ -9,8 +9,7 @@
|
|
|
| #include "src/assembler.h"
|
| #include "src/base/platform/platform.h"
|
| -#include "src/smart-pointers.h"
|
| -#include "src/string-stream.h"
|
| +#include "src/ostreams.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
| @@ -182,41 +181,39 @@ static const char* Type2String(Flag::FlagType type) {
|
| }
|
|
|
|
|
| -static SmartArrayPointer<const char> ToString(Flag* flag) {
|
| - HeapStringAllocator string_allocator;
|
| - StringStream buffer(&string_allocator);
|
| - switch (flag->type()) {
|
| +OStream& operator<<(OStream& os, const Flag& flag) { // NOLINT
|
| + switch (flag.type()) {
|
| case Flag::TYPE_BOOL:
|
| - buffer.Add("%s", (*flag->bool_variable() ? "true" : "false"));
|
| + os << (*flag.bool_variable() ? "true" : "false");
|
| break;
|
| case Flag::TYPE_MAYBE_BOOL:
|
| - buffer.Add("%s", flag->maybe_bool_variable()->has_value
|
| - ? (flag->maybe_bool_variable()->value ? "true" : "false")
|
| - : "unset");
|
| + os << (flag.maybe_bool_variable()->has_value
|
| + ? (flag.maybe_bool_variable()->value ? "true" : "false")
|
| + : "unset");
|
| break;
|
| case Flag::TYPE_INT:
|
| - buffer.Add("%d", *flag->int_variable());
|
| + os << *flag.int_variable();
|
| break;
|
| case Flag::TYPE_FLOAT:
|
| - buffer.Add("%f", FmtElm(*flag->float_variable()));
|
| + os << *flag.float_variable();
|
| break;
|
| case Flag::TYPE_STRING: {
|
| - const char* str = flag->string_value();
|
| - buffer.Add("%s", str ? str : "NULL");
|
| + const char* str = flag.string_value();
|
| + os << (str ? str : "NULL");
|
| break;
|
| }
|
| case Flag::TYPE_ARGS: {
|
| - JSArguments args = *flag->args_variable();
|
| + JSArguments args = *flag.args_variable();
|
| if (args.argc > 0) {
|
| - buffer.Add("%s", args[0]);
|
| + os << args[0];
|
| for (int i = 1; i < args.argc; i++) {
|
| - buffer.Add(" %s", args[i]);
|
| + os << args[i];
|
| }
|
| }
|
| break;
|
| }
|
| }
|
| - return buffer.ToCString();
|
| + return os;
|
| }
|
|
|
|
|
| @@ -232,24 +229,23 @@ List<const char*>* FlagList::argv() {
|
| args_flag = f; // Must be last in arguments.
|
| continue;
|
| }
|
| - HeapStringAllocator string_allocator;
|
| - StringStream buffer(&string_allocator);
|
| - if (f->type() != Flag::TYPE_BOOL || *(f->bool_variable())) {
|
| - buffer.Add("--%s", f->name());
|
| - } else {
|
| - buffer.Add("--no%s", f->name());
|
| + {
|
| + bool disabled = f->type() == Flag::TYPE_BOOL && !*f->bool_variable();
|
| + OStringStream os;
|
| + os << (disabled ? "--no" : "--") << f->name();
|
| + args->Add(StrDup(os.c_str()));
|
| }
|
| - args->Add(buffer.ToCString().Detach());
|
| if (f->type() != Flag::TYPE_BOOL) {
|
| - args->Add(ToString(f).Detach());
|
| + OStringStream os;
|
| + os << *f;
|
| + args->Add(StrDup(os.c_str()));
|
| }
|
| }
|
| }
|
| if (args_flag != NULL) {
|
| - HeapStringAllocator string_allocator;
|
| - StringStream buffer(&string_allocator);
|
| - buffer.Add("--%s", args_flag->name());
|
| - args->Add(buffer.ToCString().Detach());
|
| + OStringStream os;
|
| + os << "--" << args_flag->name();
|
| + args->Add(StrDup(os.c_str()));
|
| JSArguments jsargs = *args_flag->args_variable();
|
| for (int j = 0; j < jsargs.argc; j++) {
|
| args->Add(StrDup(jsargs[j]));
|
| @@ -521,24 +517,25 @@ void FlagList::PrintHelp() {
|
| CpuFeatures::PrintTarget();
|
| CpuFeatures::PrintFeatures();
|
|
|
| - printf("Usage:\n");
|
| - printf(" shell [options] -e string\n");
|
| - printf(" execute string in V8\n");
|
| - printf(" shell [options] file1 file2 ... filek\n");
|
| - printf(" run JavaScript scripts in file1, file2, ..., filek\n");
|
| - printf(" shell [options]\n");
|
| - printf(" shell [options] --shell [file1 file2 ... filek]\n");
|
| - printf(" run an interactive JavaScript shell\n");
|
| - printf(" d8 [options] file1 file2 ... filek\n");
|
| - printf(" d8 [options]\n");
|
| - printf(" d8 [options] --shell [file1 file2 ... filek]\n");
|
| - printf(" run the new debugging shell\n\n");
|
| - printf("Options:\n");
|
| + OFStream os(stdout);
|
| + os << "Usage:\n"
|
| + << " shell [options] -e string\n"
|
| + << " execute string in V8\n"
|
| + << " shell [options] file1 file2 ... filek\n"
|
| + << " run JavaScript scripts in file1, file2, ..., filek\n"
|
| + << " shell [options]\n"
|
| + << " shell [options] --shell [file1 file2 ... filek]\n"
|
| + << " run an interactive JavaScript shell\n"
|
| + << " d8 [options] file1 file2 ... filek\n"
|
| + << " d8 [options]\n"
|
| + << " d8 [options] --shell [file1 file2 ... filek]\n"
|
| + << " run the new debugging shell\n\n"
|
| + << "Options:\n";
|
| for (size_t i = 0; i < num_flags; ++i) {
|
| Flag* f = &flags[i];
|
| - SmartArrayPointer<const char> value = ToString(f);
|
| - printf(" --%s (%s)\n type: %s default: %s\n",
|
| - f->name(), f->comment(), Type2String(f->type()), value.get());
|
| + os << " --" << f->name() << " (" << f->comment() << ")\n"
|
| + << " type: " << Type2String(f->type()) << " default: " << *f
|
| + << "\n";
|
| }
|
| }
|
|
|
|
|