Index: runtime/include/dart_api.h |
diff --git a/runtime/include/dart_api.h b/runtime/include/dart_api.h |
index ed19c9e2d4e41d6ea1c4d9f6f039319e329d24f2..8c82321020a2a402f32a9ec80adc00e8e84e2546 100644 |
--- a/runtime/include/dart_api.h |
+++ b/runtime/include/dart_api.h |
@@ -890,12 +890,14 @@ DART_EXPORT Dart_Isolate Dart_CreateIsolate(const char* script_uri, |
* |
* Requires there to be no current isolate. |
* |
+ * After this call, the `kernel_program` needs to be supplied to a call to |
+ * `Dart_LoadKernel()` which will then take ownership of the memory. |
+ * |
* \param script_uri The name of the script this isolate will load. |
* Provided only for advisory purposes to improve debugging messages. |
* \param main The name of the main entry point this isolate will run. |
* Provided only for advisory purposes to improve debugging messages. |
- * \param kernel A buffer containing the Dart Kernel binary. |
- * \param kernel_length The length of the Kernel buffer. |
+ * \param kernel_program The `dart::kernel::Program` object. |
* \param flags Pointer to VM specific flags or NULL for default flags. |
* \param callback_data Embedder data. This data will be passed to |
* the Dart_IsolateCreateCallback when new isolates are spawned from |
@@ -907,8 +909,7 @@ DART_EXPORT Dart_Isolate Dart_CreateIsolate(const char* script_uri, |
*/ |
DART_EXPORT Dart_Isolate Dart_CreateIsolateFromKernel(const char* script_uri, |
const char* main, |
- const uint8_t* kernel, |
- intptr_t kernel_length, |
+ void* kernel_program, |
Dart_IsolateFlags* flags, |
void* callback_data, |
char** error); |
@@ -2863,15 +2864,28 @@ DART_EXPORT Dart_Handle Dart_LoadScriptFromSnapshot(const uint8_t* buffer, |
intptr_t buffer_len); |
/** |
- * Loads a dart application which was compiled to a Kernel binary. |
+ * Loads a dart application via an in-memory kernel program. |
* |
- * \param buffer A buffer which contains a Kernel binary. |
- * \param buffer_len Length of the passed in buffer. |
+ * \param kernel_program The kernel program obtained via |
+ * `Dart_ReadKernelBinary`. |
+ * |
+ * The VM will take ownership of the `kernel_program` object. |
* |
* \return If no error occurs, the Library object corresponding to the root |
* script is returned. Otherwise an error handle is returned. |
*/ |
-DART_EXPORT Dart_Handle Dart_LoadKernel(const uint8_t* buffer, |
+DART_EXPORT Dart_Handle Dart_LoadKernel(void* kernel_program); |
+ |
+ |
+/** |
+ * Constructs an in-memory kernel program form a binary. |
+ * |
+ * \param buffer The start of a memory buffer containing the binary format. |
+ * \param buffer_len The length of the memory buffer. |
+ * |
+ * \return kernel_program The `dart::kernel::Program` object. |
+ */ |
+DART_EXPORT void* Dart_ReadKernelBinary(const uint8_t* buffer, |
intptr_t buffer_len); |
/** |