call-native-get-element-super.js (726B)
1 // |jit-test| --fast-warmup; --no-threads 2 3 const target = {}; 4 const receiver = {}; 5 6 let count = 0; 7 function getter() { 8 count++; 9 assertEq(this, receiver); 10 } 11 12 var x = Math.hypot(1,0); 13 var y = 2**31 - 1; 14 var z = -1; 15 16 Object.defineProperty(target, x, { get: getter }); 17 Object.defineProperty(target, y, { get: getter }); 18 Object.defineProperty(target, z, { get: getter }); 19 20 function get(id) { 21 return Reflect.get(target, id, receiver); 22 } 23 24 function test() { 25 with ({}) {} 26 count = 0; 27 for (var i = 0; i < 100; i++) { 28 get(x); 29 get(y); 30 get(z); 31 } 32 assertEq(count, 300); 33 } 34 35 // Test baseline IC / transpiled to MIR 36 test(); 37 38 // Force an IC in Ion. 39 for (var i = 0; i < 10; i++) { 40 get("a"); 41 } 42 43 // Test ion IC 44 test();