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

Side by Side Diff: src/flags.cc

Issue 1737023: Turn some usages of NewArray with DeleteArray in the same scope into ScopedVector or SmartPointer. (Closed)
Patch Set: Disabling implicit constructors Created 10 years, 7 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
« no previous file with comments | « src/debug-agent.cc ('k') | src/log.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 // 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 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 463
464 static char* SkipBlackSpace(char* p) { 464 static char* SkipBlackSpace(char* p) {
465 while (*p != '\0' && isspace(*p) == 0) p++; 465 while (*p != '\0' && isspace(*p) == 0) p++;
466 return p; 466 return p;
467 } 467 }
468 468
469 469
470 // static 470 // static
471 int FlagList::SetFlagsFromString(const char* str, int len) { 471 int FlagList::SetFlagsFromString(const char* str, int len) {
472 // make a 0-terminated copy of str 472 // make a 0-terminated copy of str
473 char* copy0 = NewArray<char>(len + 1); 473 ScopedVector<char> copy0(len + 1);
474 memcpy(copy0, str, len); 474 memcpy(copy0.start(), str, len);
475 copy0[len] = '\0'; 475 copy0[len] = '\0';
476 476
477 // strip leading white space 477 // strip leading white space
478 char* copy = SkipWhiteSpace(copy0); 478 char* copy = SkipWhiteSpace(copy0.start());
479 479
480 // count the number of 'arguments' 480 // count the number of 'arguments'
481 int argc = 1; // be compatible with SetFlagsFromCommandLine() 481 int argc = 1; // be compatible with SetFlagsFromCommandLine()
482 for (char* p = copy; *p != '\0'; argc++) { 482 for (char* p = copy; *p != '\0'; argc++) {
483 p = SkipBlackSpace(p); 483 p = SkipBlackSpace(p);
484 p = SkipWhiteSpace(p); 484 p = SkipWhiteSpace(p);
485 } 485 }
486 486
487 // allocate argument array 487 // allocate argument array
488 char** argv = NewArray<char*>(argc); 488 ScopedVector<char*> argv(argc);
489 489
490 // split the flags string into arguments 490 // split the flags string into arguments
491 argc = 1; // be compatible with SetFlagsFromCommandLine() 491 argc = 1; // be compatible with SetFlagsFromCommandLine()
492 for (char* p = copy; *p != '\0'; argc++) { 492 for (char* p = copy; *p != '\0'; argc++) {
493 argv[argc] = p; 493 argv[argc] = p;
494 p = SkipBlackSpace(p); 494 p = SkipBlackSpace(p);
495 if (*p != '\0') *p++ = '\0'; // 0-terminate argument 495 if (*p != '\0') *p++ = '\0'; // 0-terminate argument
496 p = SkipWhiteSpace(p); 496 p = SkipWhiteSpace(p);
497 } 497 }
498 498
499 // set the flags 499 // set the flags
500 int result = SetFlagsFromCommandLine(&argc, argv, false); 500 int result = SetFlagsFromCommandLine(&argc, argv.start(), false);
501
502 // cleanup
503 DeleteArray(argv);
504 DeleteArray(copy0);
505 501
506 return result; 502 return result;
507 } 503 }
508 504
509 505
510 // static 506 // static
511 void FlagList::ResetAllFlags() { 507 void FlagList::ResetAllFlags() {
512 for (size_t i = 0; i < num_flags; ++i) { 508 for (size_t i = 0; i < num_flags; ++i) {
513 flags[i].Reset(); 509 flags[i].Reset();
514 } 510 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 const char** JSArguments::argv() { return argv_; } 542 const char** JSArguments::argv() { return argv_; }
547 const char*& JSArguments::operator[](int idx) { return argv_[idx]; } 543 const char*& JSArguments::operator[](int idx) { return argv_[idx]; }
548 JSArguments& JSArguments::operator=(JSArguments args) { 544 JSArguments& JSArguments::operator=(JSArguments args) {
549 argc_ = args.argc_; 545 argc_ = args.argc_;
550 argv_ = args.argv_; 546 argv_ = args.argv_;
551 return *this; 547 return *this;
552 } 548 }
553 549
554 550
555 } } // namespace v8::internal 551 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/debug-agent.cc ('k') | src/log.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698