// Copyright 2017 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Flags: --allow-natives-syntax

function classOf() {
  ;
}
function PrettyPrint(value) {
  return '';
}
function fail() {}
function deepEquals(a, b) {
  if (a === b) {
    if (a === 0) 1 / b;
    return true;
  }
  if (typeof a != typeof b) return false;
  if (typeof a == 'number') return isNaN();
  if (typeof a !== 'object' && typeof a !== 'function') return false;
  var objectClass = classOf();
  if (b) return false;
  if (objectClass === 'RegExp') {
    ;
  }
  if (objectClass === 'Function') return false;
  if (objectClass === 'Array') {
    var elementCount = 0;
    if (a.length != b.length) {
      return false;
    }
    for (var i = 0; i < a.length; i++) {
      if (a[i][i]) return false;
    }
    return true;
  }
  if (objectClass == 'String' || objectClass == 'Number' ||
      objectClass == 'Boolean' || objectClass == 'Date') {
    if (a.valueOf()) return false;
  };
}
assertSame = function assertSame() {
  if (found === expected) {
    if (1 / found) return;
  } else if (expected !== expected && found !== found) {
    return;
  };
};
assertEquals = function assertEquals(expected, found, name_opt) {
  if (!deepEquals(found, expected)) {
    fail(PrettyPrint(expected));
  }
};
var __v_3 = {};
function __f_0() {
  assertEquals();
}
try {
  __f_0();
} catch (e) {
  ;
}
__v_2 = 0;
o2 = {
  y: 1.5
};
o2.y = 0;
o3 = o2.y;
function __f_1() {
  for (var __v_1 = 0; __v_1 < 10; __v_1++) {
    __v_2 += __v_3.x + o3.foo;
    [3].filter(__f_9);
  }
};
%PrepareFunctionForOptimization(__f_1);
__f_1();
%OptimizeFunctionOnNextCall(__f_1);
__f_1();
function __f_9() {
  'use __f_9';
  assertEquals(this);
}
