| OLD | NEW | 
| (Empty) |  | 
 |    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 "use strict"; | 
 |    7  | 
 |    8 function test(expected, f) { | 
 |    9   assertEquals(expected, f()); | 
 |   10   assertEquals(expected, f()); | 
 |   11   %OptimizeFunctionOnNextCall(f); | 
 |   12   assertEquals(expected, f()); | 
 |   13   assertEquals(expected, f()); | 
 |   14 } | 
 |   15  | 
 |   16 function testThrows(f) { | 
 |   17   assertThrows(f); | 
 |   18   assertThrows(f); | 
 |   19   %OptimizeFunctionOnNextCall(f); | 
 |   20   assertThrows(f); | 
 |   21   assertThrows(f); | 
 |   22 } | 
 |   23  | 
 |   24 function f1() { return NaN; } | 
 |   25 test((0/0), f1); | 
 |   26  | 
 |   27 function f2() { return (0/0); } | 
 |   28 test((0/0), f2); | 
 |   29  | 
 |   30 function f3() { return (0/0) == (0/0); } | 
 |   31 test(false, f3); | 
 |   32  | 
 |   33 function f4() { return (0/0) == NaN; } | 
 |   34 test(false, f4); | 
 |   35  | 
 |   36 function f5() { return NaN == (0/0); } | 
 |   37 test(false, f5); | 
 |   38  | 
 |   39 function f6() { return "" + NaN; } | 
 |   40 test("NaN", f6); | 
 |   41  | 
 |   42 function f7() { return (0/0) === (0/0); } | 
 |   43 test(false, f7); | 
 |   44  | 
 |   45 function f8() { return (0/0) === NaN; } | 
 |   46 test(false, f8); | 
 |   47  | 
 |   48 function f9() { return NaN === (0/0); } | 
 |   49 test(false, f9); | 
 |   50  | 
 |   51 // ---- | 
 |   52  | 
 |   53 function g1() { return NaN; } | 
 |   54 test((0/0), g1); | 
 |   55  | 
 |   56 function g2() { return (0/0); } | 
 |   57 test((0/0), g2); | 
 |   58  | 
 |   59 function g3() { return (0/0) == (0/0); } | 
 |   60 test(false, g3); | 
 |   61  | 
 |   62 function g4() { return (0/0) == NaN; } | 
 |   63 test(false, g4); | 
 |   64  | 
 |   65 function g5() { return NaN == (0/0); } | 
 |   66 test(false, g5); | 
 |   67  | 
 |   68 function g6() { return "" + NaN; } | 
 |   69 test("NaN", g6); | 
 |   70  | 
 |   71 function g7() { return (0/0) === (0/0); } | 
 |   72 test(false, g7); | 
 |   73  | 
 |   74 function g8() { return (0/0) === NaN; } | 
 |   75 test(false, g8); | 
 |   76  | 
 |   77 function g9() { return NaN === (0/0); } | 
 |   78 test(false, g9); | 
 |   79  | 
 |   80 testThrows(function() { NaN = 111; }); | 
 |   81  | 
 |   82 function h1() { return NaN; } | 
 |   83 test((0/0), h1); | 
 |   84  | 
 |   85 function h2() { return (0/0); } | 
 |   86 test((0/0), h2); | 
 |   87  | 
 |   88 function h3() { return (0/0) == (0/0); } | 
 |   89 test(false, h3); | 
 |   90  | 
 |   91 function h4() { return (0/0) == NaN; } | 
 |   92 test(false, h4); | 
 |   93  | 
 |   94 function h5() { return NaN == (0/0); } | 
 |   95 test(false, h5); | 
 |   96  | 
 |   97 function h6() { return "" + NaN; } | 
 |   98 test("NaN", h6); | 
 |   99  | 
 |  100 function h7() { return (0/0) === (0/0); } | 
 |  101 test(false, h7); | 
 |  102  | 
 |  103 function h8() { return (0/0) === NaN; } | 
 |  104 test(false, h8); | 
 |  105  | 
 |  106 function h9() { return NaN === (0/0); } | 
 |  107 test(false, h9); | 
 |  108  | 
 |  109 // ------------- | 
 |  110  | 
 |  111 function k1() { return this.NaN; } | 
 |  112 testThrows(k1); | 
 |  113  | 
 |  114 function k2() { return (0/0); } | 
 |  115 test((0/0), k2); | 
 |  116  | 
 |  117 function k3() { return (0/0) == (0/0); } | 
 |  118 test(false, k3); | 
 |  119  | 
 |  120 function k4() { return (0/0) == this.NaN; } | 
 |  121 testThrows(k4); | 
 |  122  | 
 |  123 function k5() { return this.NaN == (0/0); } | 
 |  124 testThrows(k5); | 
 |  125  | 
 |  126 function k6() { return "" + this.NaN; } | 
 |  127 testThrows(k6); | 
 |  128  | 
 |  129 function k7() { return (0/0) === (0/0); } | 
 |  130 test(false, k7); | 
 |  131  | 
 |  132 function k8() { return (0/0) === this.NaN; } | 
 |  133 testThrows(k8); | 
 |  134  | 
 |  135 function k9() { return this.NaN === (0/0); } | 
 |  136 testThrows(k9); | 
| OLD | NEW |