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 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 class Value; | 104 class Value; |
105 template <class T> class Handle; | 105 template <class T> class Handle; |
106 template <class T> class Local; | 106 template <class T> class Local; |
107 template <class T> class Eternal; | 107 template <class T> class Eternal; |
108 template<class T> class NonCopyablePersistentTraits; | 108 template<class T> class NonCopyablePersistentTraits; |
109 template<class T> class PersistentBase; | 109 template<class T> class PersistentBase; |
110 template<class T, | 110 template<class T, |
111 class M = NonCopyablePersistentTraits<T> > class Persistent; | 111 class M = NonCopyablePersistentTraits<T> > class Persistent; |
112 template<class T> class UniquePersistent; | 112 template<class T> class UniquePersistent; |
113 template<class K, class V, class T> class PersistentValueMap; | 113 template<class K, class V, class T> class PersistentValueMap; |
| 114 template <class K, class V, class T> |
| 115 class PersistentValueMapBase; |
| 116 template <class K, class V, class T> |
| 117 class PhantomPersistentValueMap; |
114 template<class V, class T> class PersistentValueVector; | 118 template<class V, class T> class PersistentValueVector; |
115 template<class T, class P> class WeakCallbackObject; | 119 template<class T, class P> class WeakCallbackObject; |
116 class FunctionTemplate; | 120 class FunctionTemplate; |
117 class ObjectTemplate; | 121 class ObjectTemplate; |
118 class Data; | 122 class Data; |
119 template<typename T> class FunctionCallbackInfo; | 123 template<typename T> class FunctionCallbackInfo; |
120 template<typename T> class PropertyCallbackInfo; | 124 template<typename T> class PropertyCallbackInfo; |
121 class StackTrace; | 125 class StackTrace; |
122 class StackFrame; | 126 class StackFrame; |
123 class Isolate; | 127 class Isolate; |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
394 template<class F> friend class Handle; | 398 template<class F> friend class Handle; |
395 template<class F> friend class Local; | 399 template<class F> friend class Local; |
396 template<class F> friend class FunctionCallbackInfo; | 400 template<class F> friend class FunctionCallbackInfo; |
397 template<class F> friend class PropertyCallbackInfo; | 401 template<class F> friend class PropertyCallbackInfo; |
398 friend class String; | 402 friend class String; |
399 friend class Object; | 403 friend class Object; |
400 friend class Context; | 404 friend class Context; |
401 template<class F> friend class internal::CustomArguments; | 405 template<class F> friend class internal::CustomArguments; |
402 friend class HandleScope; | 406 friend class HandleScope; |
403 friend class EscapableHandleScope; | 407 friend class EscapableHandleScope; |
404 template<class F1, class F2, class F3> friend class PersistentValueMap; | 408 template <class F1, class F2, class F3> |
| 409 friend class PersistentValueMapBase; |
405 template<class F1, class F2> friend class PersistentValueVector; | 410 template<class F1, class F2> friend class PersistentValueVector; |
406 | 411 |
407 template <class S> V8_INLINE Local(S* that) : Handle<T>(that) { } | 412 template <class S> V8_INLINE Local(S* that) : Handle<T>(that) { } |
408 V8_INLINE static Local<T> New(Isolate* isolate, T* that); | 413 V8_INLINE static Local<T> New(Isolate* isolate, T* that); |
409 }; | 414 }; |
410 | 415 |
411 | 416 |
412 // Eternal handles are set-once handles that live for the life of the isolate. | 417 // Eternal handles are set-once handles that live for the life of the isolate. |
413 template <class T> class Eternal { | 418 template <class T> class Eternal { |
414 public: | 419 public: |
415 V8_INLINE Eternal() : index_(kInitialValue) { } | 420 V8_INLINE Eternal() : index_(kInitialValue) { } |
416 template<class S> | 421 template<class S> |
417 V8_INLINE Eternal(Isolate* isolate, Local<S> handle) : index_(kInitialValue) { | 422 V8_INLINE Eternal(Isolate* isolate, Local<S> handle) : index_(kInitialValue) { |
418 Set(isolate, handle); | 423 Set(isolate, handle); |
419 } | 424 } |
420 // Can only be safely called if already set. | 425 // Can only be safely called if already set. |
421 V8_INLINE Local<T> Get(Isolate* isolate); | 426 V8_INLINE Local<T> Get(Isolate* isolate); |
422 V8_INLINE bool IsEmpty() { return index_ == kInitialValue; } | 427 V8_INLINE bool IsEmpty() { return index_ == kInitialValue; } |
423 template<class S> V8_INLINE void Set(Isolate* isolate, Local<S> handle); | 428 template<class S> V8_INLINE void Set(Isolate* isolate, Local<S> handle); |
424 | 429 |
425 private: | 430 private: |
426 static const int kInitialValue = -1; | 431 static const int kInitialValue = -1; |
427 int index_; | 432 int index_; |
428 }; | 433 }; |
429 | 434 |
430 | 435 |
431 template <typename T, typename U = void, typename V = void> | 436 template <typename T> |
432 class PhantomCallbackData : public internal::CallbackData<T> { | 437 class PhantomCallbackData : public internal::CallbackData<T> { |
433 public: | 438 public: |
434 typedef void (*Callback)(const PhantomCallbackData<T, U, V>& data); | 439 typedef void (*Callback)(const PhantomCallbackData<T>& data); |
435 | 440 |
436 V8_INLINE U* GetInternalField1() const { return internal_field1_; } | 441 V8_INLINE void* GetInternalField1() const { return internal_field1_; } |
437 V8_INLINE V* GetInternalField2() const { return internal_field2_; } | 442 V8_INLINE void* GetInternalField2() const { return internal_field2_; } |
438 | 443 |
439 PhantomCallbackData(Isolate* isolate, T* parameter, U* internal_field1, | 444 PhantomCallbackData(Isolate* isolate, T* parameter, void* internal_field1, |
440 V* internal_field2) | 445 void* internal_field2) |
441 : internal::CallbackData<T>(isolate, parameter), | 446 : internal::CallbackData<T>(isolate, parameter), |
442 internal_field1_(internal_field1), | 447 internal_field1_(internal_field1), |
443 internal_field2_(internal_field2) {} | 448 internal_field2_(internal_field2) {} |
444 | 449 |
445 private: | 450 private: |
446 U* internal_field1_; | 451 void* internal_field1_; |
447 V* internal_field2_; | 452 void* internal_field2_; |
448 }; | 453 }; |
449 | 454 |
450 | 455 |
451 template <class T, class P> | 456 template <class T, class P> |
452 class WeakCallbackData : public internal::CallbackData<P> { | 457 class WeakCallbackData : public internal::CallbackData<P> { |
453 public: | 458 public: |
454 typedef void (*Callback)(const WeakCallbackData<T, P>& data); | 459 typedef void (*Callback)(const WeakCallbackData<T, P>& data); |
455 | 460 |
456 V8_INLINE Local<T> GetValue() const { return handle_; } | 461 V8_INLINE Local<T> GetValue() const { return handle_; } |
457 | 462 |
458 private: | 463 private: |
459 friend class internal::GlobalHandles; | 464 friend class internal::GlobalHandles; |
460 WeakCallbackData(Isolate* isolate, P* parameter, Local<T> handle) | 465 WeakCallbackData(Isolate* isolate, P* parameter, Local<T> handle) |
461 : internal::CallbackData<P>(isolate, parameter), handle_(handle) {} | 466 : internal::CallbackData<P>(isolate, parameter), handle_(handle) {} |
462 Local<T> handle_; | 467 Local<T> handle_; |
463 }; | 468 }; |
464 | 469 |
465 | 470 |
| 471 static const int kNoInternalFieldIndex = -1; |
| 472 |
| 473 |
466 /** | 474 /** |
467 * An object reference that is independent of any handle scope. Where | 475 * An object reference that is independent of any handle scope. Where |
468 * a Local handle only lives as long as the HandleScope in which it was | 476 * a Local handle only lives as long as the HandleScope in which it was |
469 * allocated, a PersistentBase handle remains valid until it is explicitly | 477 * allocated, a PersistentBase handle remains valid until it is explicitly |
470 * disposed. | 478 * disposed. |
471 * | 479 * |
472 * A persistent handle contains a reference to a storage cell within | 480 * A persistent handle contains a reference to a storage cell within |
473 * the v8 engine which holds an object value and which is updated by | 481 * the v8 engine which holds an object value and which is updated by |
474 * the garbage collector whenever the object is moved. A new storage | 482 * the garbage collector whenever the object is moved. A new storage |
475 * cell can be created using the constructor or PersistentBase::Reset and | 483 * cell can be created using the constructor or PersistentBase::Reset and |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
543 P* parameter, | 551 P* parameter, |
544 typename WeakCallbackData<S, P>::Callback callback); | 552 typename WeakCallbackData<S, P>::Callback callback); |
545 | 553 |
546 // Phantom persistents work like weak persistents, except that the pointer to | 554 // Phantom persistents work like weak persistents, except that the pointer to |
547 // the object being collected is not available in the finalization callback. | 555 // the object being collected is not available in the finalization callback. |
548 // This enables the garbage collector to collect the object and any objects | 556 // This enables the garbage collector to collect the object and any objects |
549 // it references transitively in one GC cycle. At the moment you can either | 557 // it references transitively in one GC cycle. At the moment you can either |
550 // specify a parameter for the callback or the location of two internal | 558 // specify a parameter for the callback or the location of two internal |
551 // fields in the dying object. | 559 // fields in the dying object. |
552 template <typename P> | 560 template <typename P> |
553 V8_INLINE void SetPhantom( | 561 V8_INLINE void SetPhantom(P* parameter, |
554 P* parameter, | 562 typename PhantomCallbackData<P>::Callback callback, |
555 typename PhantomCallbackData<P, void, void>::Callback callback); | 563 int internal_field_index1 = kNoInternalFieldIndex, |
556 template <typename P, typename Q> | 564 int internal_field_index2 = kNoInternalFieldIndex); |
557 V8_INLINE void SetPhantom( | |
558 P* parameter, int internal_field_index1, | |
559 typename PhantomCallbackData<P, Q, void>::Callback callback); | |
560 template <typename P, typename Q, typename R> | |
561 V8_INLINE void SetPhantom( | |
562 P* parameter, int internal_field_index1, int internal_field_index2, | |
563 typename PhantomCallbackData<P, Q, R>::Callback callback); | |
564 | 565 |
565 template<typename P> | 566 template<typename P> |
566 V8_INLINE P* ClearWeak(); | 567 V8_INLINE P* ClearWeak(); |
567 | 568 |
568 // TODO(dcarney): remove this. | 569 // TODO(dcarney): remove this. |
569 V8_INLINE void ClearWeak() { ClearWeak<void>(); } | 570 V8_INLINE void ClearWeak() { ClearWeak<void>(); } |
570 | 571 |
571 /** | 572 /** |
572 * Marks the reference to this object independent. Garbage collector is free | 573 * Marks the reference to this object independent. Garbage collector is free |
573 * to ignore any object groups containing this object. Weak callback for an | 574 * to ignore any object groups containing this object. Weak callback for an |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
608 | 609 |
609 private: | 610 private: |
610 friend class Isolate; | 611 friend class Isolate; |
611 friend class Utils; | 612 friend class Utils; |
612 template<class F> friend class Handle; | 613 template<class F> friend class Handle; |
613 template<class F> friend class Local; | 614 template<class F> friend class Local; |
614 template<class F1, class F2> friend class Persistent; | 615 template<class F1, class F2> friend class Persistent; |
615 template<class F> friend class UniquePersistent; | 616 template<class F> friend class UniquePersistent; |
616 template<class F> friend class PersistentBase; | 617 template<class F> friend class PersistentBase; |
617 template<class F> friend class ReturnValue; | 618 template<class F> friend class ReturnValue; |
618 template<class F1, class F2, class F3> friend class PersistentValueMap; | 619 template <class F1, class F2, class F3> |
| 620 friend class PersistentValueMapBase; |
619 template<class F1, class F2> friend class PersistentValueVector; | 621 template<class F1, class F2> friend class PersistentValueVector; |
620 friend class Object; | 622 friend class Object; |
621 | 623 |
622 explicit V8_INLINE PersistentBase(T* val) : val_(val) {} | 624 explicit V8_INLINE PersistentBase(T* val) : val_(val) {} |
623 PersistentBase(PersistentBase& other); // NOLINT | 625 PersistentBase(PersistentBase& other); // NOLINT |
624 void operator=(PersistentBase&); | 626 void operator=(PersistentBase&); |
625 V8_INLINE static T* New(Isolate* isolate, T* that); | 627 V8_INLINE static T* New(Isolate* isolate, T* that); |
626 | 628 |
627 T* val_; | 629 T* val_; |
628 }; | 630 }; |
(...skipping 1880 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2509 Local<String> ObjectProtoToString(); | 2511 Local<String> ObjectProtoToString(); |
2510 | 2512 |
2511 /** | 2513 /** |
2512 * Returns the name of the function invoked as a constructor for this object. | 2514 * Returns the name of the function invoked as a constructor for this object. |
2513 */ | 2515 */ |
2514 Local<String> GetConstructorName(); | 2516 Local<String> GetConstructorName(); |
2515 | 2517 |
2516 /** Gets the number of internal fields for this Object. */ | 2518 /** Gets the number of internal fields for this Object. */ |
2517 int InternalFieldCount(); | 2519 int InternalFieldCount(); |
2518 | 2520 |
2519 static const int kNoInternalFieldIndex = -1; | |
2520 | |
2521 /** Same as above, but works for Persistents */ | 2521 /** Same as above, but works for Persistents */ |
2522 V8_INLINE static int InternalFieldCount( | 2522 V8_INLINE static int InternalFieldCount( |
2523 const PersistentBase<Object>& object) { | 2523 const PersistentBase<Object>& object) { |
2524 return object.val_->InternalFieldCount(); | 2524 return object.val_->InternalFieldCount(); |
2525 } | 2525 } |
2526 | 2526 |
2527 /** Gets the value from an internal field. */ | 2527 /** Gets the value from an internal field. */ |
2528 V8_INLINE Local<Value> GetInternalField(int index); | 2528 V8_INLINE Local<Value> GetInternalField(int index); |
2529 | 2529 |
2530 /** Sets the value in an internal field. */ | 2530 /** Sets the value in an internal field. */ |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2727 V8_INLINE Isolate* GetIsolate(); | 2727 V8_INLINE Isolate* GetIsolate(); |
2728 | 2728 |
2729 // Pointer setter: Uncompilable to prevent inadvertent misuse. | 2729 // Pointer setter: Uncompilable to prevent inadvertent misuse. |
2730 template <typename S> | 2730 template <typename S> |
2731 V8_INLINE void Set(S* whatever); | 2731 V8_INLINE void Set(S* whatever); |
2732 | 2732 |
2733 private: | 2733 private: |
2734 template<class F> friend class ReturnValue; | 2734 template<class F> friend class ReturnValue; |
2735 template<class F> friend class FunctionCallbackInfo; | 2735 template<class F> friend class FunctionCallbackInfo; |
2736 template<class F> friend class PropertyCallbackInfo; | 2736 template<class F> friend class PropertyCallbackInfo; |
2737 template<class F, class G, class H> friend class PersistentValueMap; | 2737 template <class F, class G, class H> |
| 2738 friend class PersistentValueMapBase; |
2738 V8_INLINE void SetInternal(internal::Object* value) { *value_ = value; } | 2739 V8_INLINE void SetInternal(internal::Object* value) { *value_ = value; } |
2739 V8_INLINE internal::Object* GetDefaultValue(); | 2740 V8_INLINE internal::Object* GetDefaultValue(); |
2740 V8_INLINE explicit ReturnValue(internal::Object** slot); | 2741 V8_INLINE explicit ReturnValue(internal::Object** slot); |
2741 internal::Object** value_; | 2742 internal::Object** value_; |
2742 }; | 2743 }; |
2743 | 2744 |
2744 | 2745 |
2745 /** | 2746 /** |
2746 * The argument information given to function call callbacks. This | 2747 * The argument information given to function call callbacks. This |
2747 * class provides access to information about the context of the call, | 2748 * class provides access to information about the context of the call, |
(...skipping 2473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5221 /** | 5222 /** |
5222 * Iterates through all the persistent handles in the current isolate's heap | 5223 * Iterates through all the persistent handles in the current isolate's heap |
5223 * that have class_ids and are candidates to be marked as partially dependent | 5224 * that have class_ids and are candidates to be marked as partially dependent |
5224 * handles. This will visit handles to young objects created since the last | 5225 * handles. This will visit handles to young objects created since the last |
5225 * garbage collection but is free to visit an arbitrary superset of these | 5226 * garbage collection but is free to visit an arbitrary superset of these |
5226 * objects. | 5227 * objects. |
5227 */ | 5228 */ |
5228 void VisitHandlesForPartialDependence(PersistentHandleVisitor* visitor); | 5229 void VisitHandlesForPartialDependence(PersistentHandleVisitor* visitor); |
5229 | 5230 |
5230 private: | 5231 private: |
5231 template<class K, class V, class Traits> friend class PersistentValueMap; | 5232 template <class K, class V, class Traits> |
| 5233 friend class PersistentValueMapBase; |
5232 | 5234 |
5233 Isolate(); | 5235 Isolate(); |
5234 Isolate(const Isolate&); | 5236 Isolate(const Isolate&); |
5235 ~Isolate(); | 5237 ~Isolate(); |
5236 Isolate& operator=(const Isolate&); | 5238 Isolate& operator=(const Isolate&); |
5237 void* operator new(size_t size); | 5239 void* operator new(size_t size); |
5238 void operator delete(void*, size_t); | 5240 void operator delete(void*, size_t); |
5239 | 5241 |
5240 void SetObjectGroupId(internal::Object** object, UniqueId id); | 5242 void SetObjectGroupId(internal::Object** object, UniqueId id); |
5241 void SetReferenceFromGroup(UniqueId id, internal::Object** object); | 5243 void SetReferenceFromGroup(UniqueId id, internal::Object** object); |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5573 | 5575 |
5574 enum WeakHandleType { PhantomHandle, NonphantomHandle }; | 5576 enum WeakHandleType { PhantomHandle, NonphantomHandle }; |
5575 | 5577 |
5576 static internal::Object** GlobalizeReference(internal::Isolate* isolate, | 5578 static internal::Object** GlobalizeReference(internal::Isolate* isolate, |
5577 internal::Object** handle); | 5579 internal::Object** handle); |
5578 static internal::Object** CopyPersistent(internal::Object** handle); | 5580 static internal::Object** CopyPersistent(internal::Object** handle); |
5579 static void DisposeGlobal(internal::Object** global_handle); | 5581 static void DisposeGlobal(internal::Object** global_handle); |
5580 typedef WeakCallbackData<Value, void>::Callback WeakCallback; | 5582 typedef WeakCallbackData<Value, void>::Callback WeakCallback; |
5581 static void MakeWeak(internal::Object** global_handle, void* data, | 5583 static void MakeWeak(internal::Object** global_handle, void* data, |
5582 WeakCallback weak_callback); | 5584 WeakCallback weak_callback); |
5583 static void MakePhantom( | 5585 static void MakePhantom(internal::Object** global_handle, void* data, |
5584 internal::Object** global_handle, void* data, | 5586 // Must be 0 or kNoInternalFieldIndex. |
5585 // Must be 0 or kNoInternalFieldIndex. | 5587 int internal_field_index1, |
5586 int internal_field_index1, | 5588 // Must be 1 or kNoInternalFieldIndex. |
5587 // Must be 1 or kNoInternalFieldIndex. | 5589 int internal_field_index2, |
5588 int internal_field_index2, | 5590 PhantomCallbackData<void>::Callback weak_callback); |
5589 PhantomCallbackData<void, void, void>::Callback weak_callback); | |
5590 static void* ClearWeak(internal::Object** global_handle); | 5591 static void* ClearWeak(internal::Object** global_handle); |
5591 static void Eternalize(Isolate* isolate, | 5592 static void Eternalize(Isolate* isolate, |
5592 Value* handle, | 5593 Value* handle, |
5593 int* index); | 5594 int* index); |
5594 static Local<Value> GetEternal(Isolate* isolate, int index); | 5595 static Local<Value> GetEternal(Isolate* isolate, int index); |
5595 | 5596 |
5596 template <class T> friend class Handle; | 5597 template <class T> friend class Handle; |
5597 template <class T> friend class Local; | 5598 template <class T> friend class Local; |
5598 template <class T> friend class Eternal; | 5599 template <class T> friend class Eternal; |
5599 template <class T> friend class PersistentBase; | 5600 template <class T> friend class PersistentBase; |
(...skipping 867 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6467 void PersistentBase<T>::SetWeak( | 6468 void PersistentBase<T>::SetWeak( |
6468 P* parameter, | 6469 P* parameter, |
6469 typename WeakCallbackData<T, P>::Callback callback) { | 6470 typename WeakCallbackData<T, P>::Callback callback) { |
6470 SetWeak<T, P>(parameter, callback); | 6471 SetWeak<T, P>(parameter, callback); |
6471 } | 6472 } |
6472 | 6473 |
6473 | 6474 |
6474 template <class T> | 6475 template <class T> |
6475 template <typename P> | 6476 template <typename P> |
6476 void PersistentBase<T>::SetPhantom( | 6477 void PersistentBase<T>::SetPhantom( |
6477 P* parameter, | 6478 P* parameter, typename PhantomCallbackData<P>::Callback callback, |
6478 typename PhantomCallbackData<P, void, void>::Callback callback) { | 6479 int internal_field_index1, int internal_field_index2) { |
6479 typedef typename PhantomCallbackData<void, void, void>::Callback Callback; | 6480 typedef typename PhantomCallbackData<void>::Callback Callback; |
6480 V8::MakePhantom(reinterpret_cast<internal::Object**>(this->val_), parameter, | |
6481 Object::kNoInternalFieldIndex, Object::kNoInternalFieldIndex, | |
6482 reinterpret_cast<Callback>(callback)); | |
6483 } | |
6484 | |
6485 | |
6486 template <class T> | |
6487 template <typename P, typename Q> | |
6488 void PersistentBase<T>::SetPhantom( | |
6489 P* parameter, int internal_field_index1, | |
6490 typename PhantomCallbackData<P, Q, void>::Callback callback) { | |
6491 typedef typename PhantomCallbackData<void, void, void>::Callback Callback; | |
6492 V8::MakePhantom(reinterpret_cast<internal::Object**>(this->val_), parameter, | |
6493 internal_field_index1, Object::kNoInternalFieldIndex, | |
6494 reinterpret_cast<Callback>(callback)); | |
6495 } | |
6496 | |
6497 | |
6498 template <class T> | |
6499 template <typename P, typename Q, typename R> | |
6500 void PersistentBase<T>::SetPhantom( | |
6501 P* parameter, int internal_field_index1, int internal_field_index2, | |
6502 typename PhantomCallbackData<P, Q, R>::Callback callback) { | |
6503 typedef typename PhantomCallbackData<void, void, void>::Callback Callback; | |
6504 V8::MakePhantom(reinterpret_cast<internal::Object**>(this->val_), parameter, | 6481 V8::MakePhantom(reinterpret_cast<internal::Object**>(this->val_), parameter, |
6505 internal_field_index1, internal_field_index2, | 6482 internal_field_index1, internal_field_index2, |
6506 reinterpret_cast<Callback>(callback)); | 6483 reinterpret_cast<Callback>(callback)); |
6507 } | 6484 } |
6508 | 6485 |
6509 | 6486 |
6510 template <class T> | 6487 template <class T> |
6511 template <typename P> | 6488 template <typename P> |
6512 P* PersistentBase<T>::ClearWeak() { | 6489 P* PersistentBase<T>::ClearWeak() { |
6513 return reinterpret_cast<P*>( | 6490 return reinterpret_cast<P*>( |
(...skipping 979 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7493 */ | 7470 */ |
7494 | 7471 |
7495 | 7472 |
7496 } // namespace v8 | 7473 } // namespace v8 |
7497 | 7474 |
7498 | 7475 |
7499 #undef TYPE_CHECK | 7476 #undef TYPE_CHECK |
7500 | 7477 |
7501 | 7478 |
7502 #endif // V8_H_ | 7479 #endif // V8_H_ |
OLD | NEW |