js/src/tests/js1_8_5/extensions/findReferences-03.js

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:534943782cd3
1 // Any copyright is dedicated to the Public Domain.
2 // http://creativecommons.org/licenses/publicdomain/
3 // Contributor: Jim Blandy
4
5 if (typeof findReferences == "function") {
6
7 function makeGenerator(c) { eval(c); yield function generatorClosure() { return x; }; }
8 var generator = makeGenerator('var x = 42');
9 var closure = generator.next();
10 referencesVia(closure, 'parent; generator object', generator);
11
12 var o = {};
13
14 assertEq(function f() {
15 return referencesVia(null, 'arguments', arguments) ||
16 referencesVia(null, 'baseline-args-obj', arguments);
17 }(), true);
18
19 var rvalueCorrect;
20
21 function finallyHoldsRval() {
22 try {
23 return o;
24 } finally {
25 rvalueCorrect = referencesVia(null, 'rval', o) ||
26 referencesVia(null, 'baseline-rval', o);
27 }
28 }
29 rvalueCorrect = false;
30 finallyHoldsRval();
31 assertEq(rvalueCorrect, true);
32
33 // Because we don't distinguish between JavaScript stack marking and C++
34 // stack marking (both use the conservative scanner), we can't really write
35 // the following tests meaningfully:
36 // generator frame -> generator object
37 // stack frame -> local variables
38 // stack frame -> this
39 // stack frame -> callee
40 // for(... in x) loop's reference to x
41
42 reportCompare(true, true);
43 } else {
44 reportCompare(true, true, "test skipped: findReferences is not a function");
45 }

mercurial