OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "core/dom/DOMArrayBuffer.h" | 5 #include "core/dom/DOMArrayBuffer.h" |
6 | 6 |
7 #include "bindings/core/v8/DOMDataStore.h" | 7 #include "bindings/core/v8/DOMDataStore.h" |
8 | 8 |
9 namespace blink { | 9 namespace blink { |
10 | 10 |
11 v8::Local<v8::Object> DOMArrayBuffer::wrap(v8::Isolate* isolate, v8::Local<v8::O
bject> creationContext) | 11 v8::Local<v8::Object> DOMArrayBuffer::wrap(v8::Isolate* isolate, v8::Local<v8::O
bject> creationContext) |
12 { | 12 { |
| 13 // It's possible that no one except for the new wrapper owns this object at |
| 14 // this moment, so we have to prevent GC to collect this object until the |
| 15 // object gets associated with the wrapper. |
| 16 RefPtr<DOMArrayBuffer> protect(this); |
| 17 |
13 DCHECK(!DOMDataStore::containsWrapper(this, isolate)); | 18 DCHECK(!DOMDataStore::containsWrapper(this, isolate)); |
14 | 19 |
15 const WrapperTypeInfo* wrapperTypeInfo = this->wrapperTypeInfo(); | 20 const WrapperTypeInfo* wrapperTypeInfo = this->wrapperTypeInfo(); |
16 v8::Local<v8::Object> wrapper = v8::ArrayBuffer::New(isolate, data(), byteLe
ngth()); | 21 v8::Local<v8::Object> wrapper = v8::ArrayBuffer::New(isolate, data(), byteLe
ngth()); |
17 | 22 |
18 return associateWithWrapper(isolate, wrapperTypeInfo, wrapper); | 23 return associateWithWrapper(isolate, wrapperTypeInfo, wrapper); |
19 } | 24 } |
20 | 25 |
21 } // namespace blink | 26 } // namespace blink |
OLD | NEW |