// Copyright 2015 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 --harmony-tostring function le(a, b) { return a <= b; } function lt(a, b) { return a < b; } function ge(a, b) { return a >= b; } function gt(a, b) { return a > b; } function test(a, b) { // Check CompareIC for less than or equal of known objects. assertThrows(function() {le(a, a)}); assertThrows(function() {le(a, b)}); assertThrows(function() {le(b, a)}); // Check CompareIC for less than of known objects. assertThrows(function() {lt(a, a)}); assertThrows(function() {lt(a, b)}); assertThrows(function() {lt(b, a)}); // Check CompareIC for greater than or equal of known objects. assertThrows(function() {ge(a, a)}); assertThrows(function() {ge(a, b)}); assertThrows(function() {ge(b, a)}); // Check CompareIC for greater than of known objects. assertThrows(function() {gt(a, a)}); assertThrows(function() {gt(a, b)}); assertThrows(function() {gt(b, a)}); } function O() { } Object.defineProperty(O.prototype, Symbol.toStringTag, { get: function() { throw "@@toStringTag called!" } }); var obj1 = new O; var obj2 = new O; assertTrue(%HaveSameMap(obj1, obj2)); test(obj1, obj2); test(obj1, obj2); %OptimizeFunctionOnNextCall(le); %OptimizeFunctionOnNextCall(lt); %OptimizeFunctionOnNextCall(ge); %OptimizeFunctionOnNextCall(gt); test(obj1, obj2);