On 2013/09/13 09:47:56, Yang wrote:
I'm not entirely familiar with how frame restart works, so let me try to
understand:
When we restart frames, we find the ones we want to restart, clear the
corresponding range on the stack, and replace it with the frame dropper
builtin,
which calls the function to the bottom frame again for restart.
The problem we want to solve is that when an exception is thrown, the
debugger
becomes active through OnException. Live edit may restart frames in that
time.
When we return to throwing exception after the OnException call, the
exception
is set as pending exception, so that when we return to javascript through
the
C
entry stub, the exception triggers the registered try-catch handler. You
want
to
circumvent this by adding a check in the C entry stub. Right?
My question here is: by skipping the try-catch handler, where is that
pending
exception handled? I don't see it being cleared anywhere. So even though
we
restarted the frame, the old exception is still pending?
Your description is very accurate, no corrections.
Maybe it's better is I reproduce my rationale for this design, for Andrey
and
for the records: I don't have tooling to fix the return address the C++
has, so
C++ is determined to always return to CEntry frame. CEntry frame initiates
stack
unwind routine, so I cannot let CEntry frame keep doing this.
As to your question, I don't have an answer right now. I remember that I was
under impression that someone must have already cleared pending exception
variable to that point, so exception is only being kept by a register. If
this
not a case, I guess there we should add an instruction that does so in the
new
code.
https://codereview.chromium.org/22801003/
--
--
v8-dev mailing list
v8-dev@googlegroups.com
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 v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.