OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include <stdlib.h> | 5 #include <stdlib.h> |
6 #include <string.h> | 6 #include <string.h> |
7 #include <stdio.h> | 7 #include <stdio.h> |
8 | 8 |
9 #include "include/dart_api.h" | 9 #include "include/dart_api.h" |
10 #include "include/dart_debugger_api.h" | 10 #include "include/dart_debugger_api.h" |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 } | 293 } |
294 | 294 |
295 return 0; | 295 return 0; |
296 } | 296 } |
297 | 297 |
298 | 298 |
299 static Dart_Handle SetupRuntimeOptions(CommandLineOptions* options, | 299 static Dart_Handle SetupRuntimeOptions(CommandLineOptions* options, |
300 const char* executable_name, | 300 const char* executable_name, |
301 const char* script_name) { | 301 const char* script_name) { |
302 int options_count = options->count(); | 302 int options_count = options->count(); |
303 Dart_Handle dart_executable = Dart_NewString(executable_name); | 303 Dart_Handle dart_executable = DartUtils::NewString(executable_name); |
304 if (Dart_IsError(dart_executable)) { | 304 if (Dart_IsError(dart_executable)) { |
305 return dart_executable; | 305 return dart_executable; |
306 } | 306 } |
307 Dart_Handle dart_script = Dart_NewString(script_name); | 307 Dart_Handle dart_script = DartUtils::NewString(script_name); |
308 if (Dart_IsError(dart_script)) { | 308 if (Dart_IsError(dart_script)) { |
309 return dart_script; | 309 return dart_script; |
310 } | 310 } |
311 Dart_Handle dart_arguments = Dart_NewList(options_count); | 311 Dart_Handle dart_arguments = Dart_NewList(options_count); |
312 if (Dart_IsError(dart_arguments)) { | 312 if (Dart_IsError(dart_arguments)) { |
313 return dart_arguments; | 313 return dart_arguments; |
314 } | 314 } |
315 for (int i = 0; i < options_count; i++) { | 315 for (int i = 0; i < options_count; i++) { |
316 Dart_Handle argument_value = Dart_NewString(options->GetArgument(i)); | 316 Dart_Handle argument_value = |
| 317 DartUtils::NewString(options->GetArgument(i)); |
317 if (Dart_IsError(argument_value)) { | 318 if (Dart_IsError(argument_value)) { |
318 return argument_value; | 319 return argument_value; |
319 } | 320 } |
320 Dart_Handle result = Dart_ListSetAt(dart_arguments, i, argument_value); | 321 Dart_Handle result = Dart_ListSetAt(dart_arguments, i, argument_value); |
321 if (Dart_IsError(result)) { | 322 if (Dart_IsError(result)) { |
322 return result; | 323 return result; |
323 } | 324 } |
324 } | 325 } |
325 Dart_Handle core_lib_url = Dart_NewString("dart:core"); | 326 Dart_Handle core_lib_url = DartUtils::NewString("dart:core"); |
326 if (Dart_IsError(core_lib_url)) { | 327 if (Dart_IsError(core_lib_url)) { |
327 return core_lib_url; | 328 return core_lib_url; |
328 } | 329 } |
329 Dart_Handle core_lib = Dart_LookupLibrary(core_lib_url); | 330 Dart_Handle core_lib = Dart_LookupLibrary(core_lib_url); |
330 if (Dart_IsError(core_lib)) { | 331 if (Dart_IsError(core_lib)) { |
331 return core_lib; | 332 return core_lib; |
332 } | 333 } |
333 Dart_Handle runtime_options_class_name = Dart_NewString("_OptionsImpl"); | 334 Dart_Handle runtime_options_class_name = |
| 335 DartUtils::NewString("_OptionsImpl"); |
334 if (Dart_IsError(runtime_options_class_name)) { | 336 if (Dart_IsError(runtime_options_class_name)) { |
335 return runtime_options_class_name; | 337 return runtime_options_class_name; |
336 } | 338 } |
337 Dart_Handle runtime_options_class = Dart_GetClass( | 339 Dart_Handle runtime_options_class = Dart_GetClass( |
338 core_lib, runtime_options_class_name); | 340 core_lib, runtime_options_class_name); |
339 if (Dart_IsError(runtime_options_class)) { | 341 if (Dart_IsError(runtime_options_class)) { |
340 return runtime_options_class; | 342 return runtime_options_class; |
341 } | 343 } |
342 Dart_Handle executable_name_name = Dart_NewString("_nativeExecutable"); | 344 Dart_Handle executable_name_name = |
| 345 DartUtils::NewString("_nativeExecutable"); |
343 if (Dart_IsError(executable_name_name)) { | 346 if (Dart_IsError(executable_name_name)) { |
344 return executable_name_name; | 347 return executable_name_name; |
345 } | 348 } |
346 Dart_Handle set_executable_name = | 349 Dart_Handle set_executable_name = |
347 Dart_SetField(runtime_options_class, | 350 Dart_SetField(runtime_options_class, |
348 executable_name_name, | 351 executable_name_name, |
349 dart_executable); | 352 dart_executable); |
350 if (Dart_IsError(set_executable_name)) { | 353 if (Dart_IsError(set_executable_name)) { |
351 return set_executable_name; | 354 return set_executable_name; |
352 } | 355 } |
353 Dart_Handle script_name_name = Dart_NewString("_nativeScript"); | 356 Dart_Handle script_name_name = DartUtils::NewString("_nativeScript"); |
354 if (Dart_IsError(script_name_name)) { | 357 if (Dart_IsError(script_name_name)) { |
355 return script_name_name; | 358 return script_name_name; |
356 } | 359 } |
357 Dart_Handle set_script_name = | 360 Dart_Handle set_script_name = |
358 Dart_SetField(runtime_options_class, script_name_name, dart_script); | 361 Dart_SetField(runtime_options_class, script_name_name, dart_script); |
359 if (Dart_IsError(set_script_name)) { | 362 if (Dart_IsError(set_script_name)) { |
360 return set_script_name; | 363 return set_script_name; |
361 } | 364 } |
362 Dart_Handle native_name = Dart_NewString("_nativeArguments"); | 365 Dart_Handle native_name = DartUtils::NewString("_nativeArguments"); |
363 if (Dart_IsError(native_name)) { | 366 if (Dart_IsError(native_name)) { |
364 return native_name; | 367 return native_name; |
365 } | 368 } |
366 | 369 |
367 return Dart_SetField(runtime_options_class, native_name, dart_arguments); | 370 return Dart_SetField(runtime_options_class, native_name, dart_arguments); |
368 } | 371 } |
369 | 372 |
370 | 373 |
371 static void DumpPprofSymbolInfo() { | 374 static void DumpPprofSymbolInfo() { |
372 if (generate_pprof_symbols_filename != NULL) { | 375 if (generate_pprof_symbols_filename != NULL) { |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
547 | 550 |
548 | 551 |
549 static Dart_Handle SetBreakpoint(const char* breakpoint_at, | 552 static Dart_Handle SetBreakpoint(const char* breakpoint_at, |
550 Dart_Handle library) { | 553 Dart_Handle library) { |
551 Dart_Handle result; | 554 Dart_Handle result; |
552 if (strchr(breakpoint_at, ':')) { | 555 if (strchr(breakpoint_at, ':')) { |
553 char* bpt_line = strdup(breakpoint_at); | 556 char* bpt_line = strdup(breakpoint_at); |
554 char* colon = strchr(bpt_line, ':'); | 557 char* colon = strchr(bpt_line, ':'); |
555 ASSERT(colon != NULL); | 558 ASSERT(colon != NULL); |
556 *colon = '\0'; | 559 *colon = '\0'; |
557 Dart_Handle url = Dart_NewString(bpt_line); | 560 Dart_Handle url = DartUtils::NewString(bpt_line); |
558 Dart_Handle line_number = Dart_NewInteger(atoi(colon + 1)); | 561 Dart_Handle line_number = Dart_NewInteger(atoi(colon + 1)); |
559 free(bpt_line); | 562 free(bpt_line); |
560 Dart_Breakpoint bpt; | 563 Dart_Breakpoint bpt; |
561 result = Dart_SetBreakpointAtLine(url, line_number, &bpt); | 564 result = Dart_SetBreakpointAtLine(url, line_number, &bpt); |
562 } else { | 565 } else { |
563 char* bpt_function = strdup(breakpoint_at); | 566 char* bpt_function = strdup(breakpoint_at); |
564 Dart_Handle class_name; | 567 Dart_Handle class_name; |
565 Dart_Handle function_name; | 568 Dart_Handle function_name; |
566 char* dot = strchr(bpt_function, '.'); | 569 char* dot = strchr(bpt_function, '.'); |
567 if (dot == NULL) { | 570 if (dot == NULL) { |
568 class_name = Dart_NewString(""); | 571 class_name = DartUtils::NewString(""); |
569 function_name = Dart_NewString(breakpoint_at); | 572 function_name = DartUtils::NewString(breakpoint_at); |
570 } else { | 573 } else { |
571 *dot = '\0'; | 574 *dot = '\0'; |
572 class_name = Dart_NewString(bpt_function); | 575 class_name = DartUtils::NewString(bpt_function); |
573 function_name = Dart_NewString(dot + 1); | 576 function_name = DartUtils::NewString(dot + 1); |
574 } | 577 } |
575 free(bpt_function); | 578 free(bpt_function); |
576 Dart_Breakpoint bpt; | 579 Dart_Breakpoint bpt; |
577 result = Dart_SetBreakpointAtEntry( | 580 result = Dart_SetBreakpointAtEntry( |
578 library, class_name, function_name, &bpt); | 581 library, class_name, function_name, &bpt); |
579 } | 582 } |
580 return result; | 583 return result; |
581 } | 584 } |
582 | 585 |
583 | 586 |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
720 if (breakpoint_at != NULL) { | 723 if (breakpoint_at != NULL) { |
721 result = SetBreakpoint(breakpoint_at, library); | 724 result = SetBreakpoint(breakpoint_at, library); |
722 if (Dart_IsError(result)) { | 725 if (Dart_IsError(result)) { |
723 return ErrorExit("Error setting breakpoint at '%s': %s\n", | 726 return ErrorExit("Error setting breakpoint at '%s': %s\n", |
724 breakpoint_at, | 727 breakpoint_at, |
725 Dart_GetError(result)); | 728 Dart_GetError(result)); |
726 } | 729 } |
727 } | 730 } |
728 | 731 |
729 // Lookup and invoke the top level main function. | 732 // Lookup and invoke the top level main function. |
730 result = Dart_Invoke(library, Dart_NewString("main"), 0, NULL); | 733 result = Dart_Invoke(library, DartUtils::NewString("main"), 0, NULL); |
731 if (Dart_IsError(result)) { | 734 if (Dart_IsError(result)) { |
732 return ErrorExit("%s\n", Dart_GetError(result)); | 735 return ErrorExit("%s\n", Dart_GetError(result)); |
733 } | 736 } |
734 // Keep handling messages until the last active receive port is closed. | 737 // Keep handling messages until the last active receive port is closed. |
735 result = Dart_RunLoop(); | 738 result = Dart_RunLoop(); |
736 if (Dart_IsError(result)) { | 739 if (Dart_IsError(result)) { |
737 return ErrorExit("%s\n", Dart_GetError(result)); | 740 return ErrorExit("%s\n", Dart_GetError(result)); |
738 } | 741 } |
739 | 742 |
740 Dart_ExitScope(); | 743 Dart_ExitScope(); |
741 // Dump symbol information for the profiler. | 744 // Dump symbol information for the profiler. |
742 DumpPprofSymbolInfo(); | 745 DumpPprofSymbolInfo(); |
743 // Shutdown the isolate. | 746 // Shutdown the isolate. |
744 Dart_ShutdownIsolate(); | 747 Dart_ShutdownIsolate(); |
745 // Terminate process exit-code handler. | 748 // Terminate process exit-code handler. |
746 Process::TerminateExitCodeHandler(); | 749 Process::TerminateExitCodeHandler(); |
747 | 750 |
748 return 0; | 751 return 0; |
749 } | 752 } |
OLD | NEW |