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

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

Issue 196413011: - Implement a PauseTimerScope so that we can properly exclude (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 9 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
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/bigint_operations.h" 10 #include "vm/bigint_operations.h"
(...skipping 953 matching lines...) Expand 10 before | Expand all | Expand 10 after
964 { 964 {
965 StackZone zone(isolate); 965 StackZone zone(isolate);
966 HANDLESCOPE(isolate); 966 HANDLESCOPE(isolate);
967 const Error& error_obj = 967 const Error& error_obj =
968 Error::Handle(isolate, 968 Error::Handle(isolate,
969 Dart::InitializeIsolate(snapshot, callback_data)); 969 Dart::InitializeIsolate(snapshot, callback_data));
970 if (error_obj.IsNull()) { 970 if (error_obj.IsNull()) {
971 if (FLAG_check_function_fingerprints) { 971 if (FLAG_check_function_fingerprints) {
972 Library::CheckFunctionFingerprints(); 972 Library::CheckFunctionFingerprints();
973 } 973 }
974 START_TIMER(time_total_runtime); 974 START_TIMER(isolate, time_total_runtime);
975 return reinterpret_cast<Dart_Isolate>(isolate); 975 return reinterpret_cast<Dart_Isolate>(isolate);
976 } 976 }
977 *error = strdup(error_obj.ToErrorCString()); 977 *error = strdup(error_obj.ToErrorCString());
978 } 978 }
979 Dart::ShutdownIsolate(); 979 Dart::ShutdownIsolate();
980 return reinterpret_cast<Dart_Isolate>(NULL); 980 return reinterpret_cast<Dart_Isolate>(NULL);
981 } 981 }
982 982
983 983
984 DART_EXPORT void Dart_ShutdownIsolate() { 984 DART_EXPORT void Dart_ShutdownIsolate() {
985 Isolate* isolate = Isolate::Current(); 985 Isolate* isolate = Isolate::Current();
986 CHECK_ISOLATE(isolate); 986 CHECK_ISOLATE(isolate);
987 { 987 {
988 StackZone zone(isolate); 988 StackZone zone(isolate);
989 HandleScope handle_scope(isolate); 989 HandleScope handle_scope(isolate);
990 Dart::RunShutdownCallback(); 990 Dart::RunShutdownCallback();
991 } 991 }
992 STOP_TIMER(time_total_runtime); 992 STOP_TIMER(isolate, time_total_runtime);
993 Dart::ShutdownIsolate(); 993 Dart::ShutdownIsolate();
994 } 994 }
995 995
996 996
997 DART_EXPORT Dart_Isolate Dart_CurrentIsolate() { 997 DART_EXPORT Dart_Isolate Dart_CurrentIsolate() {
998 return Api::CastIsolate(Isolate::Current()); 998 return Api::CastIsolate(Isolate::Current());
999 } 999 }
1000 1000
1001 1001
1002 DART_EXPORT void* Dart_CurrentIsolateData() { 1002 DART_EXPORT void* Dart_CurrentIsolateData() {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1044 intptr_t new_size) { 1044 intptr_t new_size) {
1045 return Api::TopScope(Isolate::Current())->zone()->Realloc<uint8_t>( 1045 return Api::TopScope(Isolate::Current())->zone()->Realloc<uint8_t>(
1046 ptr, old_size, new_size); 1046 ptr, old_size, new_size);
1047 } 1047 }
1048 1048
1049 1049
1050 DART_EXPORT Dart_Handle Dart_CreateSnapshot(uint8_t** buffer, 1050 DART_EXPORT Dart_Handle Dart_CreateSnapshot(uint8_t** buffer,
1051 intptr_t* size) { 1051 intptr_t* size) {
1052 Isolate* isolate = Isolate::Current(); 1052 Isolate* isolate = Isolate::Current();
1053 DARTSCOPE(isolate); 1053 DARTSCOPE(isolate);
1054 TIMERSCOPE(time_creating_snapshot); 1054 TIMERSCOPE(isolate, time_creating_snapshot);
1055 if (buffer == NULL) { 1055 if (buffer == NULL) {
1056 RETURN_NULL_ERROR(buffer); 1056 RETURN_NULL_ERROR(buffer);
1057 } 1057 }
1058 if (size == NULL) { 1058 if (size == NULL) {
1059 RETURN_NULL_ERROR(size); 1059 RETURN_NULL_ERROR(size);
1060 } 1060 }
1061 Dart_Handle state = Api::CheckIsolateState(isolate); 1061 Dart_Handle state = Api::CheckIsolateState(isolate);
1062 if (::Dart_IsError(state)) { 1062 if (::Dart_IsError(state)) {
1063 return state; 1063 return state;
1064 } 1064 }
1065 // Since this is only a snapshot the root library should not be set. 1065 // Since this is only a snapshot the root library should not be set.
1066 isolate->object_store()->set_root_library(Library::Handle(isolate)); 1066 isolate->object_store()->set_root_library(Library::Handle(isolate));
1067 FullSnapshotWriter writer(buffer, ApiReallocate); 1067 FullSnapshotWriter writer(buffer, ApiReallocate);
1068 writer.WriteFullSnapshot(); 1068 writer.WriteFullSnapshot();
1069 *size = writer.BytesWritten(); 1069 *size = writer.BytesWritten();
1070 return Api::Success(); 1070 return Api::Success();
1071 } 1071 }
1072 1072
1073 1073
1074 DART_EXPORT Dart_Handle Dart_CreateScriptSnapshot(uint8_t** buffer, 1074 DART_EXPORT Dart_Handle Dart_CreateScriptSnapshot(uint8_t** buffer,
1075 intptr_t* size) { 1075 intptr_t* size) {
1076 Isolate* isolate = Isolate::Current(); 1076 Isolate* isolate = Isolate::Current();
1077 DARTSCOPE(isolate); 1077 DARTSCOPE(isolate);
1078 TIMERSCOPE(time_creating_snapshot); 1078 TIMERSCOPE(isolate, time_creating_snapshot);
1079 if (buffer == NULL) { 1079 if (buffer == NULL) {
1080 RETURN_NULL_ERROR(buffer); 1080 RETURN_NULL_ERROR(buffer);
1081 } 1081 }
1082 if (size == NULL) { 1082 if (size == NULL) {
1083 RETURN_NULL_ERROR(size); 1083 RETURN_NULL_ERROR(size);
1084 } 1084 }
1085 Dart_Handle state = Api::CheckIsolateState(isolate); 1085 Dart_Handle state = Api::CheckIsolateState(isolate);
1086 if (::Dart_IsError(state)) { 1086 if (::Dart_IsError(state)) {
1087 return state; 1087 return state;
1088 } 1088 }
(...skipping 2235 matching lines...) Expand 10 before | Expand all | Expand 10 after
3324 3324
3325 DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target, 3325 DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target,
3326 Dart_Handle name, 3326 Dart_Handle name,
3327 int number_of_arguments, 3327 int number_of_arguments,
3328 Dart_Handle* arguments) { 3328 Dart_Handle* arguments) {
3329 Isolate* isolate = Isolate::Current(); 3329 Isolate* isolate = Isolate::Current();
3330 DARTSCOPE(isolate); 3330 DARTSCOPE(isolate);
3331 CHECK_CALLBACK_STATE(isolate); 3331 CHECK_CALLBACK_STATE(isolate);
3332 // TODO(turnidge): This is a bit simplistic. It overcounts when 3332 // TODO(turnidge): This is a bit simplistic. It overcounts when
3333 // other operations (gc, compilation) are active. 3333 // other operations (gc, compilation) are active.
3334 TIMERSCOPE(time_dart_execution); 3334 TIMERSCOPE(isolate, time_dart_execution);
3335 3335
3336 const String& function_name = Api::UnwrapStringHandle(isolate, name); 3336 const String& function_name = Api::UnwrapStringHandle(isolate, name);
3337 if (function_name.IsNull()) { 3337 if (function_name.IsNull()) {
3338 RETURN_TYPE_ERROR(isolate, name, String); 3338 RETURN_TYPE_ERROR(isolate, name, String);
3339 } 3339 }
3340 if (number_of_arguments < 0) { 3340 if (number_of_arguments < 0) {
3341 return Api::NewError( 3341 return Api::NewError(
3342 "%s expects argument 'number_of_arguments' to be non-negative.", 3342 "%s expects argument 'number_of_arguments' to be non-negative.",
3343 CURRENT_FUNC); 3343 CURRENT_FUNC);
3344 } 3344 }
(...skipping 885 matching lines...) Expand 10 before | Expand all | Expand 10 after
4230 lib.SetLoadError(); 4230 lib.SetLoadError();
4231 } 4231 }
4232 } 4232 }
4233 } 4233 }
4234 4234
4235 4235
4236 DART_EXPORT Dart_Handle Dart_LoadScript(Dart_Handle url, 4236 DART_EXPORT Dart_Handle Dart_LoadScript(Dart_Handle url,
4237 Dart_Handle source, 4237 Dart_Handle source,
4238 intptr_t line_offset, 4238 intptr_t line_offset,
4239 intptr_t col_offset) { 4239 intptr_t col_offset) {
4240 TIMERSCOPE(time_script_loading);
4241 Isolate* isolate = Isolate::Current(); 4240 Isolate* isolate = Isolate::Current();
4242 DARTSCOPE(isolate); 4241 DARTSCOPE(isolate);
4242 TIMERSCOPE(isolate, time_script_loading);
4243 const String& url_str = Api::UnwrapStringHandle(isolate, url); 4243 const String& url_str = Api::UnwrapStringHandle(isolate, url);
4244 if (url_str.IsNull()) { 4244 if (url_str.IsNull()) {
4245 RETURN_TYPE_ERROR(isolate, url, String); 4245 RETURN_TYPE_ERROR(isolate, url, String);
4246 } 4246 }
4247 const String& source_str = Api::UnwrapStringHandle(isolate, source); 4247 const String& source_str = Api::UnwrapStringHandle(isolate, source);
4248 if (source_str.IsNull()) { 4248 if (source_str.IsNull()) {
4249 RETURN_TYPE_ERROR(isolate, source, String); 4249 RETURN_TYPE_ERROR(isolate, source, String);
4250 } 4250 }
4251 Library& library = 4251 Library& library =
4252 Library::Handle(isolate, isolate->object_store()->root_library()); 4252 Library::Handle(isolate, isolate->object_store()->root_library());
(...skipping 25 matching lines...) Expand all
4278 Dart_Handle result; 4278 Dart_Handle result;
4279 CompileSource(isolate, library, script, &result); 4279 CompileSource(isolate, library, script, &result);
4280 return result; 4280 return result;
4281 } 4281 }
4282 4282
4283 4283
4284 DART_EXPORT Dart_Handle Dart_LoadScriptFromSnapshot(const uint8_t* buffer, 4284 DART_EXPORT Dart_Handle Dart_LoadScriptFromSnapshot(const uint8_t* buffer,
4285 intptr_t buffer_len) { 4285 intptr_t buffer_len) {
4286 Isolate* isolate = Isolate::Current(); 4286 Isolate* isolate = Isolate::Current();
4287 DARTSCOPE(isolate); 4287 DARTSCOPE(isolate);
4288 TIMERSCOPE(time_script_loading); 4288 TIMERSCOPE(isolate, time_script_loading);
4289 if (buffer == NULL) { 4289 if (buffer == NULL) {
4290 RETURN_NULL_ERROR(buffer); 4290 RETURN_NULL_ERROR(buffer);
4291 } 4291 }
4292 NoHeapGrowthControlScope no_growth_control; 4292 NoHeapGrowthControlScope no_growth_control;
4293 4293
4294 const Snapshot* snapshot = Snapshot::SetupFromBuffer(buffer); 4294 const Snapshot* snapshot = Snapshot::SetupFromBuffer(buffer);
4295 if (!snapshot->IsScriptSnapshot()) { 4295 if (!snapshot->IsScriptSnapshot()) {
4296 return Api::NewError("%s expects parameter 'buffer' to be a script type" 4296 return Api::NewError("%s expects parameter 'buffer' to be a script type"
4297 " snapshot.", CURRENT_FUNC); 4297 " snapshot.", CURRENT_FUNC);
4298 } 4298 }
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
4458 return Api::NewError("%s: library '%s' not found.", 4458 return Api::NewError("%s: library '%s' not found.",
4459 CURRENT_FUNC, url_str.ToCString()); 4459 CURRENT_FUNC, url_str.ToCString());
4460 } else { 4460 } else {
4461 return Api::NewHandle(isolate, library.raw()); 4461 return Api::NewHandle(isolate, library.raw());
4462 } 4462 }
4463 } 4463 }
4464 4464
4465 4465
4466 DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url, 4466 DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url,
4467 Dart_Handle source) { 4467 Dart_Handle source) {
4468 TIMERSCOPE(time_script_loading);
4469 Isolate* isolate = Isolate::Current(); 4468 Isolate* isolate = Isolate::Current();
4470 DARTSCOPE(isolate); 4469 DARTSCOPE(isolate);
4470 TIMERSCOPE(isolate, time_script_loading);
4471 const String& url_str = Api::UnwrapStringHandle(isolate, url); 4471 const String& url_str = Api::UnwrapStringHandle(isolate, url);
4472 if (url_str.IsNull()) { 4472 if (url_str.IsNull()) {
4473 RETURN_TYPE_ERROR(isolate, url, String); 4473 RETURN_TYPE_ERROR(isolate, url, String);
4474 } 4474 }
4475 const String& source_str = Api::UnwrapStringHandle(isolate, source); 4475 const String& source_str = Api::UnwrapStringHandle(isolate, source);
4476 if (source_str.IsNull()) { 4476 if (source_str.IsNull()) {
4477 RETURN_TYPE_ERROR(isolate, source, String); 4477 RETURN_TYPE_ERROR(isolate, source, String);
4478 } 4478 }
4479 CHECK_CALLBACK_STATE(isolate); 4479 CHECK_CALLBACK_STATE(isolate);
4480 4480
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
4550 library_vm.AddObject(library_prefix, prefix_symbol); 4550 library_vm.AddObject(library_prefix, prefix_symbol);
4551 } 4551 }
4552 } 4552 }
4553 return Api::Success(); 4553 return Api::Success();
4554 } 4554 }
4555 4555
4556 4556
4557 DART_EXPORT Dart_Handle Dart_LoadSource(Dart_Handle library, 4557 DART_EXPORT Dart_Handle Dart_LoadSource(Dart_Handle library,
4558 Dart_Handle url, 4558 Dart_Handle url,
4559 Dart_Handle source) { 4559 Dart_Handle source) {
4560 TIMERSCOPE(time_script_loading);
4561 Isolate* isolate = Isolate::Current(); 4560 Isolate* isolate = Isolate::Current();
4562 DARTSCOPE(isolate); 4561 DARTSCOPE(isolate);
4562 TIMERSCOPE(isolate, time_script_loading);
4563 const Library& lib = Api::UnwrapLibraryHandle(isolate, library); 4563 const Library& lib = Api::UnwrapLibraryHandle(isolate, library);
4564 if (lib.IsNull()) { 4564 if (lib.IsNull()) {
4565 RETURN_TYPE_ERROR(isolate, library, Library); 4565 RETURN_TYPE_ERROR(isolate, library, Library);
4566 } 4566 }
4567 const String& url_str = Api::UnwrapStringHandle(isolate, url); 4567 const String& url_str = Api::UnwrapStringHandle(isolate, url);
4568 if (url_str.IsNull()) { 4568 if (url_str.IsNull()) {
4569 RETURN_TYPE_ERROR(isolate, url, String); 4569 RETURN_TYPE_ERROR(isolate, url, String);
4570 } 4570 }
4571 const String& source_str = Api::UnwrapStringHandle(isolate, source); 4571 const String& source_str = Api::UnwrapStringHandle(isolate, source);
4572 if (source_str.IsNull()) { 4572 if (source_str.IsNull()) {
4573 RETURN_TYPE_ERROR(isolate, source, String); 4573 RETURN_TYPE_ERROR(isolate, source, String);
4574 } 4574 }
4575 CHECK_CALLBACK_STATE(isolate); 4575 CHECK_CALLBACK_STATE(isolate);
4576 4576
4577 NoHeapGrowthControlScope no_growth_control; 4577 NoHeapGrowthControlScope no_growth_control;
4578 4578
4579 const Script& script = Script::Handle( 4579 const Script& script = Script::Handle(
4580 isolate, Script::New(url_str, source_str, RawScript::kSourceTag)); 4580 isolate, Script::New(url_str, source_str, RawScript::kSourceTag));
4581 Dart_Handle result; 4581 Dart_Handle result;
4582 CompileSource(isolate, lib, script, &result); 4582 CompileSource(isolate, lib, script, &result);
4583 return result; 4583 return result;
4584 } 4584 }
4585 4585
4586 4586
4587 DART_EXPORT Dart_Handle Dart_LibraryLoadPatch(Dart_Handle library, 4587 DART_EXPORT Dart_Handle Dart_LibraryLoadPatch(Dart_Handle library,
4588 Dart_Handle url, 4588 Dart_Handle url,
4589 Dart_Handle patch_source) { 4589 Dart_Handle patch_source) {
4590 TIMERSCOPE(time_script_loading);
4591 Isolate* isolate = Isolate::Current(); 4590 Isolate* isolate = Isolate::Current();
4592 DARTSCOPE(isolate); 4591 DARTSCOPE(isolate);
4592 TIMERSCOPE(isolate, time_script_loading);
4593 const Library& lib = Api::UnwrapLibraryHandle(isolate, library); 4593 const Library& lib = Api::UnwrapLibraryHandle(isolate, library);
4594 if (lib.IsNull()) { 4594 if (lib.IsNull()) {
4595 RETURN_TYPE_ERROR(isolate, library, Library); 4595 RETURN_TYPE_ERROR(isolate, library, Library);
4596 } 4596 }
4597 const String& url_str = Api::UnwrapStringHandle(isolate, url); 4597 const String& url_str = Api::UnwrapStringHandle(isolate, url);
4598 if (url_str.IsNull()) { 4598 if (url_str.IsNull()) {
4599 RETURN_TYPE_ERROR(isolate, url, String); 4599 RETURN_TYPE_ERROR(isolate, url, String);
4600 } 4600 }
4601 const String& source_str = Api::UnwrapStringHandle(isolate, patch_source); 4601 const String& source_str = Api::UnwrapStringHandle(isolate, patch_source);
4602 if (source_str.IsNull()) { 4602 if (source_str.IsNull()) {
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
4694 4694
4695 4695
4696 DART_EXPORT void Dart_RegisterRootServiceRequestCallback( 4696 DART_EXPORT void Dart_RegisterRootServiceRequestCallback(
4697 const char* name, 4697 const char* name,
4698 Dart_ServiceRequestCallback callback, 4698 Dart_ServiceRequestCallback callback,
4699 void* user_data) { 4699 void* user_data) {
4700 Service::RegisterRootEmbedderCallback(name, callback, user_data); 4700 Service::RegisterRootEmbedderCallback(name, callback, user_data);
4701 } 4701 }
4702 4702
4703 } // namespace dart 4703 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/dart.cc ('k') | runtime/vm/isolate.cc » ('j') | runtime/vm/timer.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698