summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/basic/unboxed-object-set-property.js
diff options
context:
space:
mode:
authorMoonchild <git-repo@palemoon.org>2020-02-26 02:38:18 +0100
committerGitHub <noreply@github.com>2020-02-26 02:38:18 +0100
commitcce2bc96771613f51659e9209181e0d54a3fee96 (patch)
treecbeec2384bd44bab37cd787215ec830fa8b356cd /js/src/jit-test/tests/basic/unboxed-object-set-property.js
parent35c26c6c19e66fabcb230fb074e76e243df04d2b (diff)
parentecdeefc4dd5624e824e696ac1c492c0b103f4acd (diff)
downloadUXP-cce2bc96771613f51659e9209181e0d54a3fee96.tar
UXP-cce2bc96771613f51659e9209181e0d54a3fee96.tar.gz
UXP-cce2bc96771613f51659e9209181e0d54a3fee96.tar.lz
UXP-cce2bc96771613f51659e9209181e0d54a3fee96.tar.xz
UXP-cce2bc96771613f51659e9209181e0d54a3fee96.zip
Merge pull request #1461 from MoonchildProductions/ubbo
Back out unboxed array/object removals
Diffstat (limited to 'js/src/jit-test/tests/basic/unboxed-object-set-property.js')
-rw-r--r--js/src/jit-test/tests/basic/unboxed-object-set-property.js31
1 files changed, 31 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/basic/unboxed-object-set-property.js b/js/src/jit-test/tests/basic/unboxed-object-set-property.js
new file mode 100644
index 000000000..fdcfcf6b2
--- /dev/null
+++ b/js/src/jit-test/tests/basic/unboxed-object-set-property.js
@@ -0,0 +1,31 @@
+
+// Use the correct receiver when non-native objects are prototypes of other objects.
+
+function Thing(a, b) {
+ this.a = a;
+ this.b = b;
+}
+
+function foo() {
+ var array = [];
+ for (var i = 0; i < 10000; i++)
+ array.push(new Thing(i, i + 1));
+
+ var proto = new Thing(1, 2);
+ var obj = Object.create(proto);
+
+ Object.defineProperty(Thing.prototype, "c", {set:function() { this.d = 0; }});
+ obj.c = 3;
+ assertEq(obj.c, undefined);
+ assertEq(obj.d, 0);
+ assertEq(obj.hasOwnProperty("d"), true);
+ assertEq(proto.d, undefined);
+ assertEq(proto.hasOwnProperty("d"), false);
+
+ obj.a = 3;
+ assertEq(obj.a, 3);
+ assertEq(proto.a, 1);
+ assertEq(obj.hasOwnProperty("a"), true);
+}
+
+foo();