// Copyright 2014 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 // Check the results of `left >>> right`. The result is always unsigned (and // therefore positive). function test_shr(left) { var errors = 0; for (var i = 1; i < 1024; i++) { var temp = left >>> i; if (temp < 0) { errors++; } } return errors; } %PrepareFunctionForOptimization(test_shr); assertEquals(0, test_shr(1)); %OptimizeFunctionOnNextCall(test_shr); for (var i = 5; i >= -5; i--) { assertEquals(0, test_shr(i)); } (function () { function foo(x, b, array) { var y; x = x >>> 0; b ? (y = x | 0) : (y = x); return array[y]; } %PrepareFunctionForOptimization(foo); foo(111, true, new Array(42)); foo(111, true, new Array(42)); %OptimizeFunctionOnNextCall(foo); foo(-111, true, new Array(42)); })(); (function () { function foo(x, b, array) { var y; x = x >>> 0; b ? (y = x | 0) : (y = x); return array[y]; } %PrepareFunctionForOptimization(foo); foo(111, true, new Array(42)); foo(111, true, new Array(42)); %OptimizeFunctionOnNextCall(foo); foo(111, true, new Array(42)); })();