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

Unified Diff: runtime/vm/dart_api_impl.cc

Issue 1459173004: Remove support for object grouping during Garbage Collection (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: code-review Created 5 years, 1 month 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 side-by-side diff with in-line comments
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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/dart_api_impl.cc
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index b220e1f58d93411a7fad4799b9770acffa5196a1..4f910ccf0746e61db070e5746ccd2e12a1b53495 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -347,16 +347,6 @@ static RawObject* Send1Arg(const Instance& receiver,
}
-WeakReferenceSetBuilder* ApiState::NewWeakReferenceSetBuilder() {
- return new WeakReferenceSetBuilder(this);
-}
-
-
-void ApiState::DelayWeakReferenceSet(WeakReferenceSet* reference_set) {
- WeakReferenceSet::Push(reference_set, &delayed_weak_reference_sets_);
-}
-
-
Dart_Handle Api::InitNewHandle(Isolate* isolate, RawObject* raw) {
LocalHandles* local_handles = Api::TopScope(isolate)->local_handles();
ASSERT(local_handles != NULL);
@@ -691,8 +681,7 @@ FinalizablePersistentHandle* FinalizablePersistentHandle::Cast(
Dart_WeakPersistentHandle handle) {
#if defined(DEBUG)
ApiState* state = Isolate::Current()->api_state();
- ASSERT(state->IsValidWeakPersistentHandle(handle) ||
- state->IsValidPrologueWeakPersistentHandle(handle));
+ ASSERT(state->IsValidWeakPersistentHandle(handle));
#endif
return reinterpret_cast<FinalizablePersistentHandle*>(handle);
}
@@ -710,11 +699,7 @@ void FinalizablePersistentHandle::Finalize(
(*callback)(isolate->init_callback_data(), object, peer);
ApiState* state = isolate->api_state();
ASSERT(state != NULL);
- if (handle->IsPrologueWeakPersistent()) {
- state->prologue_weak_persistent_handles().FreeHandle(handle);
- } else {
- state->weak_persistent_handles().FreeHandle(handle);
- }
+ state->weak_persistent_handles().FreeHandle(handle);
}
@@ -1018,7 +1003,6 @@ DART_EXPORT void Dart_SetPersistentHandle(Dart_PersistentHandle obj1,
static Dart_WeakPersistentHandle AllocateFinalizableHandle(
Thread* thread,
Dart_Handle object,
- bool is_prologue,
void* peer,
intptr_t external_allocation_size,
Dart_WeakPersistentHandleFinalizer callback) {
@@ -1027,7 +1011,6 @@ static Dart_WeakPersistentHandle AllocateFinalizableHandle(
ref = Api::UnwrapHandle(object);
FinalizablePersistentHandle* finalizable_ref =
FinalizablePersistentHandle::New(thread->isolate(),
- is_prologue,
ref,
peer,
callback,
@@ -1048,26 +1031,6 @@ DART_EXPORT Dart_WeakPersistentHandle Dart_NewWeakPersistentHandle(
}
return AllocateFinalizableHandle(thread,
object,
- false,
- peer,
- external_allocation_size,
- callback);
-}
-
-
-DART_EXPORT Dart_WeakPersistentHandle Dart_NewPrologueWeakPersistentHandle(
- Dart_Handle object,
- void* peer,
- intptr_t external_allocation_size,
- Dart_WeakPersistentHandleFinalizer callback) {
- Thread* thread = Thread::Current();
- CHECK_ISOLATE(thread->isolate());
- if (callback == NULL) {
- return NULL;
- }
- return AllocateFinalizableHandle(thread,
- object,
- true,
peer,
external_allocation_size,
callback);
@@ -1098,81 +1061,7 @@ DART_EXPORT void Dart_DeleteWeakPersistentHandle(
FinalizablePersistentHandle* weak_ref =
FinalizablePersistentHandle::Cast(object);
weak_ref->EnsureFreeExternal(isolate);
- if (weak_ref->IsPrologueWeakPersistent()) {
- ASSERT(state->IsValidPrologueWeakPersistentHandle(object));
- state->prologue_weak_persistent_handles().FreeHandle(weak_ref);
- } else {
- ASSERT(!state->IsValidPrologueWeakPersistentHandle(object));
- state->weak_persistent_handles().FreeHandle(weak_ref);
- }
-}
-
-
-DART_EXPORT bool Dart_IsPrologueWeakPersistentHandle(
- Dart_WeakPersistentHandle object) {
- FinalizablePersistentHandle* weak_ref =
- FinalizablePersistentHandle::Cast(object);
- return weak_ref->IsPrologueWeakPersistent();
-}
-
-
-DART_EXPORT Dart_WeakReferenceSetBuilder Dart_NewWeakReferenceSetBuilder() {
- Isolate* isolate = Isolate::Current();
- CHECK_ISOLATE(isolate);
- ApiState* state = isolate->api_state();
- ASSERT(state != NULL);
- return reinterpret_cast<Dart_WeakReferenceSetBuilder>(
- state->NewWeakReferenceSetBuilder());
-}
-
-
-DART_EXPORT Dart_WeakReferenceSet Dart_NewWeakReferenceSet(
- Dart_WeakReferenceSetBuilder set_builder,
- Dart_WeakPersistentHandle key,
- Dart_WeakPersistentHandle value) {
- ASSERT(set_builder != NULL && key != NULL);
- WeakReferenceSetBuilder* builder =
- reinterpret_cast<WeakReferenceSetBuilder*>(set_builder);
- ApiState* state = builder->api_state();
- ASSERT(state == Isolate::Current()->api_state());
- WeakReferenceSet* reference_set = builder->NewWeakReferenceSet();
- reference_set->AppendKey(key);
- if (value != NULL) {
- reference_set->AppendValue(value);
- }
- state->DelayWeakReferenceSet(reference_set);
- return reinterpret_cast<Dart_WeakReferenceSet>(reference_set);
-}
-
-
-DART_EXPORT Dart_Handle Dart_AppendToWeakReferenceSet(
- Dart_WeakReferenceSet reference_set,
- Dart_WeakPersistentHandle key,
- Dart_WeakPersistentHandle value) {
- ASSERT(reference_set != NULL);
- WeakReferenceSet* set = reinterpret_cast<WeakReferenceSet*>(reference_set);
- set->Append(key, value);
- return Api::Success();
-}
-
-
-DART_EXPORT Dart_Handle Dart_AppendKeyToWeakReferenceSet(
- Dart_WeakReferenceSet reference_set,
- Dart_WeakPersistentHandle key) {
- ASSERT(reference_set != NULL);
- WeakReferenceSet* set = reinterpret_cast<WeakReferenceSet*>(reference_set);
- set->AppendKey(key);
- return Api::Success();
-}
-
-
-DART_EXPORT Dart_Handle Dart_AppendValueToWeakReferenceSet(
- Dart_WeakReferenceSet reference_set,
- Dart_WeakPersistentHandle value) {
- ASSERT(reference_set != NULL);
- WeakReferenceSet* set = reinterpret_cast<WeakReferenceSet*>(reference_set);
- set->AppendValue(value);
- return Api::Success();
+ state->weak_persistent_handles().FreeHandle(weak_ref);
}
@@ -1217,53 +1106,6 @@ DART_EXPORT Dart_Handle Dart_SetGcCallbacks(
}
-class PrologueWeakVisitor : public HandleVisitor {
- public:
- PrologueWeakVisitor(Thread* thread,
- Dart_GcPrologueWeakHandleCallback callback)
- : HandleVisitor(thread),
- callback_(callback) {
- }
-
-
- void VisitHandle(uword addr) {
- NoSafepointScope no_safepoint;
- FinalizablePersistentHandle* handle =
- reinterpret_cast<FinalizablePersistentHandle*>(addr);
- RawObject* raw_obj = handle->raw();
- if (raw_obj->IsHeapObject()) {
- ASSERT(handle->IsPrologueWeakPersistent());
- ReusableInstanceHandleScope reused_instance_handle(thread());
- Instance& instance = reused_instance_handle.Handle();
- instance ^= reinterpret_cast<RawInstance*>(handle->raw());
- intptr_t num_native_fields = instance.NumNativeFields();
- intptr_t* native_fields = instance.NativeFieldsDataAddr();
- if (native_fields != NULL) {
- callback_(thread()->isolate()->init_callback_data(),
- reinterpret_cast<Dart_WeakPersistentHandle>(addr),
- num_native_fields,
- native_fields);
- }
- }
- }
-
- private:
- Dart_GcPrologueWeakHandleCallback callback_;
-
- DISALLOW_COPY_AND_ASSIGN(PrologueWeakVisitor);
-};
-
-
-DART_EXPORT Dart_Handle Dart_VisitPrologueWeakHandles(
- Dart_GcPrologueWeakHandleCallback callback) {
- Thread* thread = Thread::Current();
- CHECK_ISOLATE(thread->isolate());
- PrologueWeakVisitor visitor(thread, callback);
- thread->isolate()->VisitPrologueWeakPersistentHandles(&visitor);
- return Api::Success();
-}
-
-
// --- Initialization and Globals ---
DART_EXPORT const char* Dart_VersionString() {
@@ -4976,8 +4818,7 @@ DART_EXPORT void Dart_SetWeakHandleReturnValue(Dart_NativeArguments args,
Isolate* isolate = arguments->thread()->isolate();
ASSERT(isolate == Isolate::Current());
ASSERT(isolate->api_state() != NULL &&
- (isolate->api_state()->IsValidWeakPersistentHandle(rval) ||
- isolate->api_state()->IsValidPrologueWeakPersistentHandle(rval)));
+ (isolate->api_state()->IsValidWeakPersistentHandle(rval)));
#endif
Api::SetWeakHandleReturnValue(arguments, rval);
}
« 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