v8/test
dcheng ebe9419228 Propagate exceptions thrown by access check interceptors.
When v8 fails an access check, it invokes a helper to try to see if it
can service the request via an access check interceptor. Invoking the
access check interceptor can throw an exception (e.g. a SecurityError).

Unfortunately, the failed access check property helpers and the
interceptor helpers don't agree on how to propagate the exception: if
the interceptor helper detects a scheduled exception, it promotes the
exception to a pending exception and returns to the failed access check
property helper.

The failed access check property helper also has an early return in
case of a scheduled exception. However, this doesn't work, as the
previously thrown exception is no longer scheduled, as it's been
promoted to a pending exception. Thus, the failed access check property
helper always end up calling the failed access check callback as well.
Since Blink's implementation of the failed access check callback also
throws an exception, this conflicts with the previously-thrown,
already-pending exception.

With this patch, the failed access check property helpers check for a
pending exception rather than a scheduled exception after invoking the
interceptor, so the exception can be propagated correctly.

BUG=v8:5715
R=yangguo@chromium.org,jochen@chromium.org

Review-Url: https://codereview.chromium.org/2550423002
Cr-Commit-Position: refs/heads/master@{#41556}
2016-12-07 15:54:39 +00:00
..
benchmarks [gn] Move build to gypfiles 2016-04-29 10:11:11 +00:00
cctest Propagate exceptions thrown by access check interceptors. 2016-12-07 15:54:39 +00:00
common [wasm] Remove raw byte pointers from WasmModule 2016-11-30 15:03:06 +00:00
debugger [debug] Partial reland of debug API deprecation 2016-12-02 09:02:01 +00:00
fuzzer [wasm] Remove raw byte pointers from WasmModule 2016-11-30 15:03:06 +00:00
inspector [inspector] Introduce debug::WasmScript 2016-12-06 13:20:36 +00:00
intl Fix the uppercasing of U+00E7(ç) and U+00F7(÷) 2016-11-28 22:55:49 +00:00
js-perf-test [test] Add performance test for closures. 2016-12-05 13:10:44 +00:00
memory [snapshot] support multiple contexts in the same snapshot. 2016-06-15 15:39:06 +00:00
message Ensure consistent error handling on 32b/64b platforms. 2016-11-29 15:06:05 +00:00
mjsunit [wasm] Fix ToNumber conversion 2016-12-07 13:54:27 +00:00
mozilla [wasm] Add guard regions to end of WebAssembly.Memory buffers 2016-11-17 20:29:13 +00:00
preparser [gn] Move build to gypfiles 2016-04-29 10:11:11 +00:00
promises-aplus Make test262 test runner check for which exception is thrown 2016-03-14 21:20:37 +00:00
simdjs [test] Deprecate test data download for most test suites 2016-08-08 12:39:48 +00:00
test262 Install the 'name' property in classes at runtime 2016-12-07 10:35:00 +00:00
unittests [ignition] desugar GetIterator() via bytecode rather than via AST 2016-12-07 15:20:33 +00:00
webkit [compiler] Make --debug-code the default in debug builds. 2016-12-02 11:36:55 +00:00
bot_default.gyp Add inspector tests to default tests to run locally. 2016-11-04 08:50:07 +00:00
bot_default.isolate [debugger] basic test infrastructure for new debugger test api. 2016-10-21 06:38:05 +00:00
BUILD.gn Properly define v8_enable_inspector and its override in GN. 2016-11-21 19:29:38 +00:00
default.gyp Add inspector tests to default tests to run locally. 2016-11-04 08:50:07 +00:00
default.isolate Add inspector tests to default tests to run locally. 2016-11-04 08:50:07 +00:00
optimize_for_size.gyp [gn] Move build to gypfiles 2016-04-29 10:11:11 +00:00
optimize_for_size.isolate [debugger] basic test infrastructure for new debugger test api. 2016-10-21 06:38:05 +00:00
perf.gyp [gn] Move build to gypfiles 2016-04-29 10:11:11 +00:00
perf.isolate [test] Isolate files the perf runner depends on 2016-11-08 10:25:13 +00:00