X87: Remove kind field from StackHandler.
port15f8213809
(r27263) original commit message: This relands commit96f79568a9
. 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}
This commit is contained in:
parent
aca7895353
commit
5703794412
@ -1002,11 +1002,9 @@ void MacroAssembler::PushTryHandler(StackHandler::Kind kind,
|
|||||||
} else {
|
} else {
|
||||||
push(esi);
|
push(esi);
|
||||||
}
|
}
|
||||||
// Push the state.
|
|
||||||
unsigned state =
|
// Push the index.
|
||||||
StackHandler::IndexField::encode(handler_index) |
|
push(Immediate(handler_index));
|
||||||
StackHandler::KindField::encode(kind);
|
|
||||||
push(Immediate(state));
|
|
||||||
|
|
||||||
// Link the current handler as the next handler.
|
// Link the current handler as the next handler.
|
||||||
ExternalReference handler_address(Isolate::kHandlerAddress, isolate());
|
ExternalReference handler_address(Isolate::kHandlerAddress, isolate());
|
||||||
|
Loading…
Reference in New Issue
Block a user