summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/pic/proto_self.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/pic/proto_self.js')
-rw-r--r--js/src/jit-test/tests/pic/proto_self.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/pic/proto_self.js b/js/src/jit-test/tests/pic/proto_self.js
new file mode 100644
index 0000000000..faa3e4a8ee
--- /dev/null
+++ b/js/src/jit-test/tests/pic/proto_self.js
@@ -0,0 +1,39 @@
+// getprop, proto and self, 3 shapes
+
+var expected = "22,202,99;202,99,22;99,22,202;22,202,99;202,99,22;99,22,202;22,202,99;202,99,22;99,22,202;";
+var actual = '';
+
+var protoB = { a: 11, b: 22, c: 33 };
+
+function B() {
+}
+B.prototype = protoB;
+
+var protoC = { a: 101, b: 202, c: 303 };
+
+function C() {
+}
+C.prototype = protoC;
+
+function f() {
+ var o1 = new B();
+ var o2 = new C();
+ var o3 = new C();
+ o3.b = 99;
+ var oa = [ o1, o2, o3 ];
+
+ for (var i = 0; i < 9; ++i) {
+ // Use 3 PICs so we start out with each type in one PIC.
+ var i1 = i % 3;
+ var i2 = (i+1) % 3;
+ var i3 = (i+2) % 3;
+
+ actual += oa[i1].b + ',';
+ actual += oa[i2].b + ',';
+ actual += oa[i3].b + ';';
+ }
+}
+
+f();
+
+assertEq(actual, expected);