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

Side by Side Diff: include/v8.h

Issue 2741683004: [rename] Rename internal field to embedder field. (Closed)
Patch Set: DEPRECATE_SOON(GetInternalField) Created 3 years, 9 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 | include/v8-experimental.h » ('j') | include/v8-experimental.h » ('J')
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 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 // Can only be safely called if already set. 372 // Can only be safely called if already set.
373 V8_INLINE Local<T> Get(Isolate* isolate); 373 V8_INLINE Local<T> Get(Isolate* isolate);
374 V8_INLINE bool IsEmpty() { return index_ == kInitialValue; } 374 V8_INLINE bool IsEmpty() { return index_ == kInitialValue; }
375 template<class S> V8_INLINE void Set(Isolate* isolate, Local<S> handle); 375 template<class S> V8_INLINE void Set(Isolate* isolate, Local<S> handle);
376 376
377 private: 377 private:
378 static const int kInitialValue = -1; 378 static const int kInitialValue = -1;
379 int index_; 379 int index_;
380 }; 380 };
381 381
382 382 // TODO(internal): deprecate this constant soon.
383 static const int kInternalFieldsInWeakCallback = 2; 383 static const int kInternalFieldsInWeakCallback = 2;
384 384 static const int kEmbedderFieldsInWeakCallback = 2;
385 385
386 template <typename T> 386 template <typename T>
387 class WeakCallbackInfo { 387 class WeakCallbackInfo {
388 public: 388 public:
389 typedef void (*Callback)(const WeakCallbackInfo<T>& data); 389 typedef void (*Callback)(const WeakCallbackInfo<T>& data);
390 390
391 WeakCallbackInfo(Isolate* isolate, T* parameter, 391 WeakCallbackInfo(Isolate* isolate, T* parameter,
392 void* internal_fields[kInternalFieldsInWeakCallback], 392 void* embedder_fields[kEmbedderFieldsInWeakCallback],
393 Callback* callback) 393 Callback* callback)
394 : isolate_(isolate), parameter_(parameter), callback_(callback) { 394 : isolate_(isolate), parameter_(parameter), callback_(callback) {
395 for (int i = 0; i < kInternalFieldsInWeakCallback; ++i) { 395 for (int i = 0; i < kEmbedderFieldsInWeakCallback; ++i) {
396 internal_fields_[i] = internal_fields[i]; 396 embedder_fields_[i] = embedder_fields[i];
397 } 397 }
398 } 398 }
399 399
400 V8_INLINE Isolate* GetIsolate() const { return isolate_; } 400 V8_INLINE Isolate* GetIsolate() const { return isolate_; }
401 V8_INLINE T* GetParameter() const { return parameter_; } 401 V8_INLINE T* GetParameter() const { return parameter_; }
402 V8_INLINE void* GetInternalField(int index) const; 402 V8_INLINE V8_DEPRECATE_SOON("use GetEmbedderField(int index)",
403 void* GetInternalField(int index) const);
404 V8_INLINE void* GetEmbedderField(int index) const;
403 405
404 V8_INLINE V8_DEPRECATED("use indexed version", 406 V8_INLINE V8_DEPRECATED("use GetEmbedderField(int index)",
405 void* GetInternalField1() const) { 407 void* GetInternalField1() const) {
406 return internal_fields_[0]; 408 return embedder_fields_[0];
407 } 409 }
408 V8_INLINE V8_DEPRECATED("use indexed version", 410 V8_INLINE V8_DEPRECATED("use GetEmbedderField(int index)",
409 void* GetInternalField2() const) { 411 void* GetInternalField2() const) {
410 return internal_fields_[1]; 412 return embedder_fields_[1];
411 } 413 }
412 414
413 V8_DEPRECATED("Not realiable once SetSecondPassCallback() was used.", 415 V8_DEPRECATED("Not realiable once SetSecondPassCallback() was used.",
414 bool IsFirstPass() const) { 416 bool IsFirstPass() const) {
415 return callback_ != nullptr; 417 return callback_ != nullptr;
416 } 418 }
417 419
418 // When first called, the embedder MUST Reset() the Global which triggered the 420 // When first called, the embedder MUST Reset() the Global which triggered the
419 // callback. The Global itself is unusable for anything else. No v8 other api 421 // callback. The Global itself is unusable for anything else. No v8 other api
420 // calls may be called in the first callback. Should additional work be 422 // calls may be called in the first callback. Should additional work be
421 // required, the embedder must set a second pass callback, which will be 423 // required, the embedder must set a second pass callback, which will be
422 // called after all the initial callbacks are processed. 424 // called after all the initial callbacks are processed.
423 // Calling SetSecondPassCallback on the second pass will immediately crash. 425 // Calling SetSecondPassCallback on the second pass will immediately crash.
424 void SetSecondPassCallback(Callback callback) const { *callback_ = callback; } 426 void SetSecondPassCallback(Callback callback) const { *callback_ = callback; }
425 427
426 private: 428 private:
427 Isolate* isolate_; 429 Isolate* isolate_;
428 T* parameter_; 430 T* parameter_;
429 Callback* callback_; 431 Callback* callback_;
430 void* internal_fields_[kInternalFieldsInWeakCallback]; 432 void* embedder_fields_[kEmbedderFieldsInWeakCallback];
431 }; 433 };
432 434
433 435 // kParameter will pass a void* parameter back to the callback, kEmbedderFields
434 // kParameter will pass a void* parameter back to the callback, kInternalFields 436 // will pass the first two embedder fields back to the callback, kFinalizer
435 // will pass the first two internal fields back to the callback, kFinalizer
436 // will pass a void* parameter back, but is invoked before the object is 437 // will pass a void* parameter back, but is invoked before the object is
437 // actually collected, so it can be resurrected. In the last case, it is not 438 // actually collected, so it can be resurrected. In the last case, it is not
438 // possible to request a second pass callback. 439 // possible to request a second pass callback.
439 enum class WeakCallbackType { kParameter, kInternalFields, kFinalizer }; 440 enum class WeakCallbackType {
441 kParameter,
442 kEmbedderFields,
443 kInternalFields = kEmbedderFields, // TODO(v8): deprecate
444 kFinalizer
445 };
440 446
441 /** 447 /**
442 * An object reference that is independent of any handle scope. Where 448 * An object reference that is independent of any handle scope. Where
443 * a Local handle only lives as long as the HandleScope in which it was 449 * a Local handle only lives as long as the HandleScope in which it was
444 * allocated, a PersistentBase handle remains valid until it is explicitly 450 * allocated, a PersistentBase handle remains valid until it is explicitly
445 * disposed. 451 * disposed.
446 * 452 *
447 * A persistent handle contains a reference to a storage cell within 453 * A persistent handle contains a reference to a storage cell within
448 * the v8 engine which holds an object value and which is updated by 454 * the v8 engine which holds an object value and which is updated by
449 * the garbage collector whenever the object is moved. A new storage 455 * the garbage collector whenever the object is moved. A new storage
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after
859 static internal::Object** CreateHandle(internal::HeapObject* heap_object, 865 static internal::Object** CreateHandle(internal::HeapObject* heap_object,
860 internal::Object* value); 866 internal::Object* value);
861 867
862 internal::Isolate* isolate_; 868 internal::Isolate* isolate_;
863 internal::Object** prev_next_; 869 internal::Object** prev_next_;
864 internal::Object** prev_limit_; 870 internal::Object** prev_limit_;
865 871
866 // Local::New uses CreateHandle with an Isolate* parameter. 872 // Local::New uses CreateHandle with an Isolate* parameter.
867 template<class F> friend class Local; 873 template<class F> friend class Local;
868 874
869 // Object::GetInternalField and Context::GetEmbedderData use CreateHandle with 875 // Object::GetExternalField and Context::GetEmbedderData use CreateHandle with
870 // a HeapObject* in their shortcuts. 876 // a HeapObject* in their shortcuts.
871 friend class Object; 877 friend class Object;
872 friend class Context; 878 friend class Context;
873 }; 879 };
874 880
875 881
876 /** 882 /**
877 * A HandleScope which first allocates a handle in the current scope 883 * A HandleScope which first allocates a handle in the current scope
878 * which will be later filled with the escape value. 884 * which will be later filled with the escape value.
879 */ 885 */
(...skipping 2228 matching lines...) Expand 10 before | Expand all | Expand 10 after
3108 /** 3114 /**
3109 * Returns the name of the function invoked as a constructor for this object. 3115 * Returns the name of the function invoked as a constructor for this object.
3110 */ 3116 */
3111 Local<String> GetConstructorName(); 3117 Local<String> GetConstructorName();
3112 3118
3113 /** 3119 /**
3114 * Sets the integrity level of the object. 3120 * Sets the integrity level of the object.
3115 */ 3121 */
3116 Maybe<bool> SetIntegrityLevel(Local<Context> context, IntegrityLevel level); 3122 Maybe<bool> SetIntegrityLevel(Local<Context> context, IntegrityLevel level);
3117 3123
3118 /** Gets the number of internal fields for this Object. */ 3124 /** Gets the number of embedder fields for this Object. */
3119 int InternalFieldCount(); 3125 // TODO(internal): deprecate soon
3126 int V8_DEPRECATE_SOON("use EmbedderFieldCount()", InternalFieldCount());
3127 int EmbedderFieldCount();
3120 3128
3121 /** Same as above, but works for Persistents */ 3129 /** Same as above, but works for Persistents */
3122 V8_INLINE static int InternalFieldCount( 3130 // TODO(internal): deprecate soon
3123 const PersistentBase<Object>& object) { 3131 V8_INLINE static int V8_DEPRECATE_SOON(
3132 "use EmbedderFieldCount()",
3133 InternalFieldCount(const PersistentBase<Object>& object)) {
3124 return object.val_->InternalFieldCount(); 3134 return object.val_->InternalFieldCount();
3125 } 3135 }
3126 3136
3127 /** Gets the value from an internal field. */ 3137 /** Same as above, but works for Persistents */
3128 V8_INLINE Local<Value> GetInternalField(int index); 3138 V8_INLINE static int EmbedderFieldCount(
3139 const PersistentBase<Object>& object) {
3140 return object.val_->EmbedderFieldCount();
3141 }
3129 3142
3130 /** Sets the value in an internal field. */ 3143 /** Gets the value from an embedder field. */
3131 void SetInternalField(int index, Local<Value> value); 3144 V8_INLINE Local<Value> V8_DEPRECATE_SOON("use GetEmbedderField",
3145 GetInternalField(int index));
3146
3147 /** Gets the value from an embedder field. */
3148 V8_INLINE Local<Value> GetEmbedderField(int index);
3149
3150 /** Sets the value in an embedder field. */
3151 void V8_DEPRECATE_SOON("use SetEmbedderField",
3152 SetInternalField(int index, Local<Value> value));
3153
3154 /** Sets the value in an embedder field. */
3155 void SetEmbedderField(int index, Local<Value> value);
3132 3156
3133 /** 3157 /**
3134 * Gets a 2-byte-aligned native pointer from an internal field. This field 3158 * Gets a 2-byte-aligned native pointer from an embedder field. This field
3135 * must have been set by SetAlignedPointerInInternalField, everything else 3159 * must have been set by SetAlignedPointerInExternalField, everything else
3136 * leads to undefined behavior. 3160 * leads to undefined behavior.
3137 */ 3161 */
3138 V8_INLINE void* GetAlignedPointerFromInternalField(int index); 3162 V8_INLINE void* V8_DEPRECATE_SOON(
3163 "use GetAlignedPointerFromEmbedderField()",
3164 GetAlignedPointerFromInternalField(int index));
3165 V8_INLINE void* GetAlignedPointerFromEmbedderField(int index);
3139 3166
3140 /** Same as above, but works for Persistents */ 3167 /** Same as above, but works for Persistents */
3141 V8_INLINE static void* GetAlignedPointerFromInternalField( 3168 V8_INLINE static void* GetAlignedPointerFromEmbedderField(
3142 const PersistentBase<Object>& object, int index) { 3169 const PersistentBase<Object>& object, int index) {
3143 return object.val_->GetAlignedPointerFromInternalField(index); 3170 return object.val_->GetAlignedPointerFromEmbedderField(index);
3144 } 3171 }
3145 3172
3173 V8_INLINE static void* V8_DEPRECATE_SOON(
3174 "use GetAlignedPointerFromEmbedderField",
3175 GetAlignedPointerFromInternalField(const PersistentBase<Object>& object,
3176 int index)) {
3177 return object.val_->GetAlignedPointerFromEmbedderField(index);
3178 }
3146 /** 3179 /**
3147 * Sets a 2-byte-aligned native pointer in an internal field. To retrieve such 3180 * Sets a 2-byte-aligned native pointer in an embedder field. To retrieve such
3148 * a field, GetAlignedPointerFromInternalField must be used, everything else 3181 * a field, GetAlignedPointerFromInternalField must be used, everything else
3149 * leads to undefined behavior. 3182 * leads to undefined behavior.
3150 */ 3183 */
3151 void SetAlignedPointerInInternalField(int index, void* value); 3184 void V8_DEPRECATE_SOON("use SetAlignedPointerInEmbedderField",
3152 void SetAlignedPointerInInternalFields(int argc, int indices[], 3185 SetAlignedPointerInInternalField(int index,
3186 void* value));
3187 void V8_DEPRECATE_SOON("use SetAlignedPointerInInternalFields",
3188 SetAlignedPointerInInternalFields(int argc,
3189 int indices[],
3190 void* values[]));
3191 void SetAlignedPointerInEmbedderField(int index, void* value);
3192 void SetAlignedPointerInEmbedderFields(int argc, int indices[],
3153 void* values[]); 3193 void* values[]);
3154 3194
3155 // Testers for local properties. 3195 // Testers for local properties.
3156 V8_DEPRECATED("Use maybe version", bool HasOwnProperty(Local<String> key)); 3196 V8_DEPRECATED("Use maybe version", bool HasOwnProperty(Local<String> key));
3157 3197
3158 /** 3198 /**
3159 * HasOwnProperty() is like JavaScript's Object.prototype.hasOwnProperty(). 3199 * HasOwnProperty() is like JavaScript's Object.prototype.hasOwnProperty().
3160 * 3200 *
3161 * See also v8::Object::Has() and v8::Object::HasRealNamedProperty(). 3201 * See also v8::Object::Has() and v8::Object::HasRealNamedProperty().
3162 */ 3202 */
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
3306 */ 3346 */
3307 V8_DEPRECATE_SOON("Keep track of isolate correctly", Isolate* GetIsolate()); 3347 V8_DEPRECATE_SOON("Keep track of isolate correctly", Isolate* GetIsolate());
3308 3348
3309 static Local<Object> New(Isolate* isolate); 3349 static Local<Object> New(Isolate* isolate);
3310 3350
3311 V8_INLINE static Object* Cast(Value* obj); 3351 V8_INLINE static Object* Cast(Value* obj);
3312 3352
3313 private: 3353 private:
3314 Object(); 3354 Object();
3315 static void CheckCast(Value* obj); 3355 static void CheckCast(Value* obj);
3316 Local<Value> SlowGetInternalField(int index); 3356 Local<Value> SlowGetEmbedderField(int index);
3317 void* SlowGetAlignedPointerFromInternalField(int index); 3357 void* SlowGetAlignedPointerFromEmbedderField(int index);
3318 }; 3358 };
3319 3359
3320 3360
3321 /** 3361 /**
3322 * An instance of the built-in array constructor (ECMA-262, 15.4.2). 3362 * An instance of the built-in array constructor (ECMA-262, 15.4.2).
3323 */ 3363 */
3324 class V8_EXPORT Array : public Object { 3364 class V8_EXPORT Array : public Object {
3325 public: 3365 public:
3326 uint32_t Length() const; 3366 uint32_t Length() const;
3327 3367
(...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after
3926 static MaybeLocal<WasmCompiledModule> Deserialize( 3966 static MaybeLocal<WasmCompiledModule> Deserialize(
3927 Isolate* isolate, const CallerOwnedBuffer& serialized_module, 3967 Isolate* isolate, const CallerOwnedBuffer& serialized_module,
3928 const CallerOwnedBuffer& wire_bytes); 3968 const CallerOwnedBuffer& wire_bytes);
3929 static MaybeLocal<WasmCompiledModule> Compile(Isolate* isolate, 3969 static MaybeLocal<WasmCompiledModule> Compile(Isolate* isolate,
3930 const uint8_t* start, 3970 const uint8_t* start,
3931 size_t length); 3971 size_t length);
3932 WasmCompiledModule(); 3972 WasmCompiledModule();
3933 static void CheckCast(Value* obj); 3973 static void CheckCast(Value* obj);
3934 }; 3974 };
3935 3975
3936 #ifndef V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT 3976 #ifndef V8_ARRAY_BUFFER_EMBEDDER_FIELD_COUNT
3937 // The number of required internal fields can be defined by embedder. 3977 // The number of required embedder fields for array buffers.
3938 #define V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT 2 3978 #define V8_ARRAY_BUFFER_EMBEDDER_FIELD_COUNT 2
3939 #endif 3979 #endif
3940 3980
3981 // TODO(v8): deprecate this constant in favor of {..._EMBEDDER_FIELD_COUNT}
3982 #ifndef V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT
3983 // The number of required embedder fields for array buffers.
3984 #define V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT 2
3985 #else
3986 #undef V8_ARRAY_BUFFER_EMBEDDER_FIELD_COUNT
3987 #define V8_ARRAY_BUFFER_EMBEDDER_FIELD_COUNT \
3988 V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT
3989 #endif
3941 3990
3942 enum class ArrayBufferCreationMode { kInternalized, kExternalized }; 3991 enum class ArrayBufferCreationMode { kInternalized, kExternalized };
3943 3992
3944 3993
3945 /** 3994 /**
3946 * An instance of the built-in ArrayBuffer constructor (ES6 draft 15.13.5). 3995 * An instance of the built-in ArrayBuffer constructor (ES6 draft 15.13.5).
3947 */ 3996 */
3948 class V8_EXPORT ArrayBuffer : public Object { 3997 class V8_EXPORT ArrayBuffer : public Object {
3949 public: 3998 public:
3950 /** 3999 /**
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
4075 * 4124 *
4076 * The embedder should make sure to hold a strong reference to the 4125 * The embedder should make sure to hold a strong reference to the
4077 * ArrayBuffer while accessing this pointer. 4126 * ArrayBuffer while accessing this pointer.
4078 * 4127 *
4079 * The memory block is guaranteed to be allocated with |Allocator::Allocate|. 4128 * The memory block is guaranteed to be allocated with |Allocator::Allocate|.
4080 */ 4129 */
4081 Contents GetContents(); 4130 Contents GetContents();
4082 4131
4083 V8_INLINE static ArrayBuffer* Cast(Value* obj); 4132 V8_INLINE static ArrayBuffer* Cast(Value* obj);
4084 4133
4085 static const int kInternalFieldCount = V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT; 4134 // TODO(internal)
4135 static const int kInternalFieldCount = V8_ARRAY_BUFFER_EMBEDDER_FIELD_COUNT;
4136 static const int kEmbedderFieldCount = V8_ARRAY_BUFFER_EMBEDDER_FIELD_COUNT;
4086 4137
4087 private: 4138 private:
4088 ArrayBuffer(); 4139 ArrayBuffer();
4089 static void CheckCast(Value* obj); 4140 static void CheckCast(Value* obj);
4090 }; 4141 };
4091 4142
4092 4143
4093 #ifndef V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT 4144 #ifndef V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT
4094 // The number of required internal fields can be defined by embedder. 4145 // The number of required embedder fields can be defined by embedder.
4095 #define V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT 2 4146 #define V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT 2
4096 #endif 4147 #endif
4097 4148
4149 // TODO(internal): deprecate this constant in favor of
4150 // {..._EMBEDDER_FIELD_COUNT}
4151 #ifndef V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT
4152 // The number of required embedder fields can be defined by embedder.
4153 #define V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT 2
4154 #else
4155 #undef V8_ARRAY_BUFFER_VIEW_EMBEDDER_FIELD_COUNT
4156 #define V8_ARRAY_BUFFER_VIEW_EMBEDDER_FIELD_COUNT \
4157 V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT
4158 #endif
4098 4159
4099 /** 4160 /**
4100 * A base class for an instance of one of "views" over ArrayBuffer, 4161 * A base class for an instance of one of "views" over ArrayBuffer,
4101 * including TypedArrays and DataView (ES6 draft 15.13). 4162 * including TypedArrays and DataView (ES6 draft 15.13).
4102 */ 4163 */
4103 class V8_EXPORT ArrayBufferView : public Object { 4164 class V8_EXPORT ArrayBufferView : public Object {
4104 public: 4165 public:
4105 /** 4166 /**
4106 * Returns underlying ArrayBuffer. 4167 * Returns underlying ArrayBuffer.
4107 */ 4168 */
(...skipping 20 matching lines...) Expand all
4128 4189
4129 /** 4190 /**
4130 * Returns true if ArrayBufferView's backing ArrayBuffer has already been 4191 * Returns true if ArrayBufferView's backing ArrayBuffer has already been
4131 * allocated. 4192 * allocated.
4132 */ 4193 */
4133 bool HasBuffer() const; 4194 bool HasBuffer() const;
4134 4195
4135 V8_INLINE static ArrayBufferView* Cast(Value* obj); 4196 V8_INLINE static ArrayBufferView* Cast(Value* obj);
4136 4197
4137 static const int kInternalFieldCount = 4198 static const int kInternalFieldCount =
4138 V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT; 4199 V8_ARRAY_BUFFER_VIEW_EMBEDDER_FIELD_COUNT;
4200 static const int kEmbedderFieldCount =
4201 V8_ARRAY_BUFFER_VIEW_EMBEDDER_FIELD_COUNT;
4139 4202
4140 private: 4203 private:
4141 ArrayBufferView(); 4204 ArrayBufferView();
4142 static void CheckCast(Value* obj); 4205 static void CheckCast(Value* obj);
4143 }; 4206 };
4144 4207
4145 4208
4146 /** 4209 /**
4147 * A base class for an instance of TypedArray series of constructors 4210 * A base class for an instance of TypedArray series of constructors
4148 * (ES6 draft 15.13.6). 4211 * (ES6 draft 15.13.6).
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
4417 * ArrayBuffer while accessing this pointer. 4480 * ArrayBuffer while accessing this pointer.
4418 * 4481 *
4419 * The memory block is guaranteed to be allocated with |Allocator::Allocate| 4482 * The memory block is guaranteed to be allocated with |Allocator::Allocate|
4420 * by the allocator specified in 4483 * by the allocator specified in
4421 * v8::Isolate::CreateParams::array_buffer_allocator. 4484 * v8::Isolate::CreateParams::array_buffer_allocator.
4422 */ 4485 */
4423 Contents GetContents(); 4486 Contents GetContents();
4424 4487
4425 V8_INLINE static SharedArrayBuffer* Cast(Value* obj); 4488 V8_INLINE static SharedArrayBuffer* Cast(Value* obj);
4426 4489
4427 static const int kInternalFieldCount = V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT; 4490 // TODO(internal): deprecate
4491 static const int kInternalFieldCount = V8_ARRAY_BUFFER_EMBEDDER_FIELD_COUNT;
4492 static const int kEmbedderFieldCount = V8_ARRAY_BUFFER_EMBEDDER_FIELD_COUNT;
4428 4493
4429 private: 4494 private:
4430 SharedArrayBuffer(); 4495 SharedArrayBuffer();
4431 static void CheckCast(Value* obj); 4496 static void CheckCast(Value* obj);
4432 }; 4497 };
4433 4498
4434 4499
4435 /** 4500 /**
4436 * An instance of the built-in Date constructor (ECMA-262, 15.9). 4501 * An instance of the built-in Date constructor (ECMA-262, 15.9).
4437 */ 4502 */
(...skipping 1093 matching lines...) Expand 10 before | Expand all | Expand 10 after
5531 * either this method or SetAccessCheckCallback, but not both at the same 5596 * either this method or SetAccessCheckCallback, but not both at the same
5532 * time. 5597 * time.
5533 */ 5598 */
5534 void SetAccessCheckCallbackAndHandler( 5599 void SetAccessCheckCallbackAndHandler(
5535 AccessCheckCallback callback, 5600 AccessCheckCallback callback,
5536 const NamedPropertyHandlerConfiguration& named_handler, 5601 const NamedPropertyHandlerConfiguration& named_handler,
5537 const IndexedPropertyHandlerConfiguration& indexed_handler, 5602 const IndexedPropertyHandlerConfiguration& indexed_handler,
5538 Local<Value> data = Local<Value>()); 5603 Local<Value> data = Local<Value>());
5539 5604
5540 /** 5605 /**
5541 * Gets the number of internal fields for objects generated from 5606 * Gets the number of embedder fields for objects generated from
5542 * this template. 5607 * this template.
5543 */ 5608 */
5544 int InternalFieldCount(); 5609 int InternalFieldCount();
5610 int EmbedderFieldCount();
5545 5611
5546 /** 5612 /**
5547 * Sets the number of internal fields for objects generated from 5613 * Sets the number of embedder fields for objects generated from
5548 * this template. 5614 * this template.
5549 */ 5615 */
5550 void SetInternalFieldCount(int value); 5616 void SetInternalFieldCount(int value);
5617 void SetEmbedderFieldCount(int value);
5551 5618
5552 /** 5619 /**
5553 * Returns true if the object will be an immutable prototype exotic object. 5620 * Returns true if the object will be an immutable prototype exotic object.
5554 */ 5621 */
5555 bool IsImmutableProto(); 5622 bool IsImmutableProto();
5556 5623
5557 /** 5624 /**
5558 * Makes the ObjectTempate for an immutable prototype exotic object, with an 5625 * Makes the ObjectTempate for an immutable prototype exotic object, with an
5559 * immutable __proto__. 5626 * immutable __proto__.
5560 */ 5627 */
(...skipping 675 matching lines...) Expand 10 before | Expand all | Expand 10 after
6236 enum ForceCompletionAction { FORCE_COMPLETION, DO_NOT_FORCE_COMPLETION }; 6303 enum ForceCompletionAction { FORCE_COMPLETION, DO_NOT_FORCE_COMPLETION };
6237 6304
6238 struct AdvanceTracingActions { 6305 struct AdvanceTracingActions {
6239 explicit AdvanceTracingActions(ForceCompletionAction force_completion_) 6306 explicit AdvanceTracingActions(ForceCompletionAction force_completion_)
6240 : force_completion(force_completion_) {} 6307 : force_completion(force_completion_) {}
6241 6308
6242 ForceCompletionAction force_completion; 6309 ForceCompletionAction force_completion;
6243 }; 6310 };
6244 6311
6245 /** 6312 /**
6246 * Called by v8 to register internal fields of found wrappers. 6313 * Called by v8 to register embedder fields of found wrappers.
6247 * 6314 *
6248 * The embedder is expected to store them somewhere and trace reachable 6315 * The embedder is expected to store them somewhere and trace reachable
6249 * wrappers from them when called through |AdvanceTracing|. 6316 * wrappers from them when called through |AdvanceTracing|.
6250 */ 6317 */
6251 virtual void RegisterV8References( 6318 virtual void RegisterV8References(
6252 const std::vector<std::pair<void*, void*> >& internal_fields) = 0; 6319 const std::vector<std::pair<void*, void*> >& embedder_fields) = 0;
6253 6320
6254 /** 6321 /**
6255 * Called at the beginning of a GC cycle. 6322 * Called at the beginning of a GC cycle.
6256 */ 6323 */
6257 virtual void TracePrologue() = 0; 6324 virtual void TracePrologue() = 0;
6258 6325
6259 /** 6326 /**
6260 * Called to to make a tracing step in the embedder. 6327 * Called to to make a tracing step in the embedder.
6261 * 6328 *
6262 * The embedder is expected to trace its heap starting from wrappers reported 6329 * The embedder is expected to trace its heap starting from wrappers reported
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
6294 * Returns the number of wrappers that are still to be traced by the embedder. 6361 * Returns the number of wrappers that are still to be traced by the embedder.
6295 */ 6362 */
6296 virtual size_t NumberOfWrappersToTrace() { return 0; } 6363 virtual size_t NumberOfWrappersToTrace() { return 0; }
6297 6364
6298 protected: 6365 protected:
6299 virtual ~EmbedderHeapTracer() = default; 6366 virtual ~EmbedderHeapTracer() = default;
6300 }; 6367 };
6301 6368
6302 /** 6369 /**
6303 * Callback and supporting data used in SnapshotCreator to implement embedder 6370 * Callback and supporting data used in SnapshotCreator to implement embedder
6304 * logic to serialize internal fields. 6371 * logic to serialize embedder fields.
6305 */ 6372 */
6306 struct SerializeInternalFieldsCallback { 6373 class SerializeEmbedderFieldsCallback {
6374 public:
6307 typedef StartupData (*CallbackFunction)(Local<Object> holder, int index, 6375 typedef StartupData (*CallbackFunction)(Local<Object> holder, int index,
6308 void* data); 6376 void* data);
6309 SerializeInternalFieldsCallback(CallbackFunction function = nullptr, 6377 SerializeEmbedderFieldsCallback(CallbackFunction function = nullptr,
6310 void* data_arg = nullptr) 6378 void* data_arg = nullptr)
6311 : callback(function), data(data_arg) {} 6379 : callback(function), data(data_arg) {}
6312 CallbackFunction callback; 6380 CallbackFunction callback;
6313 void* data; 6381 void* data;
6314 }; 6382 };
6383 class SerializeInternalFieldsCallback : public SerializeEmbedderFieldsCallback {
6384 public:
6385 SerializeInternalFieldsCallback(CallbackFunction function = nullptr,
6386 void* data_arg = nullptr)
6387 : SerializeEmbedderFieldsCallback(function, data_arg) {}
6388 };
6315 6389
6316 /** 6390 /**
6317 * Callback and supporting data used to implement embedder logic to deserialize 6391 * Callback and supporting data used to implement embedder logic to deserialize
6318 * internal fields. 6392 * embedder fields.
6319 */ 6393 */
6320 struct DeserializeInternalFieldsCallback { 6394 class DeserializeEmbedderFieldsCallback {
6395 public:
6321 typedef void (*CallbackFunction)(Local<Object> holder, int index, 6396 typedef void (*CallbackFunction)(Local<Object> holder, int index,
6322 StartupData payload, void* data); 6397 StartupData payload, void* data);
6323 DeserializeInternalFieldsCallback(CallbackFunction function = nullptr, 6398 DeserializeEmbedderFieldsCallback(CallbackFunction function = nullptr,
6324 void* data_arg = nullptr) 6399 void* data_arg = nullptr)
6325 : callback(function), data(data_arg) {} 6400 : callback(function), data(data_arg) {}
6326 void (*callback)(Local<Object> holder, int index, StartupData payload, 6401 void (*callback)(Local<Object> holder, int index, StartupData payload,
6327 void* data); 6402 void* data);
6328 void* data; 6403 void* data;
6329 }; 6404 };
6405 class DeserializeInternalFieldsCallback
6406 : public DeserializeEmbedderFieldsCallback {
6407 public:
6408 DeserializeInternalFieldsCallback(CallbackFunction function = nullptr,
6409 void* data_arg = nullptr)
6410 : DeserializeEmbedderFieldsCallback(function, data_arg) {}
6411 };
6330 6412
6331 /** 6413 /**
6332 * Isolate represents an isolated instance of the V8 engine. V8 isolates have 6414 * Isolate represents an isolated instance of the V8 engine. V8 isolates have
6333 * completely separate states. Objects from one isolate must not be used in 6415 * completely separate states. Objects from one isolate must not be used in
6334 * other isolates. The embedder can create multiple isolates and use them in 6416 * other isolates. The embedder can create multiple isolates and use them in
6335 * parallel in multiple threads. An isolate can be entered by at most one 6417 * parallel in multiple threads. An isolate can be entered by at most one
6336 * thread at any given time. The Locker/Unlocker API must be used to 6418 * thread at any given time. The Locker/Unlocker API must be used to
6337 * synchronize. 6419 * synchronize.
6338 */ 6420 */
6339 class V8_EXPORT Isolate { 6421 class V8_EXPORT Isolate {
(...skipping 1298 matching lines...) Expand 10 before | Expand all | Expand 10 after
7638 7720
7639 static internal::Object** GlobalizeReference(internal::Isolate* isolate, 7721 static internal::Object** GlobalizeReference(internal::Isolate* isolate,
7640 internal::Object** handle); 7722 internal::Object** handle);
7641 static internal::Object** CopyPersistent(internal::Object** handle); 7723 static internal::Object** CopyPersistent(internal::Object** handle);
7642 static void DisposeGlobal(internal::Object** global_handle); 7724 static void DisposeGlobal(internal::Object** global_handle);
7643 static void MakeWeak(internal::Object** location, void* data, 7725 static void MakeWeak(internal::Object** location, void* data,
7644 WeakCallbackInfo<void>::Callback weak_callback, 7726 WeakCallbackInfo<void>::Callback weak_callback,
7645 WeakCallbackType type); 7727 WeakCallbackType type);
7646 static void MakeWeak(internal::Object** location, void* data, 7728 static void MakeWeak(internal::Object** location, void* data,
7647 // Must be 0 or -1. 7729 // Must be 0 or -1.
7648 int internal_field_index1, 7730 int embedder_field_index1,
7649 // Must be 1 or -1. 7731 // Must be 1 or -1.
7650 int internal_field_index2, 7732 int embedder_field_index2,
7651 WeakCallbackInfo<void>::Callback weak_callback); 7733 WeakCallbackInfo<void>::Callback weak_callback);
7652 static void MakeWeak(internal::Object*** location_addr); 7734 static void MakeWeak(internal::Object*** location_addr);
7653 static void* ClearWeak(internal::Object** location); 7735 static void* ClearWeak(internal::Object** location);
7654 static void Eternalize(Isolate* isolate, 7736 static void Eternalize(Isolate* isolate,
7655 Value* handle, 7737 Value* handle,
7656 int* index); 7738 int* index);
7657 static Local<Value> GetEternal(Isolate* isolate, int index); 7739 static Local<Value> GetEternal(Isolate* isolate, int index);
7658 7740
7659 static void RegisterExternallyReferencedObject(internal::Object** object, 7741 static void RegisterExternallyReferencedObject(internal::Object** object,
7660 internal::Isolate* isolate); 7742 internal::Isolate* isolate);
7661 7743
7662 template <class K, class V, class T> 7744 template <class K, class V, class T>
7663 friend class PersistentValueMapBase; 7745 friend class PersistentValueMapBase;
7664 7746
7665 static void FromJustIsNothing(); 7747 static void FromJustIsNothing();
7666 static void ToLocalEmpty(); 7748 static void ToLocalEmpty();
7667 static void InternalFieldOutOfBounds(int index); 7749 static void EmbedderFieldOutOfBounds(int index);
7668 template <class T> friend class Local; 7750 template <class T> friend class Local;
7669 template <class T> 7751 template <class T>
7670 friend class MaybeLocal; 7752 friend class MaybeLocal;
7671 template <class T> 7753 template <class T>
7672 friend class Maybe; 7754 friend class Maybe;
7673 template <class T> 7755 template <class T>
7674 friend class WeakCallbackInfo; 7756 friend class WeakCallbackInfo;
7675 template <class T> friend class Eternal; 7757 template <class T> friend class Eternal;
7676 template <class T> friend class PersistentBase; 7758 template <class T> friend class PersistentBase;
7677 template <class T, class M> friend class Persistent; 7759 template <class T, class M> friend class Persistent;
(...skipping 29 matching lines...) Expand all
7707 * Set the default context to be included in the snapshot blob. 7789 * Set the default context to be included in the snapshot blob.
7708 * The snapshot will not contain the global proxy, and we expect one or a 7790 * The snapshot will not contain the global proxy, and we expect one or a
7709 * global object template to create one, to be provided upon deserialization. 7791 * global object template to create one, to be provided upon deserialization.
7710 */ 7792 */
7711 void SetDefaultContext(Local<Context> context); 7793 void SetDefaultContext(Local<Context> context);
7712 7794
7713 /** 7795 /**
7714 * Add additional context to be included in the snapshot blob. 7796 * Add additional context to be included in the snapshot blob.
7715 * The snapshot will include the global proxy. 7797 * The snapshot will include the global proxy.
7716 * 7798 *
7717 * \param callback optional callback to serialize internal fields. 7799 * \param callback optional callback to serialize embedder fields.
7718 * 7800 *
7719 * \returns the index of the context in the snapshot blob. 7801 * \returns the index of the context in the snapshot blob.
7720 */ 7802 */
7721 size_t AddContext(Local<Context> context, 7803 size_t AddContext(Local<Context> context,
7722 SerializeInternalFieldsCallback callback = 7804 SerializeEmbedderFieldsCallback callback =
7723 SerializeInternalFieldsCallback()); 7805 SerializeEmbedderFieldsCallback());
7724 7806
7725 /** 7807 /**
7726 * Add a template to be included in the snapshot blob. 7808 * Add a template to be included in the snapshot blob.
7727 * \returns the index of the template in the snapshot blob. 7809 * \returns the index of the template in the snapshot blob.
7728 */ 7810 */
7729 size_t AddTemplate(Local<Template> template_obj); 7811 size_t AddTemplate(Local<Template> template_obj);
7730 7812
7731 /** 7813 /**
7732 * Created a snapshot data blob. 7814 * Created a snapshot data blob.
7733 * This must not be called from within a handle scope. 7815 * This must not be called from within a handle scope.
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
8042 /** 8124 /**
8043 * Create a new context from a (non-default) context snapshot. There 8125 * Create a new context from a (non-default) context snapshot. There
8044 * is no way to provide a global object template since we do not create 8126 * is no way to provide a global object template since we do not create
8045 * a new global object from template, but we can reuse a global object. 8127 * a new global object from template, but we can reuse a global object.
8046 * 8128 *
8047 * \param isolate See v8::Context::New. 8129 * \param isolate See v8::Context::New.
8048 * 8130 *
8049 * \param context_snapshot_index The index of the context snapshot to 8131 * \param context_snapshot_index The index of the context snapshot to
8050 * deserialize from. Use v8::Context::New for the default snapshot. 8132 * deserialize from. Use v8::Context::New for the default snapshot.
8051 * 8133 *
8052 * \param internal_fields_deserializer Optional callback to deserialize 8134 * \param embedder_fields_deserializer Optional callback to deserialize
8053 * internal fields. It should match the SerializeInternalFieldCallback used 8135 * embedder fields. It should match the SerializeInternalFieldCallback used
8054 * to serialize. 8136 * to serialize.
8055 * 8137 *
8056 * \param extensions See v8::Context::New. 8138 * \param extensions See v8::Context::New.
8057 * 8139 *
8058 * \param global_object See v8::Context::New. 8140 * \param global_object See v8::Context::New.
8059 */ 8141 */
8060 8142
8061 static MaybeLocal<Context> FromSnapshot( 8143 static MaybeLocal<Context> FromSnapshot(
8062 Isolate* isolate, size_t context_snapshot_index, 8144 Isolate* isolate, size_t context_snapshot_index,
8063 DeserializeInternalFieldsCallback internal_fields_deserializer = 8145 DeserializeEmbedderFieldsCallback embedder_fields_deserializer =
8064 DeserializeInternalFieldsCallback(), 8146 DeserializeEmbedderFieldsCallback(),
8065 ExtensionConfiguration* extensions = nullptr, 8147 ExtensionConfiguration* extensions = nullptr,
8066 MaybeLocal<Value> global_object = MaybeLocal<Value>()); 8148 MaybeLocal<Value> global_object = MaybeLocal<Value>());
8067 8149
8068 /** 8150 /**
8069 * Returns an global object that isn't backed by an actual context. 8151 * Returns an global object that isn't backed by an actual context.
8070 * 8152 *
8071 * The global template needs to have access checks with handlers installed. 8153 * The global template needs to have access checks with handlers installed.
8072 * If an existing global object is passed in, the global object is detached 8154 * If an existing global object is passed in, the global object is detached
8073 * from its context. 8155 * from its context.
8074 * 8156 *
(...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after
8628 return Local<T>(reinterpret_cast<T*>(*V8::GetEternal(isolate, index_))); 8710 return Local<T>(reinterpret_cast<T*>(*V8::GetEternal(isolate, index_)));
8629 } 8711 }
8630 8712
8631 8713
8632 template <class T> 8714 template <class T>
8633 Local<T> MaybeLocal<T>::ToLocalChecked() { 8715 Local<T> MaybeLocal<T>::ToLocalChecked() {
8634 if (V8_UNLIKELY(val_ == nullptr)) V8::ToLocalEmpty(); 8716 if (V8_UNLIKELY(val_ == nullptr)) V8::ToLocalEmpty();
8635 return Local<T>(val_); 8717 return Local<T>(val_);
8636 } 8718 }
8637 8719
8638 8720 template <class T>
8721 void* WeakCallbackInfo<T>::GetEmbedderField(int index) const {
8722 #ifdef V8_ENABLE_CHECKS
8723 if (index < 0 || index >= kEmbedderFieldsInWeakCallback) {
8724 V8::EmbedderFieldOutOfBounds(index);
8725 }
8726 #endif
8727 return embedder_fields_[index];
8728 }
8639 template <class T> 8729 template <class T>
8640 void* WeakCallbackInfo<T>::GetInternalField(int index) const { 8730 void* WeakCallbackInfo<T>::GetInternalField(int index) const {
8641 #ifdef V8_ENABLE_CHECKS 8731 return WeakCallbackInfo<T>::GetEmbedderField(index);
8642 if (index < 0 || index >= kInternalFieldsInWeakCallback) {
8643 V8::InternalFieldOutOfBounds(index);
8644 }
8645 #endif
8646 return internal_fields_[index];
8647 } 8732 }
8648 8733
8649 8734
8650 template <class T> 8735 template <class T>
8651 T* PersistentBase<T>::New(Isolate* isolate, T* that) { 8736 T* PersistentBase<T>::New(Isolate* isolate, T* that) {
8652 if (that == NULL) return NULL; 8737 if (that == NULL) return NULL;
8653 internal::Object** p = reinterpret_cast<internal::Object**>(that); 8738 internal::Object** p = reinterpret_cast<internal::Object**>(that);
8654 return reinterpret_cast<T*>( 8739 return reinterpret_cast<T*>(
8655 V8::GlobalizeReference(reinterpret_cast<internal::Isolate*>(isolate), 8740 V8::GlobalizeReference(reinterpret_cast<internal::Isolate*>(isolate),
8656 p)); 8741 p));
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
9059 Local<Boolean> Boolean::New(Isolate* isolate, bool value) { 9144 Local<Boolean> Boolean::New(Isolate* isolate, bool value) {
9060 return value ? True(isolate) : False(isolate); 9145 return value ? True(isolate) : False(isolate);
9061 } 9146 }
9062 9147
9063 void Template::Set(Isolate* isolate, const char* name, Local<Data> value) { 9148 void Template::Set(Isolate* isolate, const char* name, Local<Data> value) {
9064 Set(String::NewFromUtf8(isolate, name, NewStringType::kInternalized) 9149 Set(String::NewFromUtf8(isolate, name, NewStringType::kInternalized)
9065 .ToLocalChecked(), 9150 .ToLocalChecked(),
9066 value); 9151 value);
9067 } 9152 }
9068 9153
9069 9154 Local<Value> Object::GetEmbedderField(int index) {
9070 Local<Value> Object::GetInternalField(int index) {
9071 #ifndef V8_ENABLE_CHECKS 9155 #ifndef V8_ENABLE_CHECKS
9072 typedef internal::Object O; 9156 typedef internal::Object O;
9073 typedef internal::HeapObject HO; 9157 typedef internal::HeapObject HO;
9074 typedef internal::Internals I; 9158 typedef internal::Internals I;
9075 O* obj = *reinterpret_cast<O**>(this); 9159 O* obj = *reinterpret_cast<O**>(this);
9076 // Fast path: If the object is a plain JSObject, which is the common case, we 9160 // Fast path: If the object is a plain JSObject, which is the common case, we
9077 // know where to find the internal fields and can return the value directly. 9161 // know where to find the embedder fields and can return the value directly.
9078 auto instance_type = I::GetInstanceType(obj); 9162 auto instance_type = I::GetInstanceType(obj);
9079 if (instance_type == I::kJSObjectType || 9163 if (instance_type == I::kJSObjectType ||
9080 instance_type == I::kJSApiObjectType) { 9164 instance_type == I::kJSApiObjectType) {
9081 int offset = I::kJSObjectHeaderSize + (internal::kApiPointerSize * index); 9165 int offset = I::kJSObjectHeaderSize + (internal::kApiPointerSize * index);
9082 O* value = I::ReadField<O*>(obj, offset); 9166 O* value = I::ReadField<O*>(obj, offset);
9083 O** result = HandleScope::CreateHandle(reinterpret_cast<HO*>(obj), value); 9167 O** result = HandleScope::CreateHandle(reinterpret_cast<HO*>(obj), value);
9084 return Local<Value>(reinterpret_cast<Value*>(result)); 9168 return Local<Value>(reinterpret_cast<Value*>(result));
9085 } 9169 }
9086 #endif 9170 #endif
9087 return SlowGetInternalField(index); 9171 return SlowGetEmbedderField(index);
9088 } 9172 }
9089 9173
9174 Local<Value> Object::GetInternalField(int index) {
9175 return GetEmbedderField(index); // non-deprecated method.
9176 }
9090 9177
9091 void* Object::GetAlignedPointerFromInternalField(int index) { 9178 void* Object::GetAlignedPointerFromEmbedderField(int index) {
9092 #ifndef V8_ENABLE_CHECKS 9179 #ifndef V8_ENABLE_CHECKS
9093 typedef internal::Object O; 9180 typedef internal::Object O;
9094 typedef internal::Internals I; 9181 typedef internal::Internals I;
9095 O* obj = *reinterpret_cast<O**>(this); 9182 O* obj = *reinterpret_cast<O**>(this);
9096 // Fast path: If the object is a plain JSObject, which is the common case, we 9183 // Fast path: If the object is a plain JSObject, which is the common case, we
9097 // know where to find the internal fields and can return the value directly. 9184 // know where to find the embedder fields and can return the value directly.
9098 auto instance_type = I::GetInstanceType(obj); 9185 auto instance_type = I::GetInstanceType(obj);
9099 if (V8_LIKELY(instance_type == I::kJSObjectType || 9186 if (V8_LIKELY(instance_type == I::kJSObjectType ||
9100 instance_type == I::kJSApiObjectType)) { 9187 instance_type == I::kJSApiObjectType)) {
9101 int offset = I::kJSObjectHeaderSize + (internal::kApiPointerSize * index); 9188 int offset = I::kJSObjectHeaderSize + (internal::kApiPointerSize * index);
9102 return I::ReadField<void*>(obj, offset); 9189 return I::ReadField<void*>(obj, offset);
9103 } 9190 }
9104 #endif 9191 #endif
9105 return SlowGetAlignedPointerFromInternalField(index); 9192 return SlowGetAlignedPointerFromEmbedderField(index);
9193 }
9194
9195 void* Object::GetAlignedPointerFromInternalField(int index) {
9196 return GetAlignedPointerFromEmbedderField(index); // non-deprecated method.
9106 } 9197 }
9107 9198
9108 String* String::Cast(v8::Value* value) { 9199 String* String::Cast(v8::Value* value) {
9109 #ifdef V8_ENABLE_CHECKS 9200 #ifdef V8_ENABLE_CHECKS
9110 CheckCast(value); 9201 CheckCast(value);
9111 #endif 9202 #endif
9112 return static_cast<String*>(value); 9203 return static_cast<String*>(value);
9113 } 9204 }
9114 9205
9115 9206
(...skipping 700 matching lines...) Expand 10 before | Expand all | Expand 10 after
9816 */ 9907 */
9817 9908
9818 9909
9819 } // namespace v8 9910 } // namespace v8
9820 9911
9821 9912
9822 #undef TYPE_CHECK 9913 #undef TYPE_CHECK
9823 9914
9824 9915
9825 #endif // INCLUDE_V8_H_ 9916 #endif // INCLUDE_V8_H_
OLDNEW
« no previous file with comments | « no previous file | include/v8-experimental.h » ('j') | include/v8-experimental.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698