32328edd54
In order to implement eager (side effect free) evaluation of arbitrary accessor properties correctly, we need the ability to call getters while guaranteeing that we don't trigger side effects. This is accomplished by adding a `throwOnSideEffect` flag to the `Runtime.callFunctionOn` API, similar to what's already available with the `Runtime.evaluate` and the `Debugger.evaluateOnCallFrame` APIs. Bug: chromium:1076820, chromium:1119900, chromium:1222114 Change-Id: If2d6c51376669cbc71a9dd3c79403d24d62aee43 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3001360 Auto-Submit: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#75556}
10 lines
418 B
Plaintext
10 lines
418 B
Plaintext
Tests side-effect-free Runtime.callFunctionOn()
|
|
|
|
Running test: testCallFunctionOnSideEffectFree
|
|
function getA() { return this.a; }: ok
|
|
function setA(a) { this.a = a; }: throws
|
|
function getB() { return this.b; }: ok
|
|
function setB(b) { this.b = b; }: throws
|
|
function setSomeGlobal() { globalThis.someGlobal = this; }: throws
|
|
function localSideEffect() { const date = new Date(); date.setDate(this.a); return date; }: ok
|