| Index: test/mjsunit/compiler/minus-zero.js
|
| diff --git a/test/mjsunit/compiler/minus-zero.js b/test/mjsunit/compiler/minus-zero.js
|
| index 6efceb54e36834c217732a7974f0c5d2a2cca132..c161257d77a838b1d81b3454ae5d30b0a33b6425 100644
|
| --- a/test/mjsunit/compiler/minus-zero.js
|
| +++ b/test/mjsunit/compiler/minus-zero.js
|
| @@ -25,7 +25,7 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| -// Flags: --allow-natives-syntax
|
| +// Flags: --allow-natives-syntax --no-fold-constants
|
|
|
| function add(x, y) {
|
| return x + y;
|
| @@ -35,3 +35,59 @@ assertEquals(0, add(0, 0));
|
| assertEquals(0, add(0, 0));
|
| %OptimizeFunctionOnNextCall(add);
|
| assertEquals(-0, add(-0, -0));
|
| +
|
| +
|
| +function test(x, y) {
|
| + assertTrue(%_IsMinusZero(-0));
|
| + assertTrue(%_IsMinusZero(1/(-Infinity)));
|
| + assertTrue(%_IsMinusZero(x));
|
| +
|
| + assertFalse(%_IsMinusZero(0));
|
| + assertFalse(%_IsMinusZero(1/Infinity));
|
| + assertFalse(%_IsMinusZero(0.1));
|
| + assertFalse(%_IsMinusZero(-0.2));
|
| + assertFalse(%_IsMinusZero({}));
|
| + assertFalse(%_IsMinusZero(""));
|
| + assertFalse(%_IsMinusZero("-0"));
|
| + assertFalse(%_IsMinusZero(function() {}));
|
| + assertFalse(%_IsMinusZero(y));
|
| +}
|
| +
|
| +test(-0, 1.2);
|
| +test(-0, 1.2);
|
| +%OptimizeFunctionOnNextCall(test);
|
| +test(-0, 1.2);
|
| +assertOptimized(test);
|
| +
|
| +
|
| +function testsin() {
|
| + assertTrue(%_IsMinusZero(Math.sin(-0)));
|
| +}
|
| +
|
| +testsin();
|
| +testsin();
|
| +%OptimizeFunctionOnNextCall(testsin);
|
| +testsin();
|
| +
|
| +
|
| +function testfloor() {
|
| + assertTrue(%_IsMinusZero(Math.floor(-0)));
|
| + assertFalse(%_IsMinusZero(Math.floor(2)));
|
| +}
|
| +
|
| +testfloor();
|
| +testfloor();
|
| +%OptimizeFunctionOnNextCall(testfloor);
|
| +testfloor();
|
| +
|
| +
|
| +var double_one = Math.cos(0);
|
| +
|
| +function add(a, b) {
|
| + return a + b;
|
| +}
|
| +
|
| +assertEquals(1, 1/add(double_one, 0));
|
| +assertEquals(1, 1/add(0, double_one));
|
| +%OptimizeFunctionOnNextCall(add);
|
| +assertEquals(1/(-0 + -0), 1/add(-0, -0));
|
|
|