blob: 459e2b4202a537ad6e04ee1f06540f96a993f0d4 [file] [log] [blame]
// 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(){
function f(x){
return 1/(x+x);
}
function forgetAboutMinus0(i) {
var x = 0;
var y;
for(; i > 0; --i) {
y = f(x);
x = -0;
}
return y;
}
forgetAboutMinus0(1);
assertEquals(Infinity, forgetAboutMinus0(1));
%OptimizeFunctionOnNextCall(forgetAboutMinus0);
assertEquals(Infinity, forgetAboutMinus0(1));
assertEquals(-Infinity, forgetAboutMinus0(2));
})();
(function(){
function f(x){
return x+x;
}
function NumberAdd(x,y) {
return x + y;
}
NumberAdd(1,0.5);
NumberAdd(0.5, 1);
NumberAdd(NaN, Infinity);
function forgetAboutNaN(b) {
var x = b ? NaN : 1;
return NumberAdd(f(x), 0);
}
forgetAboutNaN(false);
assertEquals(2, forgetAboutNaN(false));
%OptimizeFunctionOnNextCall(forgetAboutNaN);
assertEquals(2, forgetAboutNaN(false));
assertEquals(NaN, forgetAboutNaN(true));
})();