1 | // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
---|---|
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. |
4 | |
5 | #include "bin/error_exit.h" |
6 | |
7 | #include "bin/eventhandler.h" |
8 | #include "bin/platform.h" |
9 | #include "bin/process.h" |
10 | #include "include/dart_api.h" |
11 | #include "platform/assert.h" |
12 | #include "platform/globals.h" |
13 | #include "platform/syslog.h" |
14 | |
15 | namespace dart { |
16 | namespace bin { |
17 | |
18 | void ErrorExit(int exit_code, const char* format, ...) { |
19 | va_list arguments; |
20 | va_start(arguments, format); |
21 | Syslog::VPrintErr(format, arguments); |
22 | va_end(arguments); |
23 | |
24 | Dart_ShutdownIsolate(); |
25 | |
26 | // Terminate process exit-code handler. |
27 | Process::TerminateExitCodeHandler(); |
28 | |
29 | char* error = Dart_Cleanup(); |
30 | if (error != NULL) { |
31 | Syslog::PrintErr("VM cleanup failed: %s\n", error); |
32 | free(error); |
33 | } |
34 | |
35 | Process::ClearAllSignalHandlers(); |
36 | EventHandler::Stop(); |
37 | Platform::Exit(exit_code); |
38 | } |
39 | |
40 | } // namespace bin |
41 | } // namespace dart |
42 |