I've already converted most of the functions to take a context that might 
use one internally.  Part of the change is to make explicit what v8 maybe 
should never have made implicit.  I've found a number of places when calls 
are made that require a context internally on some uncommon paths but we're 
using them without one.

On Thursday, April 9, 2015 at 7:36:43 PM UTC+2, Adam Klein wrote:
>
> Interesting. I agree it's "nice to have" in a debugging sort of way, both 
> for embedders and v8 itself (no weird crashes due to people forgetting to 
> enter a Context). But I wonder if we're now in a sort of inconsistent 
> state, where some APIs require entering a Context before calling and others 
> take this as an argument. Are we planning to move more of the API towards 
> _always_ passing a Context?
>
> On Thu, Apr 9, 2015 at 10:06 AM, Jochen Eisinger <[email protected] 
> <javascript:>> wrote:
>
>> In C++ you can't overload a method with just a different return type. 
>> Since making the context explicit instead of hoping that the right one is 
>> entered is nice to have, it was a handy way to change the return type.
>>
>> On Thu, Apr 9, 2015 at 6:25 PM Adam Klein <[email protected] 
>> <javascript:>> wrote:
>>
>>> On Fri, Feb 27, 2015 at 2:43 AM, Michael Hablich <[email protected] 
>>> <javascript:>> 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>);
>>>>
>>>> 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.
>>>>
>>>
>>> I'm curious about this bit of the design: why was it decided to add an 
>>> argument here rather than require a Context to be entered (via 
>>> Context::Scope)?
>>>
>>> Rather late to the discussion, I know. Apologies
>>>
>>> - Adam
>>>  
>>>
>>>> *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
>>>>
>>>> -- 
>>>> -- 
>>>> v8-users mailing list
>>>> [email protected] <javascript:>
>>>> 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] <javascript:>.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>  -- 
>>> -- 
>>> v8-users mailing list
>>> [email protected] <javascript:>
>>> 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] <javascript:>.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>  -- 
>> -- 
>> v8-users mailing list
>> [email protected] <javascript:>
>> 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] <javascript:>.
>> 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