Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 411 V8_INLINE Local<T> Get(Isolate* isolate); | 411 V8_INLINE Local<T> Get(Isolate* isolate); |
| 412 V8_INLINE bool IsEmpty() { return index_ == kInitialValue; } | 412 V8_INLINE bool IsEmpty() { return index_ == kInitialValue; } |
| 413 template<class S> V8_INLINE void Set(Isolate* isolate, Local<S> handle); | 413 template<class S> V8_INLINE void Set(Isolate* isolate, Local<S> handle); |
| 414 | 414 |
| 415 private: | 415 private: |
| 416 static const int kInitialValue = -1; | 416 static const int kInitialValue = -1; |
| 417 int index_; | 417 int index_; |
| 418 }; | 418 }; |
| 419 | 419 |
| 420 | 420 |
| 421 template<class T> | |
| 422 class CallbackData { | |
|
rmcilroy
2014/12/03 11:56:35
nit - BaseCallbackData or maybe even BaseWeakCallb
Erik Corry
2014/12/15 15:12:41
Done.
| |
| 423 public: | |
| 424 V8_INLINE Isolate* GetIsolate() const { return isolate_; } | |
| 425 V8_INLINE T* GetParameter() const { return parameter_; } | |
| 426 | |
| 427 protected: | |
| 428 CallbackData(Isolate* isolate, T* parameter) | |
| 429 : isolate_(isolate), parameter_(parameter) { } | |
| 430 | |
| 431 private: | |
| 432 Isolate* isolate_; | |
| 433 T* parameter_; | |
| 434 }; | |
| 435 | |
|
rmcilroy
2014/12/03 11:56:35
nit - two newlines between classes in V8
Erik Corry
2014/12/15 15:12:41
Done.
| |
| 421 template<class T, class P> | 436 template<class T, class P> |
| 422 class WeakCallbackData { | 437 class WeakCallbackData : public CallbackData<P> { |
| 423 public: | 438 public: |
| 424 typedef void (*Callback)(const WeakCallbackData<T, P>& data); | 439 typedef void (*Callback)(const WeakCallbackData<T, P>& data); |
| 425 | 440 |
| 426 V8_INLINE Isolate* GetIsolate() const { return isolate_; } | |
| 427 V8_INLINE Local<T> GetValue() const { return handle_; } | 441 V8_INLINE Local<T> GetValue() const { return handle_; } |
| 428 V8_INLINE P* GetParameter() const { return parameter_; } | |
| 429 | 442 |
| 430 private: | 443 private: |
| 431 friend class internal::GlobalHandles; | 444 friend class internal::GlobalHandles; |
| 432 WeakCallbackData(Isolate* isolate, Local<T> handle, P* parameter) | 445 WeakCallbackData(Isolate* isolate, Local<T> handle, P* parameter) |
| 433 : isolate_(isolate), handle_(handle), parameter_(parameter) { } | 446 : CallbackData<P>(isolate, parameter), handle_(handle) { } |
| 434 Isolate* isolate_; | |
| 435 Local<T> handle_; | 447 Local<T> handle_; |
| 436 P* parameter_; | |
| 437 }; | 448 }; |
| 438 | 449 |
| 439 | 450 |
| 451 template<typename T> | |
| 452 class PhantomCallbackData : public CallbackData<T> { | |
| 453 public: | |
| 454 typedef void (*Callback)(const PhantomCallbackData<T>& data); | |
| 455 | |
| 456 V8_INLINE void* GetInternalField1() const { return internal_field1_; } | |
| 457 V8_INLINE void* GetInternalField2() const { return internal_field2_; } | |
| 458 | |
| 459 private: | |
| 460 friend class internal::GlobalHandles; | |
| 461 PhantomCallbackData(Isolate* isolate, void* internalField1, | |
| 462 void* internalField2) | |
| 463 : CallbackData<T>(isolate, NULL), | |
|
rmcilroy
2014/12/03 11:56:35
Do we want to expose NULL parameters to PhantomCal
Erik Corry
2014/12/15 15:12:41
Fixed to pass a type that has only valid fields to
| |
| 464 internal_field1_(internalField1), | |
| 465 internal_field2_(internalField2) { } | |
| 466 PhantomCallbackData(Isolate* isolate, T* parameter) | |
| 467 : CallbackData<T>(isolate, parameter), | |
| 468 internal_field1_(NULL), | |
| 469 internal_field2_(NULL) { } | |
| 470 void* internal_field1_; | |
| 471 void* internal_field2_; | |
| 472 }; | |
| 473 | |
| 474 | |
| 440 /** | 475 /** |
| 441 * An object reference that is independent of any handle scope. Where | 476 * An object reference that is independent of any handle scope. Where |
| 442 * a Local handle only lives as long as the HandleScope in which it was | 477 * a Local handle only lives as long as the HandleScope in which it was |
| 443 * allocated, a PersistentBase handle remains valid until it is explicitly | 478 * allocated, a PersistentBase handle remains valid until it is explicitly |
| 444 * disposed. | 479 * disposed. |
| 445 * | 480 * |
| 446 * A persistent handle contains a reference to a storage cell within | 481 * A persistent handle contains a reference to a storage cell within |
| 447 * the v8 engine which holds an object value and which is updated by | 482 * the v8 engine which holds an object value and which is updated by |
| 448 * the garbage collector whenever the object is moved. A new storage | 483 * the garbage collector whenever the object is moved. A new storage |
| 449 * cell can be created using the constructor or PersistentBase::Reset and | 484 * cell can be created using the constructor or PersistentBase::Reset and |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 464 template <class S> | 499 template <class S> |
| 465 V8_INLINE void Reset(Isolate* isolate, const Handle<S>& other); | 500 V8_INLINE void Reset(Isolate* isolate, const Handle<S>& other); |
| 466 | 501 |
| 467 /** | 502 /** |
| 468 * If non-empty, destroy the underlying storage cell | 503 * If non-empty, destroy the underlying storage cell |
| 469 * and create a new one with the contents of other if other is non empty | 504 * and create a new one with the contents of other if other is non empty |
| 470 */ | 505 */ |
| 471 template <class S> | 506 template <class S> |
| 472 V8_INLINE void Reset(Isolate* isolate, const PersistentBase<S>& other); | 507 V8_INLINE void Reset(Isolate* isolate, const PersistentBase<S>& other); |
| 473 | 508 |
| 474 V8_INLINE bool IsEmpty() const { return val_ == 0; } | 509 V8_INLINE bool IsEmpty() const { return val_ == NULL; } |
| 510 V8_INLINE void Empty() { val_ = NULL; } | |
|
jochen (gone - plz use gerrit)
2014/12/02 10:25:59
what do you need Empty() for?
Erik Corry
2014/12/02 10:40:48
It seems I don't need it any more. Removed.
Erik Corry
2014/12/15 15:12:41
Actually I need this for the corresponding Blink c
| |
| 475 | 511 |
| 476 template <class S> | 512 template <class S> |
| 477 V8_INLINE bool operator==(const PersistentBase<S>& that) const { | 513 V8_INLINE bool operator==(const PersistentBase<S>& that) const { |
| 478 internal::Object** a = reinterpret_cast<internal::Object**>(this->val_); | 514 internal::Object** a = reinterpret_cast<internal::Object**>(this->val_); |
| 479 internal::Object** b = reinterpret_cast<internal::Object**>(that.val_); | 515 internal::Object** b = reinterpret_cast<internal::Object**>(that.val_); |
| 480 if (a == 0) return b == 0; | 516 if (a == NULL) return b == NULL; |
| 481 if (b == 0) return false; | 517 if (b == NULL) return false; |
| 482 return *a == *b; | 518 return *a == *b; |
| 483 } | 519 } |
| 484 | 520 |
| 485 template <class S> V8_INLINE bool operator==(const Handle<S>& that) const { | 521 template <class S> V8_INLINE bool operator==(const Handle<S>& that) const { |
| 486 internal::Object** a = reinterpret_cast<internal::Object**>(this->val_); | 522 internal::Object** a = reinterpret_cast<internal::Object**>(this->val_); |
| 487 internal::Object** b = reinterpret_cast<internal::Object**>(that.val_); | 523 internal::Object** b = reinterpret_cast<internal::Object**>(that.val_); |
| 488 if (a == 0) return b == 0; | 524 if (a == NULL) return b == NULL; |
| 489 if (b == 0) return false; | 525 if (b == NULL) return false; |
| 490 return *a == *b; | 526 return *a == *b; |
| 491 } | 527 } |
| 492 | 528 |
| 493 template <class S> | 529 template <class S> |
| 494 V8_INLINE bool operator!=(const PersistentBase<S>& that) const { | 530 V8_INLINE bool operator!=(const PersistentBase<S>& that) const { |
| 495 return !operator==(that); | 531 return !operator==(that); |
| 496 } | 532 } |
| 497 | 533 |
| 498 template <class S> V8_INLINE bool operator!=(const Handle<S>& that) const { | 534 template <class S> V8_INLINE bool operator!=(const Handle<S>& that) const { |
| 499 return !operator==(that); | 535 return !operator==(that); |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 514 template<typename S, typename P> | 550 template<typename S, typename P> |
| 515 V8_INLINE void SetWeak( | 551 V8_INLINE void SetWeak( |
| 516 P* parameter, | 552 P* parameter, |
| 517 typename WeakCallbackData<S, P>::Callback callback); | 553 typename WeakCallbackData<S, P>::Callback callback); |
| 518 | 554 |
| 519 // Phantom persistents work like weak persistents, except that the pointer to | 555 // Phantom persistents work like weak persistents, except that the pointer to |
| 520 // the object being collected is not available in the finalization callback. | 556 // the object being collected is not available in the finalization callback. |
| 521 // This enables the garbage collector to collect the object and any objects | 557 // This enables the garbage collector to collect the object and any objects |
| 522 // it references transitively in one GC cycle. | 558 // it references transitively in one GC cycle. |
| 523 template <typename P> | 559 template <typename P> |
| 524 V8_INLINE void SetPhantom(P* parameter, | 560 V8_INLINE void SetPhantom( |
| 525 typename WeakCallbackData<T, P>::Callback callback); | 561 P* parameter, typename PhantomCallbackData<P>::Callback callback); |
| 526 | 562 |
| 527 template <typename S, typename P> | 563 V8_INLINE void SetPhantom( |
| 528 V8_INLINE void SetPhantom(P* parameter, | 564 typename PhantomCallbackData<void>::Callback callback, |
| 529 typename WeakCallbackData<S, P>::Callback callback); | 565 int internalFieldOffset1, int internalFieldOffset2); |
|
jochen (gone - plz use gerrit)
2014/12/02 10:25:59
internal_field_index1
Erik Corry
2014/12/02 10:40:48
Done.
| |
| 530 | 566 |
| 531 template<typename P> | 567 template<typename P> |
| 532 V8_INLINE P* ClearWeak(); | 568 V8_INLINE P* ClearWeak(); |
| 533 | 569 |
| 534 // TODO(dcarney): remove this. | 570 // TODO(dcarney): remove this. |
| 535 V8_INLINE void ClearWeak() { ClearWeak<void>(); } | 571 V8_INLINE void ClearWeak() { ClearWeak<void>(); } |
| 536 | 572 |
| 537 /** | 573 /** |
| 538 * Marks the reference to this object independent. Garbage collector is free | 574 * Marks the reference to this object independent. Garbage collector is free |
| 539 * to ignore any object groups containing this object. Weak callback for an | 575 * to ignore any object groups containing this object. Weak callback for an |
| (...skipping 1936 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2476 Local<String> ObjectProtoToString(); | 2512 Local<String> ObjectProtoToString(); |
| 2477 | 2513 |
| 2478 /** | 2514 /** |
| 2479 * Returns the name of the function invoked as a constructor for this object. | 2515 * Returns the name of the function invoked as a constructor for this object. |
| 2480 */ | 2516 */ |
| 2481 Local<String> GetConstructorName(); | 2517 Local<String> GetConstructorName(); |
| 2482 | 2518 |
| 2483 /** Gets the number of internal fields for this Object. */ | 2519 /** Gets the number of internal fields for this Object. */ |
| 2484 int InternalFieldCount(); | 2520 int InternalFieldCount(); |
| 2485 | 2521 |
| 2522 static const int kNoInternalFieldIndex = -1; | |
| 2523 | |
| 2486 /** Same as above, but works for Persistents */ | 2524 /** Same as above, but works for Persistents */ |
| 2487 V8_INLINE static int InternalFieldCount( | 2525 V8_INLINE static int InternalFieldCount( |
| 2488 const PersistentBase<Object>& object) { | 2526 const PersistentBase<Object>& object) { |
| 2489 return object.val_->InternalFieldCount(); | 2527 return object.val_->InternalFieldCount(); |
| 2490 } | 2528 } |
| 2491 | 2529 |
| 2492 /** Gets the value from an internal field. */ | 2530 /** Gets the value from an internal field. */ |
| 2493 V8_INLINE Local<Value> GetInternalField(int index); | 2531 V8_INLINE Local<Value> GetInternalField(int index); |
| 2494 | 2532 |
| 2495 /** Sets the value in an internal field. */ | 2533 /** Sets the value in an internal field. */ |
| (...skipping 2984 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5480 private: | 5518 private: |
| 5481 V8(); | 5519 V8(); |
| 5482 | 5520 |
| 5483 enum WeakHandleType { PhantomHandle, NonphantomHandle }; | 5521 enum WeakHandleType { PhantomHandle, NonphantomHandle }; |
| 5484 | 5522 |
| 5485 static internal::Object** GlobalizeReference(internal::Isolate* isolate, | 5523 static internal::Object** GlobalizeReference(internal::Isolate* isolate, |
| 5486 internal::Object** handle); | 5524 internal::Object** handle); |
| 5487 static internal::Object** CopyPersistent(internal::Object** handle); | 5525 static internal::Object** CopyPersistent(internal::Object** handle); |
| 5488 static void DisposeGlobal(internal::Object** global_handle); | 5526 static void DisposeGlobal(internal::Object** global_handle); |
| 5489 typedef WeakCallbackData<Value, void>::Callback WeakCallback; | 5527 typedef WeakCallbackData<Value, void>::Callback WeakCallback; |
| 5528 typedef PhantomCallbackData<void>::Callback PhantomCallback; | |
| 5490 static void MakeWeak(internal::Object** global_handle, void* data, | 5529 static void MakeWeak(internal::Object** global_handle, void* data, |
| 5491 WeakCallback weak_callback, WeakHandleType phantom); | 5530 WeakCallback weak_callback); |
| 5531 static void MakePhantom( | |
| 5532 internal::Object** global_handle, void* data, | |
| 5533 PhantomCallback weak_callback, | |
| 5534 int internal_field_index1 = Object::kNoInternalFieldIndex, | |
| 5535 int internal_field_index2 = Object::kNoInternalFieldIndex); | |
| 5492 static void* ClearWeak(internal::Object** global_handle); | 5536 static void* ClearWeak(internal::Object** global_handle); |
| 5493 static void Eternalize(Isolate* isolate, | 5537 static void Eternalize(Isolate* isolate, |
| 5494 Value* handle, | 5538 Value* handle, |
| 5495 int* index); | 5539 int* index); |
| 5496 static Local<Value> GetEternal(Isolate* isolate, int index); | 5540 static Local<Value> GetEternal(Isolate* isolate, int index); |
| 5497 | 5541 |
| 5498 template <class T> friend class Handle; | 5542 template <class T> friend class Handle; |
| 5499 template <class T> friend class Local; | 5543 template <class T> friend class Local; |
| 5500 template <class T> friend class Eternal; | 5544 template <class T> friend class Eternal; |
| 5501 template <class T> friend class PersistentBase; | 5545 template <class T> friend class PersistentBase; |
| (...skipping 588 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6090 static const int kTrueValueRootIndex = 8; | 6134 static const int kTrueValueRootIndex = 8; |
| 6091 static const int kFalseValueRootIndex = 9; | 6135 static const int kFalseValueRootIndex = 9; |
| 6092 static const int kEmptyStringRootIndex = 154; | 6136 static const int kEmptyStringRootIndex = 154; |
| 6093 | 6137 |
| 6094 // The external allocation limit should be below 256 MB on all architectures | 6138 // The external allocation limit should be below 256 MB on all architectures |
| 6095 // to avoid that resource-constrained embedders run low on memory. | 6139 // to avoid that resource-constrained embedders run low on memory. |
| 6096 static const int kExternalAllocationLimit = 192 * 1024 * 1024; | 6140 static const int kExternalAllocationLimit = 192 * 1024 * 1024; |
| 6097 | 6141 |
| 6098 static const int kNodeClassIdOffset = 1 * kApiPointerSize; | 6142 static const int kNodeClassIdOffset = 1 * kApiPointerSize; |
| 6099 static const int kNodeFlagsOffset = 1 * kApiPointerSize + 3; | 6143 static const int kNodeFlagsOffset = 1 * kApiPointerSize + 3; |
| 6100 static const int kNodeStateMask = 0xf; | 6144 static const int kNodeStateMask = 0x7; |
| 6101 static const int kNodeStateIsWeakValue = 2; | 6145 static const int kNodeStateIsWeakValue = 2; |
| 6102 static const int kNodeStateIsPendingValue = 3; | 6146 static const int kNodeStateIsPendingValue = 3; |
| 6103 static const int kNodeStateIsNearDeathValue = 4; | 6147 static const int kNodeStateIsNearDeathValue = 4; |
| 6104 static const int kNodeIsIndependentShift = 4; | 6148 static const int kNodeIsIndependentShift = 3; |
| 6105 static const int kNodeIsPartiallyDependentShift = 5; | 6149 static const int kNodeIsPartiallyDependentShift = 4; |
| 6106 | 6150 |
| 6107 static const int kJSObjectType = 0xbd; | 6151 static const int kJSObjectType = 0xbd; |
| 6108 static const int kFirstNonstringType = 0x80; | 6152 static const int kFirstNonstringType = 0x80; |
| 6109 static const int kOddballType = 0x83; | 6153 static const int kOddballType = 0x83; |
| 6110 static const int kForeignType = 0x88; | 6154 static const int kForeignType = 0x88; |
| 6111 | 6155 |
| 6112 static const int kUndefinedOddballKind = 5; | 6156 static const int kUndefinedOddballKind = 5; |
| 6113 static const int kNullOddballKind = 3; | 6157 static const int kNullOddballKind = 3; |
| 6114 | 6158 |
| 6115 static const uint32_t kNumIsolateDataSlots = 4; | 6159 static const uint32_t kNumIsolateDataSlots = 4; |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6353 | 6397 |
| 6354 | 6398 |
| 6355 template <class T> | 6399 template <class T> |
| 6356 template <typename S, typename P> | 6400 template <typename S, typename P> |
| 6357 void PersistentBase<T>::SetWeak( | 6401 void PersistentBase<T>::SetWeak( |
| 6358 P* parameter, | 6402 P* parameter, |
| 6359 typename WeakCallbackData<S, P>::Callback callback) { | 6403 typename WeakCallbackData<S, P>::Callback callback) { |
| 6360 TYPE_CHECK(S, T); | 6404 TYPE_CHECK(S, T); |
| 6361 typedef typename WeakCallbackData<Value, void>::Callback Callback; | 6405 typedef typename WeakCallbackData<Value, void>::Callback Callback; |
| 6362 V8::MakeWeak(reinterpret_cast<internal::Object**>(this->val_), parameter, | 6406 V8::MakeWeak(reinterpret_cast<internal::Object**>(this->val_), parameter, |
| 6363 reinterpret_cast<Callback>(callback), V8::NonphantomHandle); | 6407 reinterpret_cast<Callback>(callback)); |
| 6364 } | 6408 } |
| 6365 | 6409 |
| 6366 | 6410 |
| 6367 template <class T> | 6411 template <class T> |
| 6368 template <typename P> | 6412 template <typename P> |
| 6369 void PersistentBase<T>::SetWeak( | 6413 void PersistentBase<T>::SetWeak( |
| 6370 P* parameter, | 6414 P* parameter, |
| 6371 typename WeakCallbackData<T, P>::Callback callback) { | 6415 typename WeakCallbackData<T, P>::Callback callback) { |
| 6372 SetWeak<T, P>(parameter, callback); | 6416 SetWeak<T, P>(parameter, callback); |
| 6373 } | 6417 } |
| 6374 | 6418 |
| 6375 | 6419 |
| 6376 template <class T> | 6420 template <class T> |
| 6377 template <typename S, typename P> | |
| 6378 void PersistentBase<T>::SetPhantom( | |
| 6379 P* parameter, typename WeakCallbackData<S, P>::Callback callback) { | |
| 6380 TYPE_CHECK(S, T); | |
| 6381 typedef typename WeakCallbackData<Value, void>::Callback Callback; | |
| 6382 V8::MakeWeak(reinterpret_cast<internal::Object**>(this->val_), parameter, | |
| 6383 reinterpret_cast<Callback>(callback), V8::PhantomHandle); | |
| 6384 } | |
| 6385 | |
| 6386 | |
| 6387 template <class T> | |
| 6388 template <typename P> | 6421 template <typename P> |
| 6389 void PersistentBase<T>::SetPhantom( | 6422 void PersistentBase<T>::SetPhantom( |
| 6390 P* parameter, typename WeakCallbackData<T, P>::Callback callback) { | 6423 P* parameter, typename PhantomCallbackData<P>::Callback callback) { |
| 6391 SetPhantom<T, P>(parameter, callback); | 6424 typedef typename PhantomCallbackData<void>::Callback Callback; |
| 6425 V8::MakePhantom(reinterpret_cast<internal::Object**>(this->val_), parameter, | |
| 6426 reinterpret_cast<Callback>(callback), | |
| 6427 Object::kNoInternalFieldIndex, Object::kNoInternalFieldIndex); | |
| 6392 } | 6428 } |
| 6393 | 6429 |
| 6394 | 6430 |
| 6431 template <class T> | |
| 6432 void PersistentBase<T>::SetPhantom( | |
| 6433 typename PhantomCallbackData<void>::Callback callback, | |
| 6434 int internal_field_index1, int internal_field_index2) { | |
| 6435 typedef typename PhantomCallbackData<void>::Callback Callback; | |
| 6436 V8::MakePhantom(reinterpret_cast<internal::Object**>(this->val_), 0, | |
| 6437 reinterpret_cast<Callback>(callback), internal_field_index1, | |
| 6438 internal_field_index2); | |
| 6439 } | |
| 6440 | |
| 6441 | |
| 6395 template <class T> | 6442 template <class T> |
| 6396 template <typename P> | 6443 template <typename P> |
| 6397 P* PersistentBase<T>::ClearWeak() { | 6444 P* PersistentBase<T>::ClearWeak() { |
| 6398 return reinterpret_cast<P*>( | 6445 return reinterpret_cast<P*>( |
| 6399 V8::ClearWeak(reinterpret_cast<internal::Object**>(this->val_))); | 6446 V8::ClearWeak(reinterpret_cast<internal::Object**>(this->val_))); |
| 6400 } | 6447 } |
| 6401 | 6448 |
| 6402 | 6449 |
| 6403 template <class T> | 6450 template <class T> |
| 6404 void PersistentBase<T>::MarkIndependent() { | 6451 void PersistentBase<T>::MarkIndependent() { |
| (...skipping 973 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 7378 */ | 7425 */ |
| 7379 | 7426 |
| 7380 | 7427 |
| 7381 } // namespace v8 | 7428 } // namespace v8 |
| 7382 | 7429 |
| 7383 | 7430 |
| 7384 #undef TYPE_CHECK | 7431 #undef TYPE_CHECK |
| 7385 | 7432 |
| 7386 | 7433 |
| 7387 #endif // V8_H_ | 7434 #endif // V8_H_ |
| OLD | NEW |