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

Side by Side Diff: include/v8.h

Issue 1953263002: [API] Remove deprecated WeakCallbackData and related functions. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 7 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-util.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** \mainpage V8 API Reference Guide 5 /** \mainpage V8 API Reference Guide
6 * 6 *
7 * V8 is Google's open source JavaScript engine. 7 * V8 is Google's open source JavaScript engine.
8 * 8 *
9 * This set of documents provides reference material generated from the 9 * This set of documents provides reference material generated from the
10 * V8 header file, include/v8.h. 10 * V8 header file, include/v8.h.
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 void SetSecondPassCallback(Callback callback) const { *callback_ = callback; } 450 void SetSecondPassCallback(Callback callback) const { *callback_ = callback; }
451 451
452 private: 452 private:
453 Isolate* isolate_; 453 Isolate* isolate_;
454 T* parameter_; 454 T* parameter_;
455 Callback* callback_; 455 Callback* callback_;
456 void* internal_fields_[kInternalFieldsInWeakCallback]; 456 void* internal_fields_[kInternalFieldsInWeakCallback];
457 }; 457 };
458 458
459 459
460 template <class T, class P>
461 class WeakCallbackData {
462 public:
463 typedef void (*Callback)(const WeakCallbackData<T, P>& data);
464
465 WeakCallbackData(Isolate* isolate, P* parameter, Local<T> handle)
466 : isolate_(isolate), parameter_(parameter), handle_(handle) {}
467
468 V8_INLINE Isolate* GetIsolate() const { return isolate_; }
469 V8_INLINE P* GetParameter() const { return parameter_; }
470 V8_INLINE Local<T> GetValue() const { return handle_; }
471
472 private:
473 Isolate* isolate_;
474 P* parameter_;
475 Local<T> handle_;
476 };
477
478
479 // TODO(dcarney): delete this with WeakCallbackData
480 template <class T>
481 using PhantomCallbackData = WeakCallbackInfo<T>;
482
483 // kParameter will pass a void* parameter back to the callback, kInternalFields 460 // kParameter will pass a void* parameter back to the callback, kInternalFields
484 // will pass the first two internal fields back to the callback, kFinalizer 461 // will pass the first two internal fields back to the callback, kFinalizer
485 // will pass a void* parameter back, but is invoked before the object is 462 // will pass a void* parameter back, but is invoked before the object is
486 // actually collected, so it can be resurrected. In the last case, it is not 463 // actually collected, so it can be resurrected. In the last case, it is not
487 // possible to request a second pass callback. 464 // possible to request a second pass callback.
488 enum class WeakCallbackType { kParameter, kInternalFields, kFinalizer }; 465 enum class WeakCallbackType { kParameter, kInternalFields, kFinalizer };
489 466
490 /** 467 /**
491 * An object reference that is independent of any handle scope. Where 468 * An object reference that is independent of any handle scope. Where
492 * a Local handle only lives as long as the HandleScope in which it was 469 * a Local handle only lives as long as the HandleScope in which it was
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 } 534 }
558 535
559 /** 536 /**
560 * Install a finalization callback on this object. 537 * Install a finalization callback on this object.
561 * NOTE: There is no guarantee as to *when* or even *if* the callback is 538 * NOTE: There is no guarantee as to *when* or even *if* the callback is
562 * invoked. The invocation is performed solely on a best effort basis. 539 * invoked. The invocation is performed solely on a best effort basis.
563 * As always, GC-based finalization should *not* be relied upon for any 540 * As always, GC-based finalization should *not* be relied upon for any
564 * critical form of resource management! 541 * critical form of resource management!
565 */ 542 */
566 template <typename P> 543 template <typename P>
567 V8_INLINE V8_DEPRECATED(
568 "use WeakCallbackInfo version",
569 void SetWeak(P* parameter,
570 typename WeakCallbackData<T, P>::Callback callback));
571
572 template <typename S, typename P>
573 V8_INLINE V8_DEPRECATED(
574 "use WeakCallbackInfo version",
575 void SetWeak(P* parameter,
576 typename WeakCallbackData<S, P>::Callback callback));
577
578 // Phantom persistents work like weak persistents, except that the pointer to
579 // the object being collected is not available in the finalization callback.
580 // This enables the garbage collector to collect the object and any objects
581 // it references transitively in one GC cycle. At the moment you can either
582 // specify a parameter for the callback or the location of two internal
583 // fields in the dying object.
584 template <typename P>
585 V8_INLINE V8_DEPRECATED(
586 "use SetWeak",
587 void SetPhantom(P* parameter,
588 typename WeakCallbackInfo<P>::Callback callback,
589 int internal_field_index1 = -1,
590 int internal_field_index2 = -1));
591
592 template <typename P>
593 V8_INLINE void SetWeak(P* parameter, 544 V8_INLINE void SetWeak(P* parameter,
594 typename WeakCallbackInfo<P>::Callback callback, 545 typename WeakCallbackInfo<P>::Callback callback,
595 WeakCallbackType type); 546 WeakCallbackType type);
596 547
597 template<typename P> 548 template<typename P>
598 V8_INLINE P* ClearWeak(); 549 V8_INLINE P* ClearWeak();
599 550
600 // TODO(dcarney): remove this. 551 // TODO(dcarney): remove this.
601 V8_INLINE void ClearWeak() { ClearWeak<void>(); } 552 V8_INLINE void ClearWeak() { ClearWeak<void>(); }
602 553
(...skipping 6067 matching lines...) Expand 10 before | Expand all | Expand 10 after
6670 */ 6621 */
6671 static void ShutdownPlatform(); 6622 static void ShutdownPlatform();
6672 6623
6673 private: 6624 private:
6674 V8(); 6625 V8();
6675 6626
6676 static internal::Object** GlobalizeReference(internal::Isolate* isolate, 6627 static internal::Object** GlobalizeReference(internal::Isolate* isolate,
6677 internal::Object** handle); 6628 internal::Object** handle);
6678 static internal::Object** CopyPersistent(internal::Object** handle); 6629 static internal::Object** CopyPersistent(internal::Object** handle);
6679 static void DisposeGlobal(internal::Object** global_handle); 6630 static void DisposeGlobal(internal::Object** global_handle);
6680 typedef WeakCallbackData<Value, void>::Callback WeakCallback;
6681 static void MakeWeak(internal::Object** global_handle, void* data,
6682 WeakCallback weak_callback);
6683 static void MakeWeak(internal::Object** global_handle, void* data, 6631 static void MakeWeak(internal::Object** global_handle, void* data,
6684 WeakCallbackInfo<void>::Callback weak_callback, 6632 WeakCallbackInfo<void>::Callback weak_callback,
6685 WeakCallbackType type); 6633 WeakCallbackType type);
6686 static void MakeWeak(internal::Object** global_handle, void* data, 6634 static void MakeWeak(internal::Object** global_handle, void* data,
6687 // Must be 0 or -1. 6635 // Must be 0 or -1.
6688 int internal_field_index1, 6636 int internal_field_index1,
6689 // Must be 1 or -1. 6637 // Must be 1 or -1.
6690 int internal_field_index2, 6638 int internal_field_index2,
6691 WeakCallbackInfo<void>::Callback weak_callback); 6639 WeakCallbackInfo<void>::Callback weak_callback);
6692 static void* ClearWeak(internal::Object** global_handle); 6640 static void* ClearWeak(internal::Object** global_handle);
(...skipping 952 matching lines...) Expand 10 before | Expand all | Expand 10 after
7645 void PersistentBase<T>::Reset(Isolate* isolate, 7593 void PersistentBase<T>::Reset(Isolate* isolate,
7646 const PersistentBase<S>& other) { 7594 const PersistentBase<S>& other) {
7647 TYPE_CHECK(T, S); 7595 TYPE_CHECK(T, S);
7648 Reset(); 7596 Reset();
7649 if (other.IsEmpty()) return; 7597 if (other.IsEmpty()) return;
7650 this->val_ = New(isolate, other.val_); 7598 this->val_ = New(isolate, other.val_);
7651 } 7599 }
7652 7600
7653 7601
7654 template <class T> 7602 template <class T>
7655 template <typename S, typename P>
7656 void PersistentBase<T>::SetWeak(
7657 P* parameter,
7658 typename WeakCallbackData<S, P>::Callback callback) {
7659 TYPE_CHECK(S, T);
7660 typedef typename WeakCallbackData<Value, void>::Callback Callback;
7661 V8::MakeWeak(reinterpret_cast<internal::Object**>(this->val_), parameter,
7662 reinterpret_cast<Callback>(callback));
7663 }
7664
7665
7666 template <class T>
7667 template <typename P>
7668 void PersistentBase<T>::SetWeak(
7669 P* parameter,
7670 typename WeakCallbackData<T, P>::Callback callback) {
7671 SetWeak<T, P>(parameter, callback);
7672 }
7673
7674
7675 template <class T>
7676 template <typename P>
7677 void PersistentBase<T>::SetPhantom(
7678 P* parameter, typename WeakCallbackInfo<P>::Callback callback,
7679 int internal_field_index1, int internal_field_index2) {
7680 typedef typename WeakCallbackInfo<void>::Callback Callback;
7681 V8::MakeWeak(reinterpret_cast<internal::Object**>(this->val_), parameter,
7682 internal_field_index1, internal_field_index2,
7683 reinterpret_cast<Callback>(callback));
7684 }
7685
7686
7687 template <class T>
7688 template <typename P> 7603 template <typename P>
7689 V8_INLINE void PersistentBase<T>::SetWeak( 7604 V8_INLINE void PersistentBase<T>::SetWeak(
7690 P* parameter, typename WeakCallbackInfo<P>::Callback callback, 7605 P* parameter, typename WeakCallbackInfo<P>::Callback callback,
7691 WeakCallbackType type) { 7606 WeakCallbackType type) {
7692 typedef typename WeakCallbackInfo<void>::Callback Callback; 7607 typedef typename WeakCallbackInfo<void>::Callback Callback;
7693 V8::MakeWeak(reinterpret_cast<internal::Object**>(this->val_), parameter, 7608 V8::MakeWeak(reinterpret_cast<internal::Object**>(this->val_), parameter,
7694 reinterpret_cast<Callback>(callback), type); 7609 reinterpret_cast<Callback>(callback), type);
7695 } 7610 }
7696 7611
7697 7612
(...skipping 1092 matching lines...) Expand 10 before | Expand all | Expand 10 after
8790 */ 8705 */
8791 8706
8792 8707
8793 } // namespace v8 8708 } // namespace v8
8794 8709
8795 8710
8796 #undef TYPE_CHECK 8711 #undef TYPE_CHECK
8797 8712
8798 8713
8799 #endif // INCLUDE_V8_H_ 8714 #endif // INCLUDE_V8_H_
OLDNEW
« no previous file with comments | « no previous file | include/v8-util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698