Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(25)

Issue 997213003: Remove kind field from StackHandler. (Closed)

Created:
5 years, 9 months ago by Michael Starzinger
Modified:
5 years, 8 months ago
Reviewers:
Yang
CC:
v8-dev
Base URL:
https://chromium.googlesource.com/v8/v8.git@master
Target Ref:
refs/pending/heads/master
Project:
v8
Visibility:
Public.

Description

Remove kind field from StackHandler. This relands commit 96f79568a926966ebcf0685bf9adc947f4e1fbff. This makes the Isolate::Throw logic not depend on a prediction of whether an exception is caught or uncaught. Such a prediction is inherently undecidable because a finally block can decide between consuming or re-throwing an exception depending on arbitray control flow. There still is a conservative prediction mechanism in place that components like the debugger or tracing can use for reporting. With this change we can get rid of the StackHandler::kind field, a pre-requisite to do table-based lookups of exception handlers. R=yangguo@chromium.org Committed: https://crrev.com/15f8213809a57c2a163b500a732c9ffe5160a41a Cr-Commit-Position: refs/heads/master@{#27263}

Patch Set 1 #

Patch Set 2 : Fix layout test issue. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+151 lines, -182 lines) Patch
M src/arm/macro-assembler-arm.cc View 1 chunk +3 lines, -6 lines 0 comments Download
M src/arm64/macro-assembler-arm64.cc View 1 chunk +2 lines, -6 lines 0 comments Download
M src/debug.h View 2 chunks +2 lines, -3 lines 0 comments Download
M src/debug.cc View 1 4 chunks +6 lines, -6 lines 0 comments Download
M src/frames.h View 2 chunks +1 line, -14 lines 0 comments Download
M src/frames.cc View 1 chunk +0 lines, -1 line 0 comments Download
M src/frames-inl.h View 1 chunk +2 lines, -23 lines 0 comments Download
M src/ia32/macro-assembler-ia32.cc View 1 chunk +3 lines, -5 lines 0 comments Download
M src/isolate.h View 5 chunks +11 lines, -10 lines 0 comments Download
M src/isolate.cc View 9 chunks +119 lines, -103 lines 0 comments Download
M src/x64/macro-assembler-x64.cc View 1 chunk +2 lines, -5 lines 0 comments Download

Messages

Total messages: 10 (2 generated)
Michael Starzinger
Notes about the patch sets in this CL: Patch Set #1: Pure reland, no other ...
5 years, 9 months ago (2015-03-17 19:14:23 UTC) #2
Yang
lgtm.
5 years, 9 months ago (2015-03-18 10:10:01 UTC) #3
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/997213003/20001
5 years, 9 months ago (2015-03-18 10:11:58 UTC) #5
commit-bot: I haz the power
Committed patchset #2 (id:20001)
5 years, 9 months ago (2015-03-18 10:19:10 UTC) #6
commit-bot: I haz the power
Patchset 2 (id:??) landed as https://crrev.com/15f8213809a57c2a163b500a732c9ffe5160a41a Cr-Commit-Position: refs/heads/master@{#27263}
5 years, 9 months ago (2015-03-18 10:19:27 UTC) #7
rmacnak
On 2015/03/18 10:19:27, I haz the power (commit-bot) wrote: > Patchset 2 (id:??) landed as ...
5 years, 8 months ago (2015-04-21 01:40:22 UTC) #8
Sven Panne
On 2015/04/21 01:40:22, rmacnak wrote: > On 2015/03/18 10:19:27, I haz the power (commit-bot) wrote: ...
5 years, 8 months ago (2015-04-21 07:20:40 UTC) #9
Michael Starzinger
5 years, 8 months ago (2015-04-21 09:20:02 UTC) #10
Message was sent while issue was closed.
On 2015/04/21 01:40:22, rmacnak wrote:
> On 2015/03/18 10:19:27, I haz the power (commit-bot) wrote:
> > Patchset 2 (id:??) landed as
> > https://crrev.com/15f8213809a57c2a163b500a732c9ffe5160a41a
> > Cr-Commit-Position: refs/heads/master@{#27263}
> 
> This change is responsible for a 70% drop in the ParserCombinators benchmark.
> Chrome is now slower than Firefox. What's the motivation for table-based
lookup
> of exception handlers?

Hey Ryan!

Thanks for reaching out. The motivation behind having a table-based lookup of
exception handlers, is that it allows us to deoptimize from within a try-block
as well as OSR into a try-block compiled by TurboFan. So far any try-catch
construct would prevent optimization of the entire function. This CL in
particular was one of several in preparation of handling try-catch constructs in
TurboFan.

Note that the non-exceptional path (i.e. try-catch constructs without a throw
happening) are not negatively impacted by these changes (they are in fact a
little bit more efficient now). Only the exceptional path in cases where we
could before determine not to need a exception-message, but now create an
exception-message, has become more expensive.

Powered by Google App Engine
This is Rietveld 408576698