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

Side by Side Diff: include/v8.h

Issue 1095083002: Allow for accessing an ArrayBuffer contents without externalizing it (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 8 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 | « no previous file | src/api.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project 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 /** \mainpage V8 API Reference Guide 5 /** \mainpage V8 API Reference Guide
6 * 6 *
7 * V8 is Google's open source JavaScript engine. 7 * V8 is Google's open source JavaScript engine.
8 * 8 *
9 * This set of documents provides reference material generated from the 9 * This set of documents provides reference material generated from the
10 * V8 header file, include/v8.h. 10 * V8 header file, include/v8.h.
(...skipping 3408 matching lines...) Expand 10 before | Expand all | Expand 10 after
3419 /** 3419 /**
3420 * Create a new ArrayBuffer. Allocate |byte_length| bytes. 3420 * Create a new ArrayBuffer. Allocate |byte_length| bytes.
3421 * Allocated memory will be owned by a created ArrayBuffer and 3421 * Allocated memory will be owned by a created ArrayBuffer and
3422 * will be deallocated when it is garbage-collected, 3422 * will be deallocated when it is garbage-collected,
3423 * unless the object is externalized. 3423 * unless the object is externalized.
3424 */ 3424 */
3425 static Local<ArrayBuffer> New(Isolate* isolate, size_t byte_length); 3425 static Local<ArrayBuffer> New(Isolate* isolate, size_t byte_length);
3426 3426
3427 /** 3427 /**
3428 * Create a new ArrayBuffer over an existing memory block. 3428 * Create a new ArrayBuffer over an existing memory block.
3429 * The created array buffer is immediately in externalized state. 3429 * The created array buffer is by default immediately in externalized state.
3430 * The memory block will not be reclaimed when a created ArrayBuffer 3430 * The memory block will not be reclaimed when a created ArrayBuffer
3431 * is garbage-collected. 3431 * is garbage-collected.
3432 */ 3432 */
3433 static Local<ArrayBuffer> New(Isolate* isolate, void* data, 3433 static Local<ArrayBuffer> New(Isolate* isolate, void* data,
3434 size_t byte_length); 3434 size_t byte_length, bool is_external = true);
dcarney 2015/04/20 13:19:56 no bool args! use enum class outside of class (in
3435 3435
3436 /** 3436 /**
3437 * Returns true if ArrayBuffer is extrenalized, that is, does not 3437 * Returns true if ArrayBuffer is extrenalized, that is, does not
3438 * own its memory block. 3438 * own its memory block.
3439 */ 3439 */
3440 bool IsExternal() const; 3440 bool IsExternal() const;
3441 3441
3442 /** 3442 /**
3443 * Returns true if this ArrayBuffer may be neutered. 3443 * Returns true if this ArrayBuffer may be neutered.
3444 */ 3444 */
(...skipping 11 matching lines...) Expand all
3456 * Make this ArrayBuffer external. The pointer to underlying memory block 3456 * Make this ArrayBuffer external. The pointer to underlying memory block
3457 * and byte length are returned as |Contents| structure. After ArrayBuffer 3457 * and byte length are returned as |Contents| structure. After ArrayBuffer
3458 * had been etxrenalized, it does no longer owns the memory block. The caller 3458 * had been etxrenalized, it does no longer owns the memory block. The caller
3459 * should take steps to free memory when it is no longer needed. 3459 * should take steps to free memory when it is no longer needed.
3460 * 3460 *
3461 * The memory block is guaranteed to be allocated with |Allocator::Allocate| 3461 * The memory block is guaranteed to be allocated with |Allocator::Allocate|
3462 * that has been set with V8::SetArrayBufferAllocator. 3462 * that has been set with V8::SetArrayBufferAllocator.
3463 */ 3463 */
3464 Contents Externalize(); 3464 Contents Externalize();
3465 3465
3466 /**
3467 * Get a pointer to the ArrayBuffer's underlying memory block without
3468 * externalizing it. If the ArrayBuffer is not externalized, this pointer
3469 * will become invalid as soon as the ArrayBuffer became garbage collected.
3470 *
3471 * The embedder should make sure to hold a strong reference to the
3472 * ArrayBuffer while accessing this pointer.
3473 *
3474 * The memory block is guaranteed to be allocated with |Allocator::Allocate|.
3475 */
3476 Contents GetContents();
3477
3466 V8_INLINE static ArrayBuffer* Cast(Value* obj); 3478 V8_INLINE static ArrayBuffer* Cast(Value* obj);
3467 3479
3468 static const int kInternalFieldCount = V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT; 3480 static const int kInternalFieldCount = V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT;
3469 3481
3470 private: 3482 private:
3471 ArrayBuffer(); 3483 ArrayBuffer();
3472 static void CheckCast(Value* obj); 3484 static void CheckCast(Value* obj);
3473 }; 3485 };
3474 3486
3475 3487
(...skipping 4655 matching lines...) Expand 10 before | Expand all | Expand 10 after
8131 */ 8143 */
8132 8144
8133 8145
8134 } // namespace v8 8146 } // namespace v8
8135 8147
8136 8148
8137 #undef TYPE_CHECK 8149 #undef TYPE_CHECK
8138 8150
8139 8151
8140 #endif // V8_H_ 8152 #endif // V8_H_
OLDNEW
« no previous file with comments | « no previous file | src/api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698