On Fri, Feb 27, 2015 at 3:26 PM Ben Noordhuis <[email protected]> wrote:

> On Fri, Feb 27, 2015 at 11:43 AM, Michael Hablich <[email protected]>
> wrote:
> > Hey v8-users,
> >
> > we're making big changes to the api (again).  We've found that our api
> makes
> > it extremely difficult to write exception safe code.
> >
> > Reference issue
> > https://code.google.com/p/v8/issues/detail?id=3929
> >
> > Further description
> > Consider the following:
> >
> > Local<Value> x = some_value;
> > s = x.ToString();
> > // in the current context, ToString might throw an exception, run out
> > of stack space, whatever...
> > // if that happens we just return an empty Local<String>
> > s->Anything() // Crash!
> >
> > There's too much implicit stuff happening here, and it's bad.  It's
> > especially bad if you use threads and rely on TerminateExecution(), which
> > causes lots of v8 function to return empty handles unexpectedly.
> >
> > To fix this, we will begin adding functions whose signature makes it
> > impossible to make this mistake and we will deprecate and eventually
> remove
> > all old functions.  The new functions will in general come in
> > two flavours:
> >
> > functions like:
> > Local<String> ToString(Isolate*);
> >
> > will become:
> > MaybeLocal<String> ToString(Local<Context>);
> >
> > and functions like:
> > double NumberValue();
> >
> > will become:
> > Maybe<bool> NumberValue(Local<Context>);
>
> I think this should read `Maybe<double> NumberValue(Local<Context>)`?
>

correct


>
> > The Maybe values ensure at compilation time that the value returned is
> > checked by the embedder, and the explicit Context makes it clear that a
> > context is actually required and that javascript may be executed in that
> > context.
> >
> > Timeline
> > We will add the new API parts gradually to the codebase. When this is
> > finished there will be approx. 6 weeks of time where the old and the new
> API
> > will exist side-by-side. This is a good time to make the adjustments in
> your
> > embedding code. After this period the old API will get removed.
> >
> > We apologize in advance for any trouble this may cause, but we're
> positive
> > that this change will reduce crash rates for practically all v8
> embedders.
> >
> > Cheers,
> > Michael Hablich
>
> Can you provide guidelines on what context to use in API callbacks?  I
> see that src/api.cc uses Isolate::GetCurrentContext() in a number of
> places.  When would you use the current context, when
> Isolate::GetCallingContext(), etc.?
>

We'll put a getter for the context to use on FunctionCallbackInfo and
ReturnValue.

best
-jochen


>
> --
> --
> v8-users mailing list
> [email protected]
> 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 [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- 
v8-users mailing list
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to