| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- function fieldhoist1()
- {
- var object = {};
- var sum = 0;
- for (var i = 0; i < 3; i++)
- {
- sum += object.sum; // hoisted field load
- Object.defineProperty(object, "sum", { get: function() { WScript.Echo("sum" ); }, configurable: true });
- sum += object.sum; // implicit call bailout
- }
- }
- function fieldhoist2()
- {
- var object = {};
- var sum = 0;
- for (var i = 0; i < 3; i++)
- {
- sum += object.sum; // hoisted field load
- Object.defineProperty(object, "x", { get: function() { WScript.Echo("x"); }, configurable: true }); // kill all fields
- sum += object.sum; // reload, no bailout
- }
- }
- function fieldhoist3(name)
- {
- var object = { sum: 1};
- Object.defineProperty(object, name, { set: function(val) { WScript.Echo(val); }, configurable: true });
- var sum = 0;
- for (var i = 0; i < 3; i++)
- {
- sum += object.sum; // hoisted field load
- object[name] = object.sum; // kill all fields
- sum += object.sum; // reload, no bailout
- }
- }
- function main()
- {
- fieldhoist1();
- fieldhoist2();
- fieldhoist3("x");
- }
- main();
|