Ok. Always good hearing it from the horse's mouth directly. Thanks a lot! 
:) 

On Tuesday, October 13, 2020 at 8:29:51 PM UTC+2 Ben Noordhuis wrote:

> On Tue, Oct 13, 2020 at 3:37 PM Elling B <elling....@gmail.com> wrote:
> >
> > I found this helper method in a tutorial a couple of days ago.
> >
> > It reinterpret casts a v8::Persistent to a v8::Local, with the intended 
> use of calling V8 API functions that require a local handle to a context, 
> without actually having to create a new v8::Local each time:
> >
> > template <class TypeName>
> > inline v8::Local<TypeName> ToLocal(const v8::Persistent<TypeName>& 
> persistent)
> > {
> > return 
> *reinterpret_cast<v8::Local<TypeName>*>(const_cast<v8::Persistent<TypeName>*>(&persistent));
> > }
> >
> > I'm new to V8, so I find myself wondering if it's safe or not. Or if it 
> can be safe in some cases.
>
> Full disclosure: that StrongPersistentToLocal() helper from the
> article is my code. I introduced that trick in the Node.js code base
> years ago and looks like people copied it. Mea culpa. :broken_smile:
>
> So, it works, but it's not particularly safe. Caveats:
>
> - don't use it on weakly persistent handles, only strong ones, and
>
> - don't call .Reset() while the Local is still in use
>
> Node.js (ab)uses it for performance reasons but most of the time you
> should just use `Local<Value>::New(isolate, persistent)`.
>

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/v8-users/b5c908af-72fd-40ad-8fc7-88851271ce7fn%40googlegroups.com.

Reply via email to