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

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

Issue 1944213002: Support for taking full snapshots from 'dart', not just 'dart_bootstrap'. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 7 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
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 "lib/stacktrace.h" 10 #include "lib/stacktrace.h"
(...skipping 1476 matching lines...) Expand 10 before | Expand all | Expand 10 after
1487 1487
1488 #if defined(DEBUG) 1488 #if defined(DEBUG)
1489 FunctionVisitor check_canonical(T); 1489 FunctionVisitor check_canonical(T);
1490 I->heap()->IterateObjects(&check_canonical); 1490 I->heap()->IterateObjects(&check_canonical);
1491 #endif // #if defined(DEBUG). 1491 #endif // #if defined(DEBUG).
1492 1492
1493 FullSnapshotWriter writer(Snapshot::kCore, 1493 FullSnapshotWriter writer(Snapshot::kCore,
1494 vm_isolate_snapshot_buffer, 1494 vm_isolate_snapshot_buffer,
1495 isolate_snapshot_buffer, 1495 isolate_snapshot_buffer,
1496 ApiReallocate, 1496 ApiReallocate,
1497 NULL, /* instructions_writer */ 1497 NULL /* instructions_writer */);
1498 true /* vm_isolate_is_symbolic */);
1499 writer.WriteFullSnapshot(); 1498 writer.WriteFullSnapshot();
1500 *vm_isolate_snapshot_size = writer.VmIsolateSnapshotSize(); 1499 *vm_isolate_snapshot_size = writer.VmIsolateSnapshotSize();
1501 *isolate_snapshot_size = writer.IsolateSnapshotSize(); 1500 *isolate_snapshot_size = writer.IsolateSnapshotSize();
1502 return Api::Success(); 1501 return Api::Success();
1503 } 1502 }
1504 1503
1505 1504
1506 static Dart_Handle createLibrarySnapshot(Dart_Handle library, 1505 static Dart_Handle createLibrarySnapshot(Dart_Handle library,
1507 uint8_t** buffer, 1506 uint8_t** buffer,
1508 intptr_t* size) { 1507 intptr_t* size) {
(...skipping 4607 matching lines...) Expand 10 before | Expand all | Expand 10 after
6116 RETURN_NULL_ERROR(assembly_size); 6115 RETURN_NULL_ERROR(assembly_size);
6117 } 6116 }
6118 I->heap()->CollectAllGarbage(); 6117 I->heap()->CollectAllGarbage();
6119 AssemblyInstructionsWriter instructions_writer(assembly_buffer, 6118 AssemblyInstructionsWriter instructions_writer(assembly_buffer,
6120 ApiReallocate, 6119 ApiReallocate,
6121 2 * MB /* initial_size */); 6120 2 * MB /* initial_size */);
6122 FullSnapshotWriter writer(Snapshot::kAppNoJIT, 6121 FullSnapshotWriter writer(Snapshot::kAppNoJIT,
6123 vm_isolate_snapshot_buffer, 6122 vm_isolate_snapshot_buffer,
6124 isolate_snapshot_buffer, 6123 isolate_snapshot_buffer,
6125 ApiReallocate, 6124 ApiReallocate,
6126 &instructions_writer, 6125 &instructions_writer);
6127 false /* vm_isolate_is_symbolic */);
6128 6126
6129 writer.WriteFullSnapshot(); 6127 writer.WriteFullSnapshot();
6130 *vm_isolate_snapshot_size = writer.VmIsolateSnapshotSize(); 6128 *vm_isolate_snapshot_size = writer.VmIsolateSnapshotSize();
6131 *isolate_snapshot_size = writer.IsolateSnapshotSize(); 6129 *isolate_snapshot_size = writer.IsolateSnapshotSize();
6132 *assembly_size = instructions_writer.AssemblySize(); 6130 *assembly_size = instructions_writer.AssemblySize();
6133 6131
6134 return Api::Success(); 6132 return Api::Success();
6135 } 6133 }
6136 6134
6137 6135
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
6178 } 6176 }
6179 I->heap()->CollectAllGarbage(); 6177 I->heap()->CollectAllGarbage();
6180 BlobInstructionsWriter instructions_writer(instructions_blob_buffer, 6178 BlobInstructionsWriter instructions_writer(instructions_blob_buffer,
6181 rodata_blob_buffer, 6179 rodata_blob_buffer,
6182 ApiReallocate, 6180 ApiReallocate,
6183 2 * MB /* initial_size */); 6181 2 * MB /* initial_size */);
6184 FullSnapshotWriter writer(Snapshot::kAppNoJIT, 6182 FullSnapshotWriter writer(Snapshot::kAppNoJIT,
6185 vm_isolate_snapshot_buffer, 6183 vm_isolate_snapshot_buffer,
6186 isolate_snapshot_buffer, 6184 isolate_snapshot_buffer,
6187 ApiReallocate, 6185 ApiReallocate,
6188 &instructions_writer, 6186 &instructions_writer);
6189 false /* vm_isolate_is_symbolic */);
6190 6187
6191 writer.WriteFullSnapshot(); 6188 writer.WriteFullSnapshot();
6192 *vm_isolate_snapshot_size = writer.VmIsolateSnapshotSize(); 6189 *vm_isolate_snapshot_size = writer.VmIsolateSnapshotSize();
6193 *isolate_snapshot_size = writer.IsolateSnapshotSize(); 6190 *isolate_snapshot_size = writer.IsolateSnapshotSize();
6194 *instructions_blob_size = instructions_writer.InstructionsBlobSize(); 6191 *instructions_blob_size = instructions_writer.InstructionsBlobSize();
6195 *rodata_blob_size = instructions_writer.RodataBlobSize(); 6192 *rodata_blob_size = instructions_writer.RodataBlobSize();
6196 6193
6197 return Api::Success(); 6194 return Api::Success();
6198 } 6195 }
6199 #endif // DART_PRECOMPILER 6196 #endif // DART_PRECOMPILER
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
6277 I->StopBackgroundCompiler(); 6274 I->StopBackgroundCompiler();
6278 6275
6279 BlobInstructionsWriter instructions_writer(instructions_blob_buffer, 6276 BlobInstructionsWriter instructions_writer(instructions_blob_buffer,
6280 rodata_blob_buffer, 6277 rodata_blob_buffer,
6281 ApiReallocate, 6278 ApiReallocate,
6282 2 * MB /* initial_size */); 6279 2 * MB /* initial_size */);
6283 FullSnapshotWriter writer(Snapshot::kAppWithJIT, 6280 FullSnapshotWriter writer(Snapshot::kAppWithJIT,
6284 vm_isolate_snapshot_buffer, 6281 vm_isolate_snapshot_buffer,
6285 isolate_snapshot_buffer, 6282 isolate_snapshot_buffer,
6286 ApiReallocate, 6283 ApiReallocate,
6287 &instructions_writer, 6284 &instructions_writer);
6288 false /* vm_isolate_is_symbolic */);
6289 writer.WriteFullSnapshot(); 6285 writer.WriteFullSnapshot();
6290 *vm_isolate_snapshot_size = writer.VmIsolateSnapshotSize(); 6286 *vm_isolate_snapshot_size = writer.VmIsolateSnapshotSize();
6291 *isolate_snapshot_size = writer.IsolateSnapshotSize(); 6287 *isolate_snapshot_size = writer.IsolateSnapshotSize();
6292 *instructions_blob_size = instructions_writer.InstructionsBlobSize(); 6288 *instructions_blob_size = instructions_writer.InstructionsBlobSize();
6293 *rodata_blob_size = instructions_writer.RodataBlobSize(); 6289 *rodata_blob_size = instructions_writer.RodataBlobSize();
6294 6290
6295 return Api::Success(); 6291 return Api::Success();
6296 } 6292 }
6297 6293
6298 6294
6299 DART_EXPORT bool Dart_IsRunningPrecompiledCode() { 6295 DART_EXPORT bool Dart_IsRunningPrecompiledCode() {
6300 return Snapshot::IncludesCode(Dart::snapshot_kind()); 6296 return Snapshot::IncludesCode(Dart::snapshot_kind());
6301 } 6297 }
6302 6298
6303 6299
6304 DART_EXPORT bool Dart_IsPrecompiledRuntime() { 6300 DART_EXPORT bool Dart_IsPrecompiledRuntime() {
6305 #if defined(DART_PRECOMPILED_RUNTIME) 6301 #if defined(DART_PRECOMPILED_RUNTIME)
6306 return true; 6302 return true;
6307 #else 6303 #else
6308 return false; 6304 return false;
6309 #endif 6305 #endif
6310 } 6306 }
6311 6307
6312 } // namespace dart 6308 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/dart.cc ('k') | runtime/vm/precompiler.cc » ('j') | runtime/vm/precompiler.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698