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 | |
18 DCHECK(!DOMDataStore::containsWrapper(this, isolate)); | 13 DCHECK(!DOMDataStore::containsWrapper(this, isolate)); |
19 | 14 |
20 const WrapperTypeInfo* wrapperTypeInfo = this->wrapperTypeInfo(); | 15 const WrapperTypeInfo* wrapperTypeInfo = this->wrapperTypeInfo(); |
21 v8::Local<v8::Object> wrapper = v8::ArrayBuffer::New(isolate, data(), byteLe
ngth()); | 16 v8::Local<v8::Object> wrapper = v8::ArrayBuffer::New(isolate, data(), byteLe
ngth()); |
22 | 17 |
23 return associateWithWrapper(isolate, wrapperTypeInfo, wrapper); | 18 return associateWithWrapper(isolate, wrapperTypeInfo, wrapper); |
24 } | 19 } |
25 | 20 |
26 } // namespace blink | 21 } // namespace blink |
OLD | NEW |