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

Unified Diff: gin/array_buffer.cc

Issue 60613003: Add a dependency from Gin to base (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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 | « gin/array_buffer.h ('k') | gin/context_holder.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gin/array_buffer.cc
diff --git a/gin/array_buffer.cc b/gin/array_buffer.cc
index 43dd8da348fa6a3a1125523339f7fd2a9c5ebfd3..9f93bf94514656e896c8e853d8871d49d5fb6c81 100644
--- a/gin/array_buffer.cc
+++ b/gin/array_buffer.cc
@@ -53,26 +53,25 @@ ArrayBufferAllocator* ArrayBufferAllocator::SharedInstance() {
// a pointer to the ArrayBuffer::Private object in an internal field of the
// ArrayBuffer object.
//
-class ArrayBuffer::Private {
+class ArrayBuffer::Private : public base::RefCounted<ArrayBuffer::Private> {
public:
static scoped_refptr<Private> From(v8::Isolate* isolate,
v8::Handle<v8::ArrayBuffer> array);
- void AddRef();
- void Release();
-
void* buffer() const { return buffer_; }
size_t length() const { return length_; }
private:
+ friend class base::RefCounted<Private>;
+
Private(v8::Isolate* isolate, v8::Handle<v8::ArrayBuffer> array);
~Private();
static void WeakCallback(
const v8::WeakCallbackData<v8::ArrayBuffer, Private>& data);
- size_t ref_count_;
v8::Persistent<v8::ArrayBuffer> array_buffer_;
+ scoped_refptr<Private> self_reference_;
void* buffer_;
size_t length_;
};
@@ -86,20 +85,9 @@ scoped_refptr<ArrayBuffer::Private> ArrayBuffer::Private::From(
return make_scoped_refptr(new Private(isolate, array));
}
-void ArrayBuffer::Private::AddRef() {
- ++ref_count_;
-}
-
-void ArrayBuffer::Private::Release() {
- if (--ref_count_)
- return;
- delete this;
-}
-
ArrayBuffer::Private::Private(v8::Isolate* isolate,
v8::Handle<v8::ArrayBuffer> array)
- : ref_count_(0),
- array_buffer_(isolate, array) {
+ : array_buffer_(isolate, array) {
// Take ownership of the array buffer.
v8::ArrayBuffer::Contents contents = array->Externalize();
buffer_ = contents.Data();
@@ -107,7 +95,7 @@ ArrayBuffer::Private::Private(v8::Isolate* isolate,
array->SetAlignedPointerInInternalField(kBufferViewPrivateIndex, this);
- AddRef(); // Balanced in WeakCallback.
+ self_reference_ = this; // Cleared in WeakCallback.
array_buffer_.SetWeak(this, WeakCallback);
}
@@ -119,7 +107,7 @@ void ArrayBuffer::Private::WeakCallback(
const v8::WeakCallbackData<v8::ArrayBuffer, Private>& data) {
Private* parameter = data.GetParameter();
parameter->array_buffer_.Reset();
- parameter->Release(); // Balanced in ArrayBuffer::Private::Private.
+ // parameter->self_reference_.clear();
}
// ArrayBuffer ----------------------------------------------------------------
« no previous file with comments | « gin/array_buffer.h ('k') | gin/context_holder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698