diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /js/src/jit-test/tests/cacheir/bound-construct-derived-class-ctor.js | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/jit-test/tests/cacheir/bound-construct-derived-class-ctor.js')
-rw-r--r-- | js/src/jit-test/tests/cacheir/bound-construct-derived-class-ctor.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/cacheir/bound-construct-derived-class-ctor.js b/js/src/jit-test/tests/cacheir/bound-construct-derived-class-ctor.js new file mode 100644 index 0000000000..321fbb47f6 --- /dev/null +++ b/js/src/jit-test/tests/cacheir/bound-construct-derived-class-ctor.js @@ -0,0 +1,46 @@ +class Base { + constructor(b) { + this.b = b; + } +} +class Derived extends Base { + constructor(a, b) { + super(b); + this.a = a; + } +} + +function testSimple() { + var boundCtor = Derived.bind(null, 1); + for (var i = 0; i < 100; i++) { + var o = new boundCtor(2); + assertEq(o.a, 1); + assertEq(o.b, 2); + + } +} +testSimple(); + +function testMegamorphic() { + var ctors = [ + function(a, b) { this.a = a; this.b = b; this.c = 1; }.bind(null, 1), + function(a, b) { this.a = a; this.b = b; this.c = 2; }.bind(null, 1), + function(a, b) { this.a = a; this.b = b; this.c = 3; }.bind(null, 1), + function(a, b) { this.a = a; this.b = b; this.c = 4; }.bind(null, 1), + function(a, b) { this.a = a; this.b = b; this.c = 5; }.bind(null, 1), + function(a, b) { this.a = a; this.b = b; this.c = 6; }.bind(null, 1), + function(a, b) { this.a = a; this.b = b; this.c = 7; }.bind(null, 1), + function(a, b) { this.a = a; this.b = b; this.c = 8; }.bind(null, 1), + function(a, b) { this.a = a; this.b = b; this.c = 9; }.bind(null, 1), + function(a, b) { this.a = a; this.b = b; this.c = 10; }.bind(null, 1), + Derived.bind(null, 1), + Derived.bind(null, 1), + ]; + for (var i = 0; i < 100; i++) { + var ctor = ctors[i % ctors.length]; + var o = new ctor(2); + assertEq(o.a, 1); + assertEq(o.b, 2); + } +} +testMegamorphic(); |