diff options
Diffstat (limited to 'deps/v8/test/js-perf-test/Proxies/proxies.js')
-rw-r--r-- | deps/v8/test/js-perf-test/Proxies/proxies.js | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/deps/v8/test/js-perf-test/Proxies/proxies.js b/deps/v8/test/js-perf-test/Proxies/proxies.js index 6d5e808449..cb8167a634 100644 --- a/deps/v8/test/js-perf-test/Proxies/proxies.js +++ b/deps/v8/test/js-perf-test/Proxies/proxies.js @@ -506,3 +506,161 @@ newBenchmark("HasInIdiom", { return result === 20 * SOME_NUMBER; } }); + +// ---------------------------------------------------------------------------- + +obj = {}; +value = false; + +newBenchmark("IsExtensibleWithoutTrap", { + setup() { + p = new Proxy(obj, {}); + }, + run() { + for(var i = 0; i < ITERATIONS; i++) { + value = Object.isExtensible(p); + } + return value; + }, + teardown() { + return value === true; + } +}); + +// ---------------------------------------------------------------------------- + +obj = {}; +value = false; + +newBenchmark("IsExtensibleWithTrap", { + setup() { + p = new Proxy(obj, { + isExtensible: function(target) { + return true; + } + }); + }, + run() { + for(var i = 0; i < ITERATIONS; i++) { + value = Object.isExtensible(p); + } + return value; + }, + teardown() { + return value === true; + } +}); + +// ---------------------------------------------------------------------------- + +obj = {}; +value = false; + +newBenchmark("PreventExtensionsWithoutTrap", { + setup() { + p = new Proxy(obj, {}); + }, + run() { + for(var i = 0; i < ITERATIONS; i++) { + value = Object.preventExtensions(p); + } + return value; + }, + teardown() {} +}); + +// ---------------------------------------------------------------------------- + +obj = {}; +value = false; + +newBenchmark("PreventExtensionsWithTrap", { + setup() { + p = new Proxy(obj, { + preventExtensions: function(target) { + Object.preventExtensions(target); + return true; + } + }); + }, + run() { + for(var i = 0; i < ITERATIONS; i++) { + value = Object.preventExtensions(p); + } + return value; + }, + teardown() {} +}); + +// ---------------------------------------------------------------------------- + +newBenchmark("GetPrototypeOfWithoutTrap", { + setup() { + p = new Proxy({}, {}); + }, + run() { + for(var i = 0; i < ITERATIONS; i++) { + value = Object.getPrototypeOf(p); + } + return value; + }, + teardown() {} +}); + +// ---------------------------------------------------------------------------- + +newBenchmark("GetPrototypeOfWithTrap", { + setup() { + p = new Proxy({}, { + getPrototypeOf: function(target) { + return Array.prototype; + } + }); + }, + run() { + for(var i = 0; i < ITERATIONS; i++) { + value = Object.getPrototypeOf(p); + } + return value; + }, + teardown() {} +}); + +// ---------------------------------------------------------------------------- + +newBenchmark("SetPrototypeOfWithoutTrap", { + setup() { + var obj = { x: 1 }; + obj.__proto__ = {}; + p = new Proxy(obj, {}); + }, + run() { + for(var i = 0; i < ITERATIONS; i++) { + value = Object.setPrototypeOf(p, [1]); + } + return value; + }, + teardown() {} +}); + +// ---------------------------------------------------------------------------- + +newBenchmark("SetPrototypeOfWithTrap", { + setup() { + var obj = { x: 1 }; + obj.__proto__ = {}; + p = new Proxy(obj, { + setPrototypeOf: function(target, proto) { + Object.setPrototypeOf(target, proto); + return true; + } + }); + }, + run() { + for(var i = 0; i < ITERATIONS; i++) { + value = Object.setPrototypeOf(p, [1]); + } + return value; + }, + teardown() {} +}); |