| //------------------------------------------------------------------------------------------------------- |
| // Copyright (C) Microsoft. All rights reserved. |
| // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. |
| //------------------------------------------------------------------------------------------------------- |
| |
| function test0() { |
| var obj0 = {}; |
| var obj2 = {}; |
| var arrObj0 = {}; |
| var func2 = function (argStr2, argStr3, argStr4, argStr5) { |
| // CSE when expressions present on LHS. |
| |
| function _csetest(_x, _y) { |
| _x.prop1 = _y; |
| return _x; |
| } |
| |
| _csetest({ "prop1": 1 }, true).prop2 = true; |
| |
| ary[true] = 1 + this.prop5; |
| var v42500 = ary[true] + ary[true]; |
| } |
| var ary = new Array(10); |
| // CSE when expressions contain element access of an array using "." and [] modifier. |
| var v42501 = ary[(func2.call(arrObj0, 1, 1, 1, 1) * 1)] + obj2.prop1; |
| ary.len = obj0.prop6 |
| obj2.length = ary[(func2.call(arrObj0, 1, 1, 1, 1) * 1)] + obj2.prop1; |
| |
| }; |
| |
| // generate profile |
| test0(); |
| test0(); |
| test0(); |
| test0(); |
| |
| // run JITted code |
| runningJITtedCode = true; |
| test0(); |
| test0(); |
| test0(); |
| test0(); |
| |
| var shouldBailout = false; |
| function test0(){ |
| var obj0 = {}; |
| var obj1 = {}; |
| var arrObj0 = {}; |
| var func0 = function(argMath0,argMath1,argArr2){ |
| var __loopvar16 = 0; |
| do { |
| __loopvar16++; |
| arrObj0[(((ary[((shouldBailout ? (ary[5] = "x") : undefined ), 5)] >= 0 ? ary[((shouldBailout ? (ary[5] = "x") : undefined ), 5)] : 0)) & 0XF)] = 1; |
| argArr2[(((arrObj0[(15)] >= 0 ? arrObj0[(15)] : 0)) & 0XF)] = 1; |
| } while((ary[(((1 >= 0 ? 1 : 0)) & 0XF)]) && __loopvar16 < 3) |
| return 1; |
| } |
| var func1 = function(){ |
| func0(1, func0(1, 1, ary), 1); |
| } |
| var func2 = function(argStr3,argMath4,argFunc5,argFunc6){ |
| (func0(1, 1, ary) ? func0.call(obj0 , 1, func1.call(obj0 ), 1) : 1); |
| } |
| obj1.method0 = func2; |
| var ary = new Array(10); |
| ary[5] = 1; |
| obj1.method0.call(obj1 , 1, 1, 1, 1); |
| }; |
| |
| // generate profile |
| test0(); |
| test0(); |
| test0(); |
| test0(); |
| test0(); |
| |
| // run JITted code |
| runningJITtedCode = true; |
| test0(); |
| test0(); |
| test0(); |
| test0(); |
| test0(); |
| |
| WScript.Echo('PASS'); |