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

Unified Diff: runtime/vm/dart_api_state.h

Issue 2041373004: Revert "Background finalization." (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/dart_api_impl_test.cc ('k') | runtime/vm/dart_api_state.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/dart_api_state.h
diff --git a/runtime/vm/dart_api_state.h b/runtime/vm/dart_api_state.h
index b5a3d38b9b98041700c1d8678d1ee437a0bb609a..b510377352cdc294d017c4922a86bd2e052e0c5f 100644
--- a/runtime/vm/dart_api_state.h
+++ b/runtime/vm/dart_api_state.h
@@ -15,9 +15,8 @@
#include "vm/handles.h"
#include "vm/object.h"
#include "vm/os.h"
-#include "vm/os_thread.h"
#include "vm/raw_object.h"
-#include "vm/thread_pool.h"
+#include "vm/os_thread.h"
#include "vm/visitor.h"
#include "vm/weak_table.h"
@@ -25,25 +24,6 @@
namespace dart {
-class FinalizablePersistentHandle;
-typedef MallocGrowableArray<FinalizablePersistentHandle*> FinalizationQueue;
-
-
-class BackgroundFinalizer : public ThreadPool::Task {
- public:
- BackgroundFinalizer(Isolate* isolate, FinalizationQueue* queue);
- virtual ~BackgroundFinalizer() { }
-
- void Run();
-
- private:
- Isolate* isolate_;
- FinalizationQueue* queue_;
-
- DISALLOW_IMPLICIT_CONSTRUCTORS(BackgroundFinalizer);
-};
-
-
// Implementation of Zone support for very fast allocation of small chunks
// of memory. The chunks cannot be deallocated individually, but instead
// zones support deallocating all chunks in one fast operation when the
@@ -247,14 +227,9 @@ class FinalizablePersistentHandle {
}
// Called when the referent becomes unreachable.
- void UpdateUnreachable(Isolate* isolate, FinalizationQueue* queue) {
+ void UpdateUnreachable(Isolate* isolate) {
EnsureFreeExternal(isolate);
- if (queue == NULL) {
- Finalize(isolate, this);
- } else {
- MarkForFinalization();
- queue->Add(this);
- }
+ Finalize(isolate, this);
}
// Called when the referent has moved, potentially between generations.
@@ -324,11 +299,6 @@ class FinalizablePersistentHandle {
callback_ = NULL;
}
- void MarkForFinalization() {
- raw_ = Object::null();
- ASSERT(callback_ != NULL);
- }
-
void set_raw(RawObject* raw) { raw_ = raw; }
void set_raw(const LocalHandle& ref) { raw_ = ref.raw(); }
void set_raw(const Object& object) { raw_ = object.raw(); }
@@ -363,13 +333,10 @@ class FinalizablePersistentHandle {
Heap::kNew : Heap::kOld;
}
- friend class BackgroundFinalizer;
-
RawObject* raw_;
void* peer_;
uword external_data_;
Dart_WeakPersistentHandleFinalizer callback_;
-
DISALLOW_ALLOCATION(); // Allocated through AllocateHandle methods.
DISALLOW_COPY_AND_ASSIGN(FinalizablePersistentHandle);
};
@@ -534,11 +501,9 @@ class FinalizablePersistentHandles
: Handles<kFinalizablePersistentHandleSizeInWords,
kFinalizablePersistentHandlesPerChunk,
kOffsetOfRawPtrInFinalizablePersistentHandle>(),
- free_list_(NULL), mutex_(new Mutex()) { }
+ free_list_(NULL) { }
~FinalizablePersistentHandles() {
free_list_ = NULL;
- delete mutex_;
- mutex_ = NULL;
}
// Accessors.
@@ -565,31 +530,25 @@ class FinalizablePersistentHandles
// by calling FreeHandle.
FinalizablePersistentHandle* AllocateHandle() {
FinalizablePersistentHandle* handle;
- {
- MutexLocker ml(mutex_);
- if (free_list_ != NULL) {
- handle = free_list_;
- free_list_ = handle->Next();
- handle->set_raw(Object::null());
- return handle;
- }
- }
-
- handle = reinterpret_cast<FinalizablePersistentHandle*>(
+ if (free_list_ != NULL) {
+ handle = free_list_;
+ free_list_ = handle->Next();
+ handle->set_raw(Object::null());
+ } else {
+ handle = reinterpret_cast<FinalizablePersistentHandle*>(
AllocateScopedHandle());
- handle->Clear();
+ handle->Clear();
+ }
return handle;
}
void FreeHandle(FinalizablePersistentHandle* handle) {
- MutexLocker ml(mutex_);
handle->FreeHandle(free_list());
set_free_list(handle);
}
// Validate if passed in handle is a Persistent Handle.
bool IsValidHandle(Dart_WeakPersistentHandle object) const {
- MutexLocker ml(mutex_);
return IsValidScopedHandle(reinterpret_cast<uword>(object));
}
@@ -600,7 +559,6 @@ class FinalizablePersistentHandles
private:
FinalizablePersistentHandle* free_list_;
- Mutex* mutex_;
DISALLOW_COPY_AND_ASSIGN(FinalizablePersistentHandles);
};
« no previous file with comments | « runtime/vm/dart_api_impl_test.cc ('k') | runtime/vm/dart_api_state.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698