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

Side by Side Diff: runtime/bin/dartutils.h

Issue 2411823003: VM support for running Kernel binaries. (Closed)
Patch Set: Address comments Created 4 years, 2 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 | « no previous file | runtime/bin/dartutils.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 (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 #ifndef BIN_DARTUTILS_H_ 5 #ifndef BIN_DARTUTILS_H_
6 #define BIN_DARTUTILS_H_ 6 #define BIN_DARTUTILS_H_
7 7
8 #include "bin/isolate_data.h" 8 #include "bin/isolate_data.h"
9 #include "include/dart_api.h" 9 #include "include/dart_api.h"
10 #include "include/dart_native_api.h" 10 #include "include/dart_native_api.h"
(...skipping 15 matching lines...) Expand all
26 * functions can also be nested without this error check, since all 26 * functions can also be nested without this error check, since all
27 * API functions return any error handles passed in as arguments, unchanged. 27 * API functions return any error handles passed in as arguments, unchanged.
28 */ 28 */
29 static inline Dart_Handle ThrowIfError(Dart_Handle handle) { 29 static inline Dart_Handle ThrowIfError(Dart_Handle handle) {
30 if (Dart_IsError(handle)) { 30 if (Dart_IsError(handle)) {
31 Dart_PropagateError(handle); 31 Dart_PropagateError(handle);
32 } 32 }
33 return handle; 33 return handle;
34 } 34 }
35 35
36 // Tries to read [script_uri] as a Kernel IR file. If successful this function
37 // returns `true` and sets [kernel_file] and [kernel_length] to be the memory
38 // contents.
39 //
40 // The caller is responsible for free()ing [kernel_file] if `true` was returned.
41 bool TryReadKernel(const char* script_uri,
42 const uint8_t** kernel_file,
43 intptr_t* kernel_length);
44
36 class CommandLineOptions { 45 class CommandLineOptions {
37 public: 46 public:
38 explicit CommandLineOptions(int max_count) 47 explicit CommandLineOptions(int max_count)
39 : count_(0), max_count_(max_count), arguments_(NULL) { 48 : count_(0), max_count_(max_count), arguments_(NULL) {
40 static const int kWordSize = sizeof(intptr_t); 49 static const int kWordSize = sizeof(intptr_t);
41 arguments_ = reinterpret_cast<const char **>(malloc(max_count * kWordSize)); 50 arguments_ = reinterpret_cast<const char **>(malloc(max_count * kWordSize));
42 if (arguments_ == NULL) { 51 if (arguments_ == NULL) {
43 max_count_ = 0; 52 max_count_ = 0;
44 } 53 }
45 } 54 }
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 } 202 }
194 203
195 static bool SetOriginalWorkingDirectory(); 204 static bool SetOriginalWorkingDirectory();
196 static Dart_Handle GetCanonicalizableWorkingDirectory(); 205 static Dart_Handle GetCanonicalizableWorkingDirectory();
197 206
198 static const char* MapLibraryUrl(const char* url_string); 207 static const char* MapLibraryUrl(const char* url_string);
199 208
200 static Dart_Handle ResolveUriInWorkingDirectory(Dart_Handle script_uri); 209 static Dart_Handle ResolveUriInWorkingDirectory(Dart_Handle script_uri);
201 static Dart_Handle ResolveScript(Dart_Handle url); 210 static Dart_Handle ResolveScript(Dart_Handle url);
202 211
212 enum MagicNumber {
213 kSnapshotMagicNumber,
214 kKernelMagicNumber,
215 kUnknownMagicNumber
216 };
217
218 // static const uint8_t* GetMagicNumber(MagicNumber number);
219
203 // Sniffs the specified text_buffer to see if it contains the magic number 220 // Sniffs the specified text_buffer to see if it contains the magic number
204 // representing a script snapshot. If the text_buffer is a script snapshot 221 // representing a script snapshot. If the text_buffer is a script snapshot
205 // the return value is an updated pointer to the text_buffer pointing past 222 // the return value is an updated pointer to the text_buffer pointing past
206 // the magic number value. The 'buffer_len' parameter is also appropriately 223 // the magic number value. The 'buffer_len' parameter is also appropriately
207 // adjusted. 224 // adjusted.
208 static const uint8_t* SniffForMagicNumber(const uint8_t* text_buffer, 225 static MagicNumber SniffForMagicNumber(const uint8_t** text_buffer,
209 intptr_t* buffer_len, 226 intptr_t* buffer_len);
210 bool* is_snapshot);
211 227
212 // Write a magic number to indicate a script snapshot file. 228 // Write a magic number to indicate a script snapshot file.
213 static void WriteMagicNumber(File* file); 229 static void WriteMagicNumber(File* file);
214 230
215 // Global state that stores the original working directory.. 231 // Global state that stores the original working directory..
216 static const char* original_working_directory; 232 static const char* original_working_directory;
217 233
218 // Global state that captures the URL mappings specified on the command line. 234 // Global state that captures the URL mappings specified on the command line.
219 static CommandLineOptions* url_mapping; 235 static CommandLineOptions* url_mapping;
220 236
221 static const char* const kDartScheme; 237 static const char* const kDartScheme;
222 static const char* const kDartExtensionScheme; 238 static const char* const kDartExtensionScheme;
223 static const char* const kAsyncLibURL; 239 static const char* const kAsyncLibURL;
224 static const char* const kBuiltinLibURL; 240 static const char* const kBuiltinLibURL;
225 static const char* const kCoreLibURL; 241 static const char* const kCoreLibURL;
226 static const char* const kInternalLibURL; 242 static const char* const kInternalLibURL;
227 static const char* const kIsolateLibURL; 243 static const char* const kIsolateLibURL;
228 static const char* const kIOLibURL; 244 static const char* const kIOLibURL;
229 static const char* const kIOLibPatchURL; 245 static const char* const kIOLibPatchURL;
230 static const char* const kUriLibURL; 246 static const char* const kUriLibURL;
231 static const char* const kHttpScheme; 247 static const char* const kHttpScheme;
232 static const char* const kVMServiceLibURL; 248 static const char* const kVMServiceLibURL;
233 249
234 static const uint8_t magic_number[];
235
236 static Dart_Handle LibraryFilePath(Dart_Handle library_uri); 250 static Dart_Handle LibraryFilePath(Dart_Handle library_uri);
237 251
238 private: 252 private:
239 static Dart_Handle SetWorkingDirectory(); 253 static Dart_Handle SetWorkingDirectory();
240 static Dart_Handle PrepareBuiltinLibrary(Dart_Handle builtin_lib, 254 static Dart_Handle PrepareBuiltinLibrary(Dart_Handle builtin_lib,
241 Dart_Handle internal_lib, 255 Dart_Handle internal_lib,
242 bool is_service_isolate, 256 bool is_service_isolate,
243 bool trace_loading); 257 bool trace_loading);
244 static Dart_Handle PrepareCoreLibrary(Dart_Handle core_lib, 258 static Dart_Handle PrepareCoreLibrary(Dart_Handle core_lib,
245 Dart_Handle builtin_lib, 259 Dart_Handle builtin_lib,
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 bool is_typed_data_; 680 bool is_typed_data_;
667 681
668 DISALLOW_ALLOCATION(); 682 DISALLOW_ALLOCATION();
669 DISALLOW_COPY_AND_ASSIGN(ScopedMemBuffer); 683 DISALLOW_COPY_AND_ASSIGN(ScopedMemBuffer);
670 }; 684 };
671 685
672 } // namespace bin 686 } // namespace bin
673 } // namespace dart 687 } // namespace dart
674 688
675 #endif // BIN_DARTUTILS_H_ 689 #endif // BIN_DARTUTILS_H_
OLDNEW
« no previous file with comments | « no previous file | runtime/bin/dartutils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698