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); |
} |