Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 // Generate a snapshot file after loading all the scripts specified on the | 5 // Generate a snapshot file after loading all the scripts specified on the |
| 6 // command line. | 6 // command line. |
| 7 | 7 |
| 8 #include <stdlib.h> | 8 #include <stdlib.h> |
| 9 #include <string.h> | 9 #include <string.h> |
| 10 #include <stdio.h> | 10 #include <stdio.h> |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 83 const bool kWritable = true; | 83 const bool kWritable = true; |
| 84 File* file = File::Open(snapshot_filename, kWritable); | 84 File* file = File::Open(snapshot_filename, kWritable); |
| 85 ASSERT(file != NULL); | 85 ASSERT(file != NULL); |
| 86 for (intptr_t i = 0; i < size; i++) { | 86 for (intptr_t i = 0; i < size; i++) { |
| 87 file->WriteByte(buffer[i]); | 87 file->WriteByte(buffer[i]); |
| 88 } | 88 } |
| 89 delete file; | 89 delete file; |
| 90 } | 90 } |
| 91 | 91 |
| 92 | 92 |
| 93 static Dart_Handle LibraryTagHandler(Dart_LibraryTag tag, | |
| 94 Dart_Handle library, | |
| 95 Dart_Handle url) { | |
| 96 const bool kDontImportBuiltinLib = false; // Do not import builtin lib. | |
| 97 return LibraryTagHandlerHelper(tag, library, url, kDontImportBuiltinLib); | |
| 98 } | |
| 99 | |
| 100 | |
| 93 static void* SnapshotCreateCallback(void* data) { | 101 static void* SnapshotCreateCallback(void* data) { |
| 94 const char* script_name = reinterpret_cast<const char*>(data); | 102 const char* script_name = reinterpret_cast<const char*>(data); |
| 95 Dart_Handle result; | 103 Dart_Handle result; |
| 104 Dart_Handle library; | |
| 96 Dart_EnterScope(); | 105 Dart_EnterScope(); |
| 97 | 106 |
| 98 ASSERT(snapshot_filename != NULL); | 107 ASSERT(snapshot_filename != NULL); |
| 99 | 108 |
| 100 // If a file is specified on the command line, load it up before a snapshot | 109 // load up the script before a snapshot is created. |
|
Anton Muhin
2011/11/13 16:19:32
nit: [L]oad the script
siva
2011/11/15 02:16:52
Done.
| |
| 101 // is created. | |
| 102 if (script_name != NULL) { | 110 if (script_name != NULL) { |
| 103 // Load the specified script. | 111 // Load the specified script. |
| 104 Dart_Handle library = LoadSnapshotCreationScript(script_name); | 112 library = LoadSnapshotCreationScript(script_name, LibraryTagHandler); |
| 105 if (!Dart_IsValid(library)) { | |
| 106 const char* err_msg = Dart_GetError(library); | |
| 107 fprintf(stderr, "Errors encountered while loading script: %s\n", err_msg); | |
| 108 Dart_ExitScope(); | |
| 109 exit(255); | |
| 110 } | |
| 111 | |
| 112 if (!Dart_IsLibrary(library)) { | |
| 113 fprintf(stderr, | |
| 114 "Expected a library when loading script: %s", | |
| 115 script_name); | |
| 116 Dart_ExitScope(); | |
| 117 exit(255); | |
| 118 } | |
| 119 } else { | 113 } else { |
| 120 // Implicitly load builtin library. | 114 // This is a generic dart snapshot which needs builtin library |
| 121 Builtin_LoadLibrary(); | 115 // setup. |
| 122 // Setup the native resolver for built in library functions. | 116 library = Builtin_LoadLibrary(LibraryTagHandler); |
|
Anton Muhin
2011/11/13 16:19:32
cannot you migrate to the common infrastructure fo
siva
2011/11/15 02:16:52
I would have if we had a 'builtin.dart' file to us
Anton Muhin
2011/11/15 12:22:23
sure
On 2011/11/15 02:16:52, asiva wrote:
| |
| 123 Builtin_SetNativeResolver(); | 117 } |
| 118 if (!Dart_IsValid(library)) { | |
| 119 const char* err_msg = Dart_GetError(library); | |
| 120 fprintf(stderr, "Errors encountered while loading script: %s\n", err_msg); | |
| 121 Dart_ExitScope(); | |
| 122 exit(255); | |
| 123 } | |
| 124 if (!Dart_IsLibrary(library)) { | |
|
Anton Muhin
2011/11/13 16:19:32
should it be an assert? esp. with new API.
siva
2011/11/15 02:16:52
No we want to fail if we don't find a library obje
Anton Muhin
2011/11/15 12:22:23
Is it a possible case when Builtin_LoadLibrary suc
siva
2011/11/15 19:42:49
I see what you are saying.
Changed to an ASSERT.
| |
| 125 fprintf(stderr, "Expected a library when loading script: %s", script_name); | |
| 126 Dart_ExitScope(); | |
| 127 exit(255); | |
| 124 } | 128 } |
| 125 | 129 |
| 126 uint8_t* buffer = NULL; | 130 uint8_t* buffer = NULL; |
| 127 intptr_t size = 0; | 131 intptr_t size = 0; |
| 128 // First create the snapshot. | 132 // First create the snapshot. |
| 129 result = Dart_CreateSnapshot(&buffer, &size); | 133 result = Dart_CreateSnapshot(&buffer, &size); |
| 130 if (!Dart_IsValid(result)) { | 134 if (!Dart_IsValid(result)) { |
| 131 const char* err_msg = Dart_GetError(result); | 135 const char* err_msg = Dart_GetError(result); |
| 132 fprintf(stderr, "Error while creating snapshot: %s\n", err_msg); | 136 fprintf(stderr, "Error while creating snapshot: %s\n", err_msg); |
| 133 Dart_ExitScope(); | 137 Dart_ExitScope(); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 175 // and writes out a snapshot. | 179 // and writes out a snapshot. |
| 176 Dart_Isolate isolate = Dart_CreateIsolate(NULL, script_name); | 180 Dart_Isolate isolate = Dart_CreateIsolate(NULL, script_name); |
| 177 if (isolate == NULL) { | 181 if (isolate == NULL) { |
| 178 return 255; | 182 return 255; |
| 179 } | 183 } |
| 180 | 184 |
| 181 // Shutdown the isolate. | 185 // Shutdown the isolate. |
| 182 Dart_ShutdownIsolate(); | 186 Dart_ShutdownIsolate(); |
| 183 return 0; | 187 return 0; |
| 184 } | 188 } |
| OLD | NEW |