OLD | NEW |
1 // Copyright (c) 2009, Google Inc. | 1 // Copyright (c) 2009, Google Inc. |
2 // All rights reserved. | 2 // All rights reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
6 // met: | 6 // met: |
7 // | 7 // |
8 // * Redistributions of source code must retain the above copyright | 8 // * Redistributions of source code must retain the above copyright |
9 // notice, this list of conditions and the following disclaimer. | 9 // notice, this list of conditions and the following disclaimer. |
10 // * Redistributions in binary form must reproduce the above | 10 // * Redistributions in binary form must reproduce the above |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
351 if (Dart_IsError(result)) | 351 if (Dart_IsError(result)) |
352 DartUtilities::reportProblem(context, result); | 352 DartUtilities::reportProblem(context, result); |
353 } | 353 } |
354 | 354 |
355 private: | 355 private: |
356 RefPtr<ThreadSafeDartIsolateWrapper> m_destinationIsolate; | 356 RefPtr<ThreadSafeDartIsolateWrapper> m_destinationIsolate; |
357 }; | 357 }; |
358 | 358 |
359 static void messageNotifyCallback(Dart_Isolate destinationIsolate) | 359 static void messageNotifyCallback(Dart_Isolate destinationIsolate) |
360 { | 360 { |
361 DartIsolateScope scope(destinationIsolate); | 361 DartDOMData* domData = static_cast<DartDOMData*>(Dart_IsolateData(destinatio
nIsolate)); |
362 DartDOMData* domData = DartDOMData::current(); | |
363 ASSERT(domData->isDOMEnabled()); | 362 ASSERT(domData->isDOMEnabled()); |
364 ExecutionContext* destinationContext = domData->scriptExecutionContext(); | 363 ExecutionContext* destinationContext = domData->scriptExecutionContext(); |
365 destinationContext->postTask(adoptPtr(new MessageNotifyTask(domData->threadS
afeIsolateWrapper()))); | 364 destinationContext->postTask(adoptPtr(new MessageNotifyTask(domData->threadS
afeIsolateWrapper()))); |
366 } | 365 } |
367 | 366 |
368 class SpawnUriErrorEventDispatcher : public DartErrorEventDispatcher { | 367 class SpawnUriErrorEventDispatcher : public DartErrorEventDispatcher { |
369 public: | 368 public: |
370 // TODO(antonm): this is used to dispatch DOM error event. Most probably we
need | 369 // TODO(antonm): this is used to dispatch DOM error event. Most probably we
need |
371 // nothing like that for spawnDomUri, but need to double check. | 370 // nothing like that for spawnDomUri, but need to double check. |
372 void dispatchErrorEvent() { } | 371 void dispatchErrorEvent() { } |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
474 } | 473 } |
475 | 474 |
476 static char* skipBlackSpace(char* p) | 475 static char* skipBlackSpace(char* p) |
477 { | 476 { |
478 for (; *p != '\0' && !isspace(*p); p++) { } | 477 for (; *p != '\0' && !isspace(*p); p++) { } |
479 return p; | 478 return p; |
480 } | 479 } |
481 | 480 |
482 static void setDartFlags(const char* str) | 481 static void setDartFlags(const char* str) |
483 { | 482 { |
484 const char* disableProfiler = "--no-profile"; | |
485 | |
486 if (!str) { | 483 if (!str) { |
487 Dart_SetVMFlags(1, &disableProfiler); | 484 Dart_SetVMFlags(0, 0); |
488 return; | 485 return; |
489 } | 486 } |
490 | 487 |
491 size_t length = strlen(str); | 488 size_t length = strlen(str); |
492 char* copy = new char[length + 1]; | 489 char* copy = new char[length + 1]; |
493 memmove(copy, str, length); | 490 memmove(copy, str, length); |
494 copy[length] = '\0'; | 491 copy[length] = '\0'; |
495 | 492 |
496 // Strip leading white space. | 493 // Strip leading white space. |
497 char* start = skipWhiteSpace(copy); | 494 char* start = skipWhiteSpace(copy); |
498 | 495 |
499 // Count the number of 'arguments'. | 496 // Count the number of 'arguments'. |
500 int argc = 0; | 497 int argc = 0; |
501 for (char* p = start; *p != '\0'; argc++) { | 498 for (char* p = start; *p != '\0'; argc++) { |
502 p = skipBlackSpace(p); | 499 p = skipBlackSpace(p); |
503 p = skipWhiteSpace(p); | 500 p = skipWhiteSpace(p); |
504 } | 501 } |
505 | 502 |
506 // Allocate argument array. | 503 // Allocate argument array. |
507 const char** argv = new const char*[argc + 1]; | 504 const char** argv = new const char*[argc]; |
508 | 505 |
509 // Split the flags string into arguments. | 506 // Split the flags string into arguments. |
510 argc = 0; | 507 argc = 0; |
511 for (char* p = start; *p != '\0'; argc++) { | 508 for (char* p = start; *p != '\0'; argc++) { |
512 argv[argc] = p; | 509 argv[argc] = p; |
513 p = skipBlackSpace(p); | 510 p = skipBlackSpace(p); |
514 if (*p != '\0') | 511 if (*p != '\0') |
515 *p++ = '\0'; // 0-terminate argument | 512 *p++ = '\0'; // 0-terminate argument |
516 p = skipWhiteSpace(p); | 513 p = skipWhiteSpace(p); |
517 } | 514 } |
518 argv[argc] = disableProfiler; | |
519 | 515 |
520 // Set the flags. | 516 // Set the flags. |
521 Dart_SetVMFlags(argc + 1, argv); | 517 Dart_SetVMFlags(argc, argv); |
522 | 518 |
523 delete[] argv; | 519 delete[] argv; |
524 delete[] copy; | 520 delete[] copy; |
525 } | 521 } |
526 | 522 |
527 namespace { | 523 namespace { |
528 | 524 |
529 #if OS(LINUX) | 525 #if OS(LINUX) |
530 | 526 |
531 static void* openFileCallback(const char* name, bool write) | 527 static void* openFileCallback(const char* name, bool write) |
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
876 Dart_Handle libraryIdHandle = Dart_ListGetAt(libraryIdList, i); | 872 Dart_Handle libraryIdHandle = Dart_ListGetAt(libraryIdList, i); |
877 Dart_Handle exception = 0; | 873 Dart_Handle exception = 0; |
878 intptr_t libraryId = DartUtilities::toInteger(libraryIdHandle, exception
); | 874 intptr_t libraryId = DartUtilities::toInteger(libraryIdHandle, exception
); |
879 ASSERT(!exception); | 875 ASSERT(!exception); |
880 DartScriptState* scriptState = lookupScriptStateFromLibraryIdMap(isolate
, v8Context, libraryIdMap, libraryId); | 876 DartScriptState* scriptState = lookupScriptStateFromLibraryIdMap(isolate
, v8Context, libraryIdMap, libraryId); |
881 result.append(scriptState); | 877 result.append(scriptState); |
882 } | 878 } |
883 } | 879 } |
884 | 880 |
885 } | 881 } |
OLD | NEW |