summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/basic/bug641525.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/basic/bug641525.js')
-rw-r--r--js/src/jit-test/tests/basic/bug641525.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/basic/bug641525.js b/js/src/jit-test/tests/basic/bug641525.js
new file mode 100644
index 0000000000..4c7c8b85ca
--- /dev/null
+++ b/js/src/jit-test/tests/basic/bug641525.js
@@ -0,0 +1,34 @@
+
+var o2 = new Proxy({}, {});
+function f1() {}
+function f2() {}
+function f4(o) {
+ var key = Object.getOwnPropertyNames(o)[18];
+ o4 = o[key];
+ o.prototype = {};
+}
+f4(f1);
+f4(f1);
+f4(f2);
+new f2(o2);
+
+// these will hold only if type inference is enabled.
+//assertEq(shapeOf(f1) == shapeOf(f2), false);
+//assertEq(shapeOf(f1) == shapeOf(f4), false);
+
+function factory() {
+ function foo() {}
+ foo.x = 0;
+ return foo;
+}
+
+var fobjs = [];
+for (var i = 0; i < 10; i++) {
+ var of = fobjs[i] = factory();
+ if (i > 0) {
+ assertEq(fobjs[i - 1] === of, false);
+ assertEq(shapeOf(fobjs[i - 1]), shapeOf(of));
+ }
+}
+
+assertEq(shapeOf(fobjs[0]) == shapeOf(f1), false);