On 2014/10/30 11:47:13, Yang wrote:
On 2014/10/30 11:16:06, aandrey wrote:
> On 2014/10/30 11:05:32, aandrey wrote:
> > On 2014/10/30 10:59:46, Yang wrote:
> > > On 2014/10/30 10:53:01, aandrey wrote:
> > > >
https://codereview.chromium.org/653023004/diff/1/src/object-observe.js
> > > > File src/object-observe.js (right):
> > > >
> > > >
> > >
> >
>
https://codereview.chromium.org/653023004/diff/1/src/object-observe.js#newcode574
> > > > src/object-observe.js:574: %DebugPushPromise(null);
> > > > But should not we patch Isolate::DoThrow() instead?
> > > >
> > > > Maybe we just call smth like %SetVerboseNextTryCatch() before
entering
the
> > > > try-catch block to make it alike the verbose v8::TryCatch? Message
> reporting
> > > and
> > > > debug event will work naturally w/o any changes.
> > >
> > > Something like %SetVerboseNextTryCatch is not easily implemented. We
push
> > > try-catch handlers in generated code onto the stack, so to implement
> something
> > > like verbosity, we would have to involve the parser and change
> > > platform-dependent code. At this point, I also have no idea what
would
> happen
> > in
> > > turbo fan code. So it's just a lot easier to piggyback on the
existing
> > > infrastructure for promises.
> > >
> > > If performance becomes a problem, we could
implement %DebugPushPromise
and
> > > %DebugPopPromise in generated code and change the data structure of
the
> > promise
> > > stack.
> >
> > Can we remove the try-catch completely in favor of:
> > - extending %_CallFunction() to make a runtime call in a v8::TryCatch
scope
> > - introducing smth like %_CallFunctionInTryCatch()
> > - introducing an intermediate runtime function that would create a
verbose
> > TryCatch and do whatever %_CallFunction() does
> > ?
>
> - introducing %PushTryCatch(bool verbose)/%PopTryCatch to push/pop
v8::TryCatch
> to the stack.
The idea with %CallFunctionInTryCatch() is definitely something we should
try,
since it would solve the message delivery issue. But I would like to
decouple
this CL from that.
One thing that %CallFunctionInTryCatch() wouldn't solve is when a Promise is
rejected not by throwing, but by calling reject or returning a rejected
Promise.
That way, no try-catch is actually involved, and reject still needs to
trigger
an API callback, which cannot use v8::TryCatch to get the message. :/
https://codereview.chromium.org/653023004/
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" 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.