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

Side by Side Diff: gin/array_buffer.cc

Issue 1112923003: Replace Handle<> with Local in remaining gin/* (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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 | « gin/array_buffer.h ('k') | gin/context_holder.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stdlib.h> 5 #include <stdlib.h>
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "gin/array_buffer.h" 8 #include "gin/array_buffer.h"
9 #include "gin/per_isolate_data.h" 9 #include "gin/per_isolate_data.h"
10 10
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 // drop V8's implied reference to the memory. 55 // drop V8's implied reference to the memory.
56 // 56 //
57 // The final subtlety is that we need every ArrayBuffer into the same array 57 // The final subtlety is that we need every ArrayBuffer into the same array
58 // buffer to AddRef the same ArrayBuffer::Private. To make that work, we store 58 // buffer to AddRef the same ArrayBuffer::Private. To make that work, we store
59 // a pointer to the ArrayBuffer::Private object in an internal field of the 59 // a pointer to the ArrayBuffer::Private object in an internal field of the
60 // ArrayBuffer object. 60 // ArrayBuffer object.
61 // 61 //
62 class ArrayBuffer::Private : public base::RefCounted<ArrayBuffer::Private> { 62 class ArrayBuffer::Private : public base::RefCounted<ArrayBuffer::Private> {
63 public: 63 public:
64 static scoped_refptr<Private> From(v8::Isolate* isolate, 64 static scoped_refptr<Private> From(v8::Isolate* isolate,
65 v8::Handle<v8::ArrayBuffer> array); 65 v8::Local<v8::ArrayBuffer> array);
66 66
67 void* buffer() const { return buffer_; } 67 void* buffer() const { return buffer_; }
68 size_t length() const { return length_; } 68 size_t length() const { return length_; }
69 69
70 private: 70 private:
71 friend class base::RefCounted<Private>; 71 friend class base::RefCounted<Private>;
72 72
73 Private(v8::Isolate* isolate, v8::Handle<v8::ArrayBuffer> array); 73 Private(v8::Isolate* isolate, v8::Local<v8::ArrayBuffer> array);
74 ~Private(); 74 ~Private();
75 75
76 static void FirstWeakCallback(const v8::WeakCallbackInfo<Private>& data); 76 static void FirstWeakCallback(const v8::WeakCallbackInfo<Private>& data);
77 static void SecondWeakCallback(const v8::WeakCallbackInfo<Private>& data); 77 static void SecondWeakCallback(const v8::WeakCallbackInfo<Private>& data);
78 78
79 v8::Global<v8::ArrayBuffer> array_buffer_; 79 v8::Global<v8::ArrayBuffer> array_buffer_;
80 scoped_refptr<Private> self_reference_; 80 scoped_refptr<Private> self_reference_;
81 v8::Isolate* isolate_; 81 v8::Isolate* isolate_;
82 void* buffer_; 82 void* buffer_;
83 size_t length_; 83 size_t length_;
84 }; 84 };
85 85
86 scoped_refptr<ArrayBuffer::Private> ArrayBuffer::Private::From( 86 scoped_refptr<ArrayBuffer::Private> ArrayBuffer::Private::From(
87 v8::Isolate* isolate, v8::Handle<v8::ArrayBuffer> array) { 87 v8::Isolate* isolate, v8::Local<v8::ArrayBuffer> array) {
88 if (array->IsExternal()) { 88 if (array->IsExternal()) {
89 CHECK_EQ(WrapperInfo::From(v8::Handle<v8::Object>::Cast(array)), 89 CHECK_EQ(WrapperInfo::From(v8::Local<v8::Object>::Cast(array)),
90 &g_array_buffer_wrapper_info) 90 &g_array_buffer_wrapper_info)
91 << "Cannot mix blink and gin ArrayBuffers"; 91 << "Cannot mix blink and gin ArrayBuffers";
92 return make_scoped_refptr(static_cast<Private*>( 92 return make_scoped_refptr(static_cast<Private*>(
93 array->GetAlignedPointerFromInternalField(kEncodedValueIndex))); 93 array->GetAlignedPointerFromInternalField(kEncodedValueIndex)));
94 } 94 }
95 return make_scoped_refptr(new Private(isolate, array)); 95 return make_scoped_refptr(new Private(isolate, array));
96 } 96 }
97 97
98 ArrayBuffer::Private::Private(v8::Isolate* isolate, 98 ArrayBuffer::Private::Private(v8::Isolate* isolate,
99 v8::Handle<v8::ArrayBuffer> array) 99 v8::Local<v8::ArrayBuffer> array)
100 : array_buffer_(isolate, array), isolate_(isolate) { 100 : array_buffer_(isolate, array), isolate_(isolate) {
101 // Take ownership of the array buffer. 101 // Take ownership of the array buffer.
102 CHECK(!array->IsExternal()); 102 CHECK(!array->IsExternal());
103 v8::ArrayBuffer::Contents contents = array->Externalize(); 103 v8::ArrayBuffer::Contents contents = array->Externalize();
104 buffer_ = contents.Data(); 104 buffer_ = contents.Data();
105 length_ = contents.ByteLength(); 105 length_ = contents.ByteLength();
106 106
107 array->SetAlignedPointerInInternalField(kWrapperInfoIndex, 107 array->SetAlignedPointerInInternalField(kWrapperInfoIndex,
108 &g_array_buffer_wrapper_info); 108 &g_array_buffer_wrapper_info);
109 array->SetAlignedPointerInInternalField(kEncodedValueIndex, this); 109 array->SetAlignedPointerInInternalField(kEncodedValueIndex, this);
(...skipping 21 matching lines...) Expand all
131 } 131 }
132 132
133 // ArrayBuffer ---------------------------------------------------------------- 133 // ArrayBuffer ----------------------------------------------------------------
134 134
135 ArrayBuffer::ArrayBuffer() 135 ArrayBuffer::ArrayBuffer()
136 : bytes_(0), 136 : bytes_(0),
137 num_bytes_(0) { 137 num_bytes_(0) {
138 } 138 }
139 139
140 ArrayBuffer::ArrayBuffer(v8::Isolate* isolate, 140 ArrayBuffer::ArrayBuffer(v8::Isolate* isolate,
141 v8::Handle<v8::ArrayBuffer> array) { 141 v8::Local<v8::ArrayBuffer> array) {
142 private_ = ArrayBuffer::Private::From(isolate, array); 142 private_ = ArrayBuffer::Private::From(isolate, array);
143 bytes_ = private_->buffer(); 143 bytes_ = private_->buffer();
144 num_bytes_ = private_->length(); 144 num_bytes_ = private_->length();
145 } 145 }
146 146
147 ArrayBuffer::~ArrayBuffer() { 147 ArrayBuffer::~ArrayBuffer() {
148 } 148 }
149 149
150 ArrayBuffer& ArrayBuffer::operator=(const ArrayBuffer& other) { 150 ArrayBuffer& ArrayBuffer::operator=(const ArrayBuffer& other) {
151 private_ = other.private_; 151 private_ = other.private_;
152 bytes_ = other.bytes_; 152 bytes_ = other.bytes_;
153 num_bytes_ = other.num_bytes_; 153 num_bytes_ = other.num_bytes_;
154 return *this; 154 return *this;
155 } 155 }
156 156
157 // Converter<ArrayBuffer> ----------------------------------------------------- 157 // Converter<ArrayBuffer> -----------------------------------------------------
158 158
159 bool Converter<ArrayBuffer>::FromV8(v8::Isolate* isolate, 159 bool Converter<ArrayBuffer>::FromV8(v8::Isolate* isolate,
160 v8::Handle<v8::Value> val, 160 v8::Local<v8::Value> val,
161 ArrayBuffer* out) { 161 ArrayBuffer* out) {
162 if (!val->IsArrayBuffer()) 162 if (!val->IsArrayBuffer())
163 return false; 163 return false;
164 *out = ArrayBuffer(isolate, v8::Handle<v8::ArrayBuffer>::Cast(val)); 164 *out = ArrayBuffer(isolate, v8::Local<v8::ArrayBuffer>::Cast(val));
165 return true; 165 return true;
166 } 166 }
167 167
168 // ArrayBufferView ------------------------------------------------------------ 168 // ArrayBufferView ------------------------------------------------------------
169 169
170 ArrayBufferView::ArrayBufferView() 170 ArrayBufferView::ArrayBufferView()
171 : offset_(0), 171 : offset_(0),
172 num_bytes_(0) { 172 num_bytes_(0) {
173 } 173 }
174 174
175 ArrayBufferView::ArrayBufferView(v8::Isolate* isolate, 175 ArrayBufferView::ArrayBufferView(v8::Isolate* isolate,
176 v8::Handle<v8::ArrayBufferView> view) 176 v8::Local<v8::ArrayBufferView> view)
177 : array_buffer_(isolate, view->Buffer()), 177 : array_buffer_(isolate, view->Buffer()),
178 offset_(view->ByteOffset()), 178 offset_(view->ByteOffset()),
179 num_bytes_(view->ByteLength()) { 179 num_bytes_(view->ByteLength()) {
180 } 180 }
181 181
182 ArrayBufferView::~ArrayBufferView() { 182 ArrayBufferView::~ArrayBufferView() {
183 } 183 }
184 184
185 ArrayBufferView& ArrayBufferView::operator=(const ArrayBufferView& other) { 185 ArrayBufferView& ArrayBufferView::operator=(const ArrayBufferView& other) {
186 array_buffer_ = other.array_buffer_; 186 array_buffer_ = other.array_buffer_;
187 offset_ = other.offset_; 187 offset_ = other.offset_;
188 num_bytes_ = other.num_bytes_; 188 num_bytes_ = other.num_bytes_;
189 return *this; 189 return *this;
190 } 190 }
191 191
192 192
193 // Converter<ArrayBufferView> ------------------------------------------------- 193 // Converter<ArrayBufferView> -------------------------------------------------
194 194
195 bool Converter<ArrayBufferView>::FromV8(v8::Isolate* isolate, 195 bool Converter<ArrayBufferView>::FromV8(v8::Isolate* isolate,
196 v8::Handle<v8::Value> val, 196 v8::Local<v8::Value> val,
197 ArrayBufferView* out) { 197 ArrayBufferView* out) {
198 if (!val->IsArrayBufferView()) 198 if (!val->IsArrayBufferView())
199 return false; 199 return false;
200 *out = ArrayBufferView(isolate, v8::Handle<v8::ArrayBufferView>::Cast(val)); 200 *out = ArrayBufferView(isolate, v8::Local<v8::ArrayBufferView>::Cast(val));
201 return true; 201 return true;
202 } 202 }
203 203
204 } // namespace gin 204 } // namespace gin
OLDNEW
« no previous file with comments | « gin/array_buffer.h ('k') | gin/context_holder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698