text: // Test the scope chain walk.
  function test1() {
      var x = 0;
      function f1(addprop) {
          function f2() {
              eval("");
              function f3() {
                  eval("");
                  function f4() {
                      for (var i=0; i<100; i++) {
                          x = x + i;
                      }
                  }
                  return f4;
              }
              return f3();
          }
          var g = f2();
          g();
          if (addprop)
              eval("var a1 = 3; var x = 33;");
          g();
          if (addprop)
              assertEq(x, 4983);
          return f2();
      }
  
      var g = f1(true);
      g();
      g = f1(false);
      eval("var y = 2020; var z = y + 3;");
      g();
      return x;
  }
  assertEq(test1(), 19800);
  
  // Test with non-cacheable objects on the scope chain.
  function test2(o) {
      var x = 0;
      with ({}) {
          with (o) {
              var f = function() {
                  for (var i=0; i<100; i++) {
                      x++;
                  }
              };
          }
      }
      f();
      assertEq(o.x, 110);
      assertEq(x, 0);
  }
  test2({x: 10});
  