js/src/jit-test/tests/ion/bindname.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 // Test the scope chain walk.
     2 function test1() {
     3     var x = 0;
     4     function f1(addprop) {
     5         function f2() {
     6             eval("");
     7             function f3() {
     8                 eval("");
     9                 function f4() {
    10                     for (var i=0; i<100; i++) {
    11                         x = x + i;
    12                     }
    13                 }
    14                 return f4;
    15             }
    16             return f3();
    17         }
    18         var g = f2();
    19         g();
    20         if (addprop)
    21             eval("var a1 = 3; var x = 33;");
    22         g();
    23         if (addprop)
    24             assertEq(x, 4983);
    25         return f2();
    26     }
    28     var g = f1(true);
    29     g();
    30     g = f1(false);
    31     eval("var y = 2020; var z = y + 3;");
    32     g();
    33     return x;
    34 }
    35 assertEq(test1(), 19800);
    37 // Test with non-cacheable objects on the scope chain.
    38 function test2(o) {
    39     var x = 0;
    40     with ({}) {
    41         with (o) {
    42             var f = function() {
    43                 for (var i=0; i<100; i++) {
    44                     x++;
    45                 }
    46             };
    47         }
    48     }
    49     f();
    50     assertEq(o.x, 110);
    51     assertEq(x, 0);
    52 }
    53 test2({x: 10});

mercurial