Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(819)

Side by Side Diff: src/flags.cc

Issue 363323003: More OStreamsUse OStreams more often. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebased and polished. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/elements-kind.cc ('k') | src/frames.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <ctype.h> 5 #include <ctype.h>
6 #include <stdlib.h> 6 #include <stdlib.h>
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/assembler.h" 10 #include "src/assembler.h"
11 #include "src/base/platform/platform.h" 11 #include "src/base/platform/platform.h"
12 #include "src/smart-pointers.h" 12 #include "src/ostreams.h"
13 #include "src/string-stream.h"
14 13
15 namespace v8 { 14 namespace v8 {
16 namespace internal { 15 namespace internal {
17 16
18 // Define all of our flags. 17 // Define all of our flags.
19 #define FLAG_MODE_DEFINE 18 #define FLAG_MODE_DEFINE
20 #include "src/flag-definitions.h" // NOLINT 19 #include "src/flag-definitions.h" // NOLINT
21 20
22 // Define all of our flags default values. 21 // Define all of our flags default values.
23 #define FLAG_MODE_DEFINE_DEFAULTS 22 #define FLAG_MODE_DEFINE_DEFAULTS
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 case Flag::TYPE_INT: return "int"; 174 case Flag::TYPE_INT: return "int";
176 case Flag::TYPE_FLOAT: return "float"; 175 case Flag::TYPE_FLOAT: return "float";
177 case Flag::TYPE_STRING: return "string"; 176 case Flag::TYPE_STRING: return "string";
178 case Flag::TYPE_ARGS: return "arguments"; 177 case Flag::TYPE_ARGS: return "arguments";
179 } 178 }
180 UNREACHABLE(); 179 UNREACHABLE();
181 return NULL; 180 return NULL;
182 } 181 }
183 182
184 183
185 static SmartArrayPointer<const char> ToString(Flag* flag) { 184 OStream& operator<<(OStream& os, const Flag& flag) { // NOLINT
186 HeapStringAllocator string_allocator; 185 switch (flag.type()) {
187 StringStream buffer(&string_allocator);
188 switch (flag->type()) {
189 case Flag::TYPE_BOOL: 186 case Flag::TYPE_BOOL:
190 buffer.Add("%s", (*flag->bool_variable() ? "true" : "false")); 187 os << (*flag.bool_variable() ? "true" : "false");
191 break; 188 break;
192 case Flag::TYPE_MAYBE_BOOL: 189 case Flag::TYPE_MAYBE_BOOL:
193 buffer.Add("%s", flag->maybe_bool_variable()->has_value 190 os << (flag.maybe_bool_variable()->has_value
194 ? (flag->maybe_bool_variable()->value ? "true" : "false") 191 ? (flag.maybe_bool_variable()->value ? "true" : "false")
195 : "unset"); 192 : "unset");
196 break; 193 break;
197 case Flag::TYPE_INT: 194 case Flag::TYPE_INT:
198 buffer.Add("%d", *flag->int_variable()); 195 os << *flag.int_variable();
199 break; 196 break;
200 case Flag::TYPE_FLOAT: 197 case Flag::TYPE_FLOAT:
201 buffer.Add("%f", FmtElm(*flag->float_variable())); 198 os << *flag.float_variable();
202 break; 199 break;
203 case Flag::TYPE_STRING: { 200 case Flag::TYPE_STRING: {
204 const char* str = flag->string_value(); 201 const char* str = flag.string_value();
205 buffer.Add("%s", str ? str : "NULL"); 202 os << (str ? str : "NULL");
206 break; 203 break;
207 } 204 }
208 case Flag::TYPE_ARGS: { 205 case Flag::TYPE_ARGS: {
209 JSArguments args = *flag->args_variable(); 206 JSArguments args = *flag.args_variable();
210 if (args.argc > 0) { 207 if (args.argc > 0) {
211 buffer.Add("%s", args[0]); 208 os << args[0];
212 for (int i = 1; i < args.argc; i++) { 209 for (int i = 1; i < args.argc; i++) {
213 buffer.Add(" %s", args[i]); 210 os << args[i];
214 } 211 }
215 } 212 }
216 break; 213 break;
217 } 214 }
218 } 215 }
219 return buffer.ToCString(); 216 return os;
220 } 217 }
221 218
222 219
223 // static 220 // static
224 List<const char*>* FlagList::argv() { 221 List<const char*>* FlagList::argv() {
225 List<const char*>* args = new List<const char*>(8); 222 List<const char*>* args = new List<const char*>(8);
226 Flag* args_flag = NULL; 223 Flag* args_flag = NULL;
227 for (size_t i = 0; i < num_flags; ++i) { 224 for (size_t i = 0; i < num_flags; ++i) {
228 Flag* f = &flags[i]; 225 Flag* f = &flags[i];
229 if (!f->IsDefault()) { 226 if (!f->IsDefault()) {
230 if (f->type() == Flag::TYPE_ARGS) { 227 if (f->type() == Flag::TYPE_ARGS) {
231 ASSERT(args_flag == NULL); 228 ASSERT(args_flag == NULL);
232 args_flag = f; // Must be last in arguments. 229 args_flag = f; // Must be last in arguments.
233 continue; 230 continue;
234 } 231 }
235 HeapStringAllocator string_allocator; 232 {
236 StringStream buffer(&string_allocator); 233 bool disabled = f->type() == Flag::TYPE_BOOL && !*f->bool_variable();
237 if (f->type() != Flag::TYPE_BOOL || *(f->bool_variable())) { 234 OStringStream os;
238 buffer.Add("--%s", f->name()); 235 os << (disabled ? "--no" : "--") << f->name();
239 } else { 236 args->Add(StrDup(os.c_str()));
240 buffer.Add("--no%s", f->name());
241 } 237 }
242 args->Add(buffer.ToCString().Detach());
243 if (f->type() != Flag::TYPE_BOOL) { 238 if (f->type() != Flag::TYPE_BOOL) {
244 args->Add(ToString(f).Detach()); 239 OStringStream os;
240 os << *f;
241 args->Add(StrDup(os.c_str()));
245 } 242 }
246 } 243 }
247 } 244 }
248 if (args_flag != NULL) { 245 if (args_flag != NULL) {
249 HeapStringAllocator string_allocator; 246 OStringStream os;
250 StringStream buffer(&string_allocator); 247 os << "--" << args_flag->name();
251 buffer.Add("--%s", args_flag->name()); 248 args->Add(StrDup(os.c_str()));
252 args->Add(buffer.ToCString().Detach());
253 JSArguments jsargs = *args_flag->args_variable(); 249 JSArguments jsargs = *args_flag->args_variable();
254 for (int j = 0; j < jsargs.argc; j++) { 250 for (int j = 0; j < jsargs.argc; j++) {
255 args->Add(StrDup(jsargs[j])); 251 args->Add(StrDup(jsargs[j]));
256 } 252 }
257 } 253 }
258 return args; 254 return args;
259 } 255 }
260 256
261 257
262 inline char NormalizeChar(char ch) { 258 inline char NormalizeChar(char ch) {
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 } 510 }
515 } 511 }
516 512
517 513
518 // static 514 // static
519 void FlagList::PrintHelp() { 515 void FlagList::PrintHelp() {
520 CpuFeatures::Probe(false); 516 CpuFeatures::Probe(false);
521 CpuFeatures::PrintTarget(); 517 CpuFeatures::PrintTarget();
522 CpuFeatures::PrintFeatures(); 518 CpuFeatures::PrintFeatures();
523 519
524 printf("Usage:\n"); 520 OFStream os(stdout);
525 printf(" shell [options] -e string\n"); 521 os << "Usage:\n"
526 printf(" execute string in V8\n"); 522 << " shell [options] -e string\n"
527 printf(" shell [options] file1 file2 ... filek\n"); 523 << " execute string in V8\n"
528 printf(" run JavaScript scripts in file1, file2, ..., filek\n"); 524 << " shell [options] file1 file2 ... filek\n"
529 printf(" shell [options]\n"); 525 << " run JavaScript scripts in file1, file2, ..., filek\n"
530 printf(" shell [options] --shell [file1 file2 ... filek]\n"); 526 << " shell [options]\n"
531 printf(" run an interactive JavaScript shell\n"); 527 << " shell [options] --shell [file1 file2 ... filek]\n"
532 printf(" d8 [options] file1 file2 ... filek\n"); 528 << " run an interactive JavaScript shell\n"
533 printf(" d8 [options]\n"); 529 << " d8 [options] file1 file2 ... filek\n"
534 printf(" d8 [options] --shell [file1 file2 ... filek]\n"); 530 << " d8 [options]\n"
535 printf(" run the new debugging shell\n\n"); 531 << " d8 [options] --shell [file1 file2 ... filek]\n"
536 printf("Options:\n"); 532 << " run the new debugging shell\n\n"
533 << "Options:\n";
537 for (size_t i = 0; i < num_flags; ++i) { 534 for (size_t i = 0; i < num_flags; ++i) {
538 Flag* f = &flags[i]; 535 Flag* f = &flags[i];
539 SmartArrayPointer<const char> value = ToString(f); 536 os << " --" << f->name() << " (" << f->comment() << ")\n"
540 printf(" --%s (%s)\n type: %s default: %s\n", 537 << " type: " << Type2String(f->type()) << " default: " << *f
541 f->name(), f->comment(), Type2String(f->type()), value.get()); 538 << "\n";
542 } 539 }
543 } 540 }
544 541
545 542
546 // static 543 // static
547 void FlagList::EnforceFlagImplications() { 544 void FlagList::EnforceFlagImplications() {
548 #define FLAG_MODE_DEFINE_IMPLICATIONS 545 #define FLAG_MODE_DEFINE_IMPLICATIONS
549 #include "src/flag-definitions.h" 546 #include "src/flag-definitions.h"
550 #undef FLAG_MODE_DEFINE_IMPLICATIONS 547 #undef FLAG_MODE_DEFINE_IMPLICATIONS
551 } 548 }
552 549
553 } } // namespace v8::internal 550 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/elements-kind.cc ('k') | src/frames.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698