What's the intended use case of this option?

On Tuesday, February 27, 2018 at 4:21:03 PM UTC-8, Ben Noordhuis wrote:
>
> On Tue, Feb 27, 2018 at 5:49 AM, A.M. <cis7...@gmail.com <javascript:>> 
> wrote: 
> > Calling `SetWeak` like this: 
> > 
> > global_handle.SetWeak(parameter, &X::WeakCallback, 
> > v8::WeakCallbackType::kInternalFields); 
> > 
> > , against a handle that contains an object with internal fields calls 
> > `X::WeakCallback` with the parameter and both internal fields of 
> > `v8::WeakCallbackInfo<v8::Global<v8::Object>>` always return `NULL`. 
> > 
> > Looking at 
> > `v8::internal::GlobalHandles::Node::PostGarbageCollectionProcessing`, 
> which 
> > calls the weak callback, those internal fields are always `NULL`: 
> > 
> >     void* embedder_fields[v8::kEmbedderFieldsInWeakCallback] = {nullptr, 
> >                                                                 
> nullptr}; 
> >     v8::WeakCallbackInfo<void> 
> data(reinterpret_cast<v8::Isolate*>(isolate), 
> >                                     parameter(), embedder_fields, 
> nullptr); 
> >     weak_callback_(data); 
> > 
> > 
> > Is that some experimental feature or there's some way to make object's 
> > internal fields available within the weak callback? 
> > 
> > Thanks 
>
> You're looking at the wrong code. 
> GlobalHandles::Node::PostGarbageCollectionProcessing() only deals with 
> weak handles, not phantom handles. 
>
> WeakCallbackType::kInternalFields creates a phantom handle (confusing, 
> I know) and those are dispatched in 
> GlobalHandles::PostGarbageCollectionProcessing(). 
>
> IIRC, it's a two-pass system: first pass should reset the persistent 
> handle, second pass is the real finalizer.  Preempting the question of 
> why it works that way: I don't know. :-) 
>

-- 
-- 
v8-users mailing list
v8-users@googlegroups.com
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to