shape-snapshots.js (1083B)
1 function test1() { 2 var o = {x: 1, y: 2}; 3 var snapshot = createShapeSnapshot(o); 4 checkShapeSnapshot(snapshot); 5 Object.defineProperty(o, "z", {get: function() {}}); 6 checkShapeSnapshot(snapshot); 7 8 snapshot = createShapeSnapshot(o); 9 checkShapeSnapshot(snapshot); 10 o[12345678] = 1; 11 checkShapeSnapshot(snapshot); 12 13 snapshot = createShapeSnapshot(o); 14 Object.defineProperty(o, "a", {configurable: true, set: function(){}}); 15 checkShapeSnapshot(snapshot); 16 17 snapshot = createShapeSnapshot(o); 18 checkShapeSnapshot(snapshot); 19 delete o.a; 20 checkShapeSnapshot(snapshot); 21 } 22 test1(); 23 24 function test2() { 25 var dictObject = {x: 1, y: 2, z: 3}; 26 delete dictObject.x; 27 var objects = [this, {}, {x: 1}, {x: 2}, dictObject, function() {}, [1, 2], 28 Object.prototype, new Proxy({}, {})]; 29 var snapshots = objects.map(o => createShapeSnapshot(o)); 30 gc(); 31 snapshots.forEach(function(snapshot) { 32 objects.forEach(function(obj) { 33 checkShapeSnapshot(snapshot, obj); 34 }); 35 }); 36 } 37 test2();