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

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

Issue 3001343002: Remove GC prologue and epilogue callbacks. (Closed)
Patch Set: Created 3 years, 4 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 | « runtime/include/dart_api.h ('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 "lib/stacktrace.h" 9 #include "lib/stacktrace.h"
10 #include "platform/assert.h" 10 #include "platform/assert.h"
(...skipping 1004 matching lines...) Expand 10 before | Expand all | Expand 10 after
1015 NoSafepointScope no_safepoint_scope; 1015 NoSafepointScope no_safepoint_scope;
1016 ASSERT(isolate == Isolate::Current()); 1016 ASSERT(isolate == Isolate::Current());
1017 ApiState* state = isolate->api_state(); 1017 ApiState* state = isolate->api_state();
1018 ASSERT(state != NULL); 1018 ASSERT(state != NULL);
1019 FinalizablePersistentHandle* weak_ref = 1019 FinalizablePersistentHandle* weak_ref =
1020 FinalizablePersistentHandle::Cast(object); 1020 FinalizablePersistentHandle::Cast(object);
1021 weak_ref->EnsureFreeExternal(isolate); 1021 weak_ref->EnsureFreeExternal(isolate);
1022 state->weak_persistent_handles().FreeHandle(weak_ref); 1022 state->weak_persistent_handles().FreeHandle(weak_ref);
1023 } 1023 }
1024 1024
1025 // --- Garbage Collection Callbacks --
1026
1027 DART_EXPORT Dart_Handle
1028 Dart_SetGcCallbacks(Dart_GcPrologueCallback prologue_callback,
1029 Dart_GcEpilogueCallback epilogue_callback) {
1030 Thread* thread = Thread::Current();
1031 Isolate* isolate = thread->isolate();
1032 CHECK_ISOLATE(isolate);
1033 DARTSCOPE(thread);
1034 if (prologue_callback != NULL) {
1035 if (isolate->gc_prologue_callback() != NULL) {
1036 return Api::NewError(
1037 "%s permits only one gc prologue callback to be registered, please "
1038 "remove the existing callback and then add this callback",
1039 CURRENT_FUNC);
1040 }
1041 } else {
1042 if (isolate->gc_prologue_callback() == NULL) {
1043 return Api::NewError(
1044 "%s expects 'prologue_callback' to be present in the callback set.",
1045 CURRENT_FUNC);
1046 }
1047 }
1048 if (epilogue_callback != NULL) {
1049 if (isolate->gc_epilogue_callback() != NULL) {
1050 return Api::NewError(
1051 "%s permits only one gc epilogue callback to be registered, please "
1052 "remove the existing callback and then add this callback",
1053 CURRENT_FUNC);
1054 }
1055 } else {
1056 if (isolate->gc_epilogue_callback() == NULL) {
1057 return Api::NewError(
1058 "%s expects 'epilogue_callback' to be present in the callback set.",
1059 CURRENT_FUNC);
1060 }
1061 }
1062 isolate->set_gc_prologue_callback(prologue_callback);
1063 isolate->set_gc_epilogue_callback(epilogue_callback);
1064 return Api::Success();
1065 }
1066
1067 // --- Initialization and Globals --- 1025 // --- Initialization and Globals ---
1068 1026
1069 DART_EXPORT const char* Dart_VersionString() { 1027 DART_EXPORT const char* Dart_VersionString() {
1070 return Version::String(); 1028 return Version::String();
1071 } 1029 }
1072 1030
1073 DART_EXPORT char* Dart_Initialize(Dart_InitializeParams* params) { 1031 DART_EXPORT char* Dart_Initialize(Dart_InitializeParams* params) {
1074 if (params == NULL) { 1032 if (params == NULL) {
1075 return strdup( 1033 return strdup(
1076 "Dart_Initialize: " 1034 "Dart_Initialize: "
(...skipping 5664 matching lines...) Expand 10 before | Expand all | Expand 10 after
6741 #endif 6699 #endif
6742 } 6700 }
6743 6701
6744 DART_EXPORT void Dart_DumpNativeStackTrace(void* context) { 6702 DART_EXPORT void Dart_DumpNativeStackTrace(void* context) {
6745 #ifndef PRODUCT 6703 #ifndef PRODUCT
6746 Profiler::DumpStackTrace(context); 6704 Profiler::DumpStackTrace(context);
6747 #endif 6705 #endif
6748 } 6706 }
6749 6707
6750 } // namespace dart 6708 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/include/dart_api.h ('k') | runtime/vm/dart_api_impl_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698