| function assert(b) { |
| if (!b) |
| throw new Error("Bad!"); |
| } |
| noInline(assert); |
| |
| let weakMap = new WeakMap; |
| |
| function objectKey(o) { |
| return weakMap.get(o); |
| } |
| noInline(objectKey); |
| |
| const iters = 1000000; |
| let start = Date.now(); |
| |
| { |
| let o = {f: 20}; |
| var array = []; |
| for (var i = 0; i < 10; i++) { |
| let newObject = { f: i }; |
| weakMap.set(newObject, i); |
| array[i] = newObject; |
| } |
| |
| for (var j = 0; j < iters; ++j) { |
| for (let i = 0; i < 10; i++) |
| assert(objectKey(array[i]) === i); |
| } |
| } |
| |
| const verbose = false; |
| if (verbose) |
| print(Date.now() - start); |