blob: 8438981ddfe899b7dacf3ff9580294f5d85bee42 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
function opaqueThrow() { with ({}) {} throw 3; }
function* foo(n) {
try {
// Get into the catch block.
opaqueThrow();
} catch(v12) {
// Yield a value.
yield 1;
} finally {
// OSR into Warp with JS_GENERATOR_CLOSING
// as the pushed exception.
for (let i = 0; i < 100; i++) { }
// Create an RPow.
var x = Math.pow(1,n);
// When the finally block terminates, we re-throw
// JS_GENERATOR_CLOSING, and rematerialize the frame
// for HandleClosingGeneratorReturn, triggering
// recovery of the RPow.
}
}
for (let i = 0; i < 30; i++) {
let gen = foo(1);
// Advance to the yield in the catch block.
gen.next();
// Close the generator.
gen.return();
}
|