function assert(b, m = "Bad!") { if (!b) { throw new Error(m); } } function test(f, iters = 1000) { for (let i = 0; i < iters; i++) f(i); } function func(x) { return x; } noInline(func); function check(index, arr, B) { for (let i = 0; i < 1000; i++) assert(arr[i] instanceof B); } noInline(check); test(function body(index) { class A { constructor(x, f = func) { this._value = x; this._func = f; } } class B extends A { } let arr = []; for (let i = 0; i < 1000; i++) arr.push(new B(20)); check(index, arr, B); }, 8);