13ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// Copyright 2012 the V8 project authors. All rights reserved. 23ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// Redistribution and use in source and binary forms, with or without 33ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// modification, are permitted provided that the following conditions are 43ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// met: 53ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// 63ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// * Redistributions of source code must retain the above copyright 73ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// notice, this list of conditions and the following disclaimer. 83ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// * Redistributions in binary form must reproduce the above 93ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// copyright notice, this list of conditions and the following 103ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// disclaimer in the documentation and/or other materials provided 113ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// with the distribution. 123ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// * Neither the name of Google Inc. nor the names of its 133ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// contributors may be used to endorse or promote products derived 143ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// from this software without specific prior written permission. 153ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// 163ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 173ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 183ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 193ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 203ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 213ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 223ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 233ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 243ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 253ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 263ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 273ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 283ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// Flags: --allow-natives-syntax 293ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 303ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction test_helper_for_ics(func, b1, b2, b3, b4) { 313ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch assertEquals(b1, func(.5, .5)); 323ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch assertEquals(b2, func(.5, undefined)); 333ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch assertEquals(b3, func(undefined, .5)); 343ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch assertEquals(b4, func(undefined, undefined)); 353ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 363ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 373ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction test_helper_for_crankshaft(func, b1, b2, b3, b4) { 383ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch assertEquals(b1, func(.5, .5)); 393ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch %OptimizeFunctionOnNextCall(func); 403ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch assertEquals(b1, func(.5, .5)); 413ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch assertEquals(b2, func(.5, undefined)); 423ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch assertEquals(b3, func(undefined, .5)); 433ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch assertEquals(b4, func(undefined, undefined)); 443ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 453ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 463ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction less_1(a, b) { 473ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return a < b; 483ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 493ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 503ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest_helper_for_ics(less_1, false, false, false, false); 513ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 523ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction less_2(a, b) { 533ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return a < b; 543ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 553ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 563ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest_helper_for_crankshaft(less_1, false, false, false, false); 573ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 583ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction greater_1(a, b) { 593ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return a > b; 603ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 613ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 623ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest_helper_for_ics(greater_1, false, false, false, false); 633ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 643ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction greater_2(a, b) { 653ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return a > b; 663ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 673ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 683ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest_helper_for_crankshaft(greater_1, false, false, false, false); 693ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 703ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction less_equal_1(a, b) { 713ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return a <= b; 723ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 733ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 743ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest_helper_for_ics(less_equal_1, true, false, false, false); 753ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 763ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction less_equal_2(a, b) { 773ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return a <= b; 783ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 793ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 803ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest_helper_for_crankshaft(less_equal_1, true, false, false, false); 813ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 823ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction greater_equal_1(a, b) { 833ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return a >= b; 843ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 853ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 863ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest_helper_for_ics(greater_equal_1, true, false, false, false); 873ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 883ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction greater_equal_2(a, b) { 893ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return a >= b; 903ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 913ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 923ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest_helper_for_crankshaft(greater_equal_1, true, false, false, false); 933ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 943ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction equal_1(a, b) { 953ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return a == b; 963ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 973ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 983ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest_helper_for_ics(equal_1, true, false, false, true); 993ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1003ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction equal_2(a, b) { 1013ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return a == b; 1023ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 1033ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1043ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest_helper_for_crankshaft(equal_2, true, false, false, true); 1053ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1063ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction strict_equal_1(a, b) { 1073ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return a === b; 1083ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 1093ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1103ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest_helper_for_ics(strict_equal_1, true, false, false, true); 1113ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1123ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction strict_equal_2(a, b) { 1133ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return a === b; 1143ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 1153ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1163ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest_helper_for_crankshaft(strict_equal_2, true, false, false, true); 1173ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1183ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction not_equal_1(a, b) { 1193ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return a != b; 1203ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 1213ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1223ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest_helper_for_ics(not_equal_1, false, true, true, false); 1233ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1243ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction not_equal_2(a, b) { 1253ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return a != b; 1263ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 1273ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1283ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest_helper_for_crankshaft(not_equal_2, false, true, true, false); 129