summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/class/this-check-after-scalar-replacement-in-derived-class-constructor.js
blob: 257e723f0583622960553974bee0be08b9aa4548 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Create a derived class with a default class constructor.
class C extends class {} {}

// The default constructor of a derived class is small enough to be inlinable.
assertEq(isSmallFunction(C), true);

// Bound functions have a configurable "prototype" property.
const BF = function(){}.bind();

function testBoundFunction() {
  for (let i = 0; i <= 1000; ++i) {
    let newTarget = i < 1000 ? C : BF;
    Reflect.construct(C, [], newTarget);
  }
}

for (let i = 0; i < 2; ++i) testBoundFunction();

// Proxy have a configurable "prototype" property.
const P = new Proxy(function(){}, {});

function testProxy() {
  for (let i = 0; i <= 1000; ++i) {
    let newTarget = i < 1000 ? C : P;
    Reflect.construct(C, [], newTarget);
  }
}

for (let i = 0; i < 2; ++i) testProxy();