You should probably use Weak persistent handle. With weak persistent handle,
you will be notified when the wrapper handle is reclaimed.

Please check line 389 in v8.h,
  /**
   * Make the reference to this object weak.  When only weak handles
   * refer to the object, the garbage collector will perform a
   * callback to the given V8::WeakReferenceCallback function, passing
   * it the object reference and the given parameters.
   */
  inline void MakeWeak(void* parameters, WeakReferenceCallback callback);


Here is an example:
http://create.tpsitulsa.com/blog/2009/01/31/persistent-handles/
<http://create.tpsitulsa.com/blog/2009/01/31/persistent-handles/>

On Sun, Sep 6, 2009 at 6:41 PM, Kenji <[email protected]> wrote:

>
> Hi, it's simple. I want my JS script to new/create object of my type.
> Let's say Point:
>
> class Point {
> public:
>  int x, y;
> };
>
> I know how to "bind" an existing c++ object to JS and so script can
> modify that object's content. But I want JS to hold the object or a
> "reference" of it.
> I'm not sure how the "construct Point function" should be written.
> I tried this:
>
> Handle<Value> Point_func(const Arguments & args) {
>        Point* p = new Point();
>        args.This()->SetInternalField(0, External::New(p));
>        return Undefined;
> }
>
> In the setter function I can get the object pointer. But how/when can
> I free the object??
>
> Or should I provide a JS function to new my Point and c++ keeps the
> ownership of it, while JS side just keep a reference of it?
>
> Can anyone help me? Do you have more documentation?
>
> Many thanks~
>
> Kenji
> >
>

--~--~---------~--~----~------------~-------~--~----~
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
-~----------~----~----~----~------~----~------~--~---

Reply via email to