//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------

function foo(arg1, arg2, arg3, arg4) {
    var y = 1;
    if (arg3) {
        Object.defineProperty(arg1, arg4, getProp);
    }
    y = arg1[arg4];
    if (arg3)
        y = arg1[arg4];
    return y;
}

o1 = { "prop4": 4 };
var count = 0;

for (var i = 0; i < 200; i++) {
    foo(o1, "text", false, "prop4");
}

var getProp = { get: function () { return count++; } };

if (foo(o1, "text", true, "prop4") != 1)
    WScript.Echo("FAILED");
else
    WScript.Echo("Passed");


