Home | History | Annotate | Download | only in mjsunit
      1 // Copyright 2015 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Flags: --allow-natives-syntax
      6 
      7 function test(expected, f) {
      8   assertEquals(expected, f());
      9   assertEquals(expected, f());
     10   %OptimizeFunctionOnNextCall(f);
     11   assertEquals(expected, f());
     12   assertEquals(expected, f());
     13 }
     14 
     15 function f1() { return NaN; }
     16 test((0/0), f1);
     17 
     18 function f2() { return (0/0); }
     19 test((0/0), f2);
     20 
     21 function f3() { return (0/0) == (0/0); }
     22 test(false, f3);
     23 
     24 function f4() { return (0/0) == NaN; }
     25 test(false, f4);
     26 
     27 function f5() { return NaN == (0/0); }
     28 test(false, f5);
     29 
     30 function f6() { return "" + NaN; }
     31 test("NaN", f6);
     32 
     33 function f7() { return (0/0) === (0/0); }
     34 test(false, f7);
     35 
     36 function f8() { return (0/0) === NaN; }
     37 test(false, f8);
     38 
     39 function f9() { return NaN === (0/0); }
     40 test(false, f9);
     41 
     42 delete NaN;
     43 
     44 function g1() { return NaN; }
     45 test((0/0), g1);
     46 
     47 function g2() { return (0/0); }
     48 test((0/0), g2);
     49 
     50 function g3() { return (0/0) == (0/0); }
     51 test(false, g3);
     52 
     53 function g4() { return (0/0) == NaN; }
     54 test(false, g4);
     55 
     56 function g5() { return NaN == (0/0); }
     57 test(false, g5);
     58 
     59 function g6() { return "" + NaN; }
     60 test("NaN", g6);
     61 
     62 function g7() { return (0/0) === (0/0); }
     63 test(false, g7);
     64 
     65 function g8() { return (0/0) === NaN; }
     66 test(false, g8);
     67 
     68 function g9() { return NaN === (0/0); }
     69 test(false, g9);
     70 
     71 NaN = 111;
     72 
     73 function h1() { return NaN; }
     74 test((0/0), h1);
     75 
     76 function h2() { return (0/0); }
     77 test((0/0), h2);
     78 
     79 function h3() { return (0/0) == (0/0); }
     80 test(false, h3);
     81 
     82 function h4() { return (0/0) == NaN; }
     83 test(false, h4);
     84 
     85 function h5() { return NaN == (0/0); }
     86 test(false, h5);
     87 
     88 function h6() { return "" + NaN; }
     89 test("NaN", h6);
     90 
     91 function h7() { return (0/0) === (0/0); }
     92 test(false, h7);
     93 
     94 function h8() { return (0/0) === NaN; }
     95 test(false, h8);
     96 
     97 function h9() { return NaN === (0/0); }
     98 test(false, h9);
     99 
    100 // -------------
    101 
    102 function k1() { return this.NaN; }
    103 test((0/0), k1);
    104 
    105 function k2() { return (0/0); }
    106 test((0/0), k2);
    107 
    108 function k3() { return (0/0) == (0/0); }
    109 test(false, k3);
    110 
    111 function k4() { return (0/0) == this.NaN; }
    112 test(false, k4);
    113 
    114 function k5() { return this.NaN == (0/0); }
    115 test(false, k5);
    116 
    117 function k6() { return "" + this.NaN; }
    118 test("NaN", k6);
    119 
    120 function k7() { return (0/0) === (0/0); }
    121 test(false, k7);
    122 
    123 function k8() { return (0/0) === this.NaN; }
    124 test(false, k8);
    125 
    126 function k9() { return this.NaN === (0/0); }
    127 test(false, k9);
    128