OLD | NEW |
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
404 case Flag::TYPE_ARGS: { | 404 case Flag::TYPE_ARGS: { |
405 int start_pos = (value == NULL) ? i : i - 1; | 405 int start_pos = (value == NULL) ? i : i - 1; |
406 int js_argc = *argc - start_pos; | 406 int js_argc = *argc - start_pos; |
407 const char** js_argv = NewArray<const char*>(js_argc); | 407 const char** js_argv = NewArray<const char*>(js_argc); |
408 if (value != NULL) { | 408 if (value != NULL) { |
409 js_argv[0] = StrDup(value); | 409 js_argv[0] = StrDup(value); |
410 } | 410 } |
411 for (int k = i; k < *argc; k++) { | 411 for (int k = i; k < *argc; k++) { |
412 js_argv[k - start_pos] = StrDup(argv[k]); | 412 js_argv[k - start_pos] = StrDup(argv[k]); |
413 } | 413 } |
414 *flag->args_variable() = JSArguments(js_argc, js_argv); | 414 *flag->args_variable() = JSArguments::Create(js_argc, js_argv); |
415 i = *argc; // Consume all arguments | 415 i = *argc; // Consume all arguments |
416 break; | 416 break; |
417 } | 417 } |
418 } | 418 } |
419 | 419 |
420 // handle errors | 420 // handle errors |
421 if ((flag->type() == Flag::TYPE_BOOL && value != NULL) || | 421 if ((flag->type() == Flag::TYPE_BOOL && value != NULL) || |
422 (flag->type() != Flag::TYPE_BOOL && is_bool) || | 422 (flag->type() != Flag::TYPE_BOOL && is_bool) || |
423 *endp != '\0') { | 423 *endp != '\0') { |
424 fprintf(stderr, "Error: illegal value for flag %s of type %s\n" | 424 fprintf(stderr, "Error: illegal value for flag %s of type %s\n" |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
527 printf(" run the new debugging shell\n\n"); | 527 printf(" run the new debugging shell\n\n"); |
528 printf("Options:\n"); | 528 printf("Options:\n"); |
529 for (size_t i = 0; i < num_flags; ++i) { | 529 for (size_t i = 0; i < num_flags; ++i) { |
530 Flag* f = &flags[i]; | 530 Flag* f = &flags[i]; |
531 SmartArrayPointer<const char> value = ToString(f); | 531 SmartArrayPointer<const char> value = ToString(f); |
532 printf(" --%s (%s)\n type: %s default: %s\n", | 532 printf(" --%s (%s)\n type: %s default: %s\n", |
533 f->name(), f->comment(), Type2String(f->type()), *value); | 533 f->name(), f->comment(), Type2String(f->type()), *value); |
534 } | 534 } |
535 } | 535 } |
536 | 536 |
537 JSArguments::JSArguments() | |
538 : argc_(0), argv_(NULL) {} | |
539 JSArguments::JSArguments(int argc, const char** argv) | |
540 : argc_(argc), argv_(argv) {} | |
541 int JSArguments::argc() const { return argc_; } | |
542 const char** JSArguments::argv() { return argv_; } | |
543 const char*& JSArguments::operator[](int idx) { return argv_[idx]; } | |
544 JSArguments& JSArguments::operator=(JSArguments args) { | |
545 argc_ = args.argc_; | |
546 argv_ = args.argv_; | |
547 return *this; | |
548 } | |
549 | |
550 | 537 |
551 void FlagList::EnforceFlagImplications() { | 538 void FlagList::EnforceFlagImplications() { |
552 #define FLAG_MODE_DEFINE_IMPLICATIONS | 539 #define FLAG_MODE_DEFINE_IMPLICATIONS |
553 #include "flag-definitions.h" | 540 #include "flag-definitions.h" |
554 } | 541 } |
555 | 542 |
556 } } // namespace v8::internal | 543 } } // namespace v8::internal |
OLD | NEW |