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

Side by Side Diff: runtime/vm/dart_api_impl.cc

Issue 1023753006: First step towards splitting a full snapshot into a vm isolate snapshot and a (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 5 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « runtime/vm/dart.cc ('k') | runtime/vm/dart_api_impl_test.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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 "include/dart_api.h" 5 #include "include/dart_api.h"
6 #include "include/dart_mirrors_api.h" 6 #include "include/dart_mirrors_api.h"
7 #include "include/dart_native_api.h" 7 #include "include/dart_native_api.h"
8 8
9 #include "platform/assert.h" 9 #include "platform/assert.h"
10 #include "vm/class_finalizer.h" 10 #include "vm/class_finalizer.h"
(...skipping 1182 matching lines...) Expand 10 before | Expand all | Expand 10 after
1193 } 1193 }
1194 1194
1195 1195
1196 // --- Initialization and Globals --- 1196 // --- Initialization and Globals ---
1197 1197
1198 DART_EXPORT const char* Dart_VersionString() { 1198 DART_EXPORT const char* Dart_VersionString() {
1199 return Version::String(); 1199 return Version::String();
1200 } 1200 }
1201 1201
1202 DART_EXPORT bool Dart_Initialize( 1202 DART_EXPORT bool Dart_Initialize(
1203 const uint8_t* vm_isolate_snapshot,
1203 Dart_IsolateCreateCallback create, 1204 Dart_IsolateCreateCallback create,
1204 Dart_IsolateInterruptCallback interrupt, 1205 Dart_IsolateInterruptCallback interrupt,
1205 Dart_IsolateUnhandledExceptionCallback unhandled, 1206 Dart_IsolateUnhandledExceptionCallback unhandled,
1206 Dart_IsolateShutdownCallback shutdown, 1207 Dart_IsolateShutdownCallback shutdown,
1207 Dart_FileOpenCallback file_open, 1208 Dart_FileOpenCallback file_open,
1208 Dart_FileReadCallback file_read, 1209 Dart_FileReadCallback file_read,
1209 Dart_FileWriteCallback file_write, 1210 Dart_FileWriteCallback file_write,
1210 Dart_FileCloseCallback file_close, 1211 Dart_FileCloseCallback file_close,
1211 Dart_EntropySource entropy_source) { 1212 Dart_EntropySource entropy_source) {
1212 const char* err_msg = Dart::InitOnce(create, interrupt, unhandled, shutdown, 1213 const char* err_msg = Dart::InitOnce(vm_isolate_snapshot,
1214 create, interrupt, unhandled, shutdown,
1213 file_open, file_read, file_write, 1215 file_open, file_read, file_write,
1214 file_close, entropy_source); 1216 file_close, entropy_source);
1215 if (err_msg != NULL) { 1217 if (err_msg != NULL) {
1216 OS::PrintErr("Dart_Initialize: %s\n", err_msg); 1218 OS::PrintErr("Dart_Initialize: %s\n", err_msg);
1217 return false; 1219 return false;
1218 } 1220 }
1219 return true; 1221 return true;
1220 } 1222 }
1221 1223
1222 1224
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
1401 1403
1402 1404
1403 static uint8_t* ApiReallocate(uint8_t* ptr, 1405 static uint8_t* ApiReallocate(uint8_t* ptr,
1404 intptr_t old_size, 1406 intptr_t old_size,
1405 intptr_t new_size) { 1407 intptr_t new_size) {
1406 return Api::TopScope(Isolate::Current())->zone()->Realloc<uint8_t>( 1408 return Api::TopScope(Isolate::Current())->zone()->Realloc<uint8_t>(
1407 ptr, old_size, new_size); 1409 ptr, old_size, new_size);
1408 } 1410 }
1409 1411
1410 1412
1411 DART_EXPORT Dart_Handle Dart_CreateSnapshot(uint8_t** buffer, 1413 DART_EXPORT Dart_Handle Dart_CreateSnapshot(
1412 intptr_t* size) { 1414 uint8_t** vm_isolate_snapshot_buffer,
1415 intptr_t* vm_isolate_snapshot_size,
1416 uint8_t** isolate_snapshot_buffer,
1417 intptr_t* isolate_snapshot_size) {
1413 Isolate* isolate = Isolate::Current(); 1418 Isolate* isolate = Isolate::Current();
1414 DARTSCOPE(isolate); 1419 DARTSCOPE(isolate);
1415 TIMERSCOPE(isolate, time_creating_snapshot); 1420 TIMERSCOPE(isolate, time_creating_snapshot);
1416 if (buffer == NULL) { 1421 if (vm_isolate_snapshot_buffer == NULL) {
1417 RETURN_NULL_ERROR(buffer); 1422 RETURN_NULL_ERROR(vm_isolate_snapshot_buffer);
1418 } 1423 }
1419 if (size == NULL) { 1424 if (vm_isolate_snapshot_size == NULL) {
1420 RETURN_NULL_ERROR(size); 1425 RETURN_NULL_ERROR(vm_isolate_snapshot_size);
1426 }
1427 if (isolate_snapshot_buffer == NULL) {
1428 RETURN_NULL_ERROR(isolate_snapshot_buffer);
1429 }
1430 if (isolate_snapshot_size == NULL) {
1431 RETURN_NULL_ERROR(isolate_snapshot_size);
1421 } 1432 }
1422 // Finalize all classes if needed. 1433 // Finalize all classes if needed.
1423 Dart_Handle state = Api::CheckAndFinalizePendingClasses(isolate); 1434 Dart_Handle state = Api::CheckAndFinalizePendingClasses(isolate);
1424 if (::Dart_IsError(state)) { 1435 if (::Dart_IsError(state)) {
1425 return state; 1436 return state;
1426 } 1437 }
1427 // Since this is only a snapshot the root library should not be set. 1438 // Since this is only a snapshot the root library should not be set.
1428 isolate->object_store()->set_root_library(Library::Handle(isolate)); 1439 isolate->object_store()->set_root_library(Library::Handle(isolate));
1429 FullSnapshotWriter writer(buffer, ApiReallocate); 1440 FullSnapshotWriter writer(vm_isolate_snapshot_buffer,
1441 isolate_snapshot_buffer,
1442 ApiReallocate);
1430 writer.WriteFullSnapshot(); 1443 writer.WriteFullSnapshot();
1431 *size = writer.BytesWritten(); 1444 *vm_isolate_snapshot_size = writer.VmIsolateSnapshotSize();
1445 *isolate_snapshot_size = writer.IsolateSnapshotSize();
1432 return Api::Success(); 1446 return Api::Success();
1433 } 1447 }
1434 1448
1435 1449
1436 DART_EXPORT Dart_Handle Dart_CreateScriptSnapshot(uint8_t** buffer, 1450 DART_EXPORT Dart_Handle Dart_CreateScriptSnapshot(uint8_t** buffer,
1437 intptr_t* size) { 1451 intptr_t* size) {
1438 Isolate* isolate = Isolate::Current(); 1452 Isolate* isolate = Isolate::Current();
1439 DARTSCOPE(isolate); 1453 DARTSCOPE(isolate);
1440 TIMERSCOPE(isolate, time_creating_snapshot); 1454 TIMERSCOPE(isolate, time_creating_snapshot);
1441 if (buffer == NULL) { 1455 if (buffer == NULL) {
(...skipping 4078 matching lines...) Expand 10 before | Expand all | Expand 10 after
5520 5534
5521 5535
5522 DART_EXPORT void Dart_RegisterRootServiceRequestCallback( 5536 DART_EXPORT void Dart_RegisterRootServiceRequestCallback(
5523 const char* name, 5537 const char* name,
5524 Dart_ServiceRequestCallback callback, 5538 Dart_ServiceRequestCallback callback,
5525 void* user_data) { 5539 void* user_data) {
5526 Service::RegisterRootEmbedderCallback(name, callback, user_data); 5540 Service::RegisterRootEmbedderCallback(name, callback, user_data);
5527 } 5541 }
5528 5542
5529 } // namespace dart 5543 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/dart.cc ('k') | runtime/vm/dart_api_impl_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698