Commit 57037944 authored by chunyang.dai's avatar chunyang.dai Committed by Commit bot

X87: Remove kind field from StackHandler.

port 15f82138 (r27263)

original commit message:

 This relands commit 96f79568.

 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.

BUG=

Review URL: https://codereview.chromium.org/1027413002

Cr-Commit-Position: refs/heads/master@{#27385}
parent aca78953
......@@ -1002,11 +1002,9 @@ void MacroAssembler::PushTryHandler(StackHandler::Kind kind,
} else {
push(esi);
}
// Push the state.
unsigned state =
StackHandler::IndexField::encode(handler_index) |
StackHandler::KindField::encode(kind);
push(Immediate(state));
// Push the index.
push(Immediate(handler_index));
// Link the current handler as the next handler.
ExternalReference handler_address(Isolate::kHandlerAddress, isolate());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment