hasown.js (1198B)
1 var max = 40; 2 setJitCompilerOption("ion.warmup.trigger", max - 10); 3 4 function simple() { 5 var array = [{a: 1}, {b: 1, a: 1}, {c: 1, a: 1}]; 6 for (var i = 0; i < array.length; i++) { 7 var x = array[i]; 8 assertEq(x.hasOwnProperty("a"), true); 9 assertEq(x.hasOwnProperty("d"), false); 10 } 11 } 12 13 function megamorphic() { 14 var array = [{a: 1}, {b: 1, a: 1}, {c: 1, a: 1}, 15 {a: 1, b: 1}, {c: 1, e: 1, a: 1}, 16 {e: 1, f: 1, a: 1, g: 1}, 17 {e: 1, f: 1, a: 1, g: 1, h: 1}]; 18 for (var i = 0; i < array.length; i++) { 19 var x = array[i]; 20 assertEq(x.hasOwnProperty("a"), true); 21 assertEq(x.hasOwnProperty("d"), false); 22 } 23 } 24 25 function key() { 26 var sym = Symbol(), sym2 = Symbol(); 27 var keys = [[sym, true], [sym2, false], 28 ["a", true], ["b", false], 29 [{}, false]]; 30 var obj = {[sym]: 1, a: 1}; 31 for (var i = 0; i < keys.length; i++) { 32 var [key, result] = keys[i]; 33 assertEq(obj.hasOwnProperty(key), result); 34 } 35 } 36 37 function test() { 38 for (var i = 0; i < max; i++) { 39 simple(); 40 megamorphic(); 41 key(); 42 } 43 } 44 45 test(); 46 test();