summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/ion/monomorphic-property-access.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/ion/monomorphic-property-access.js')
-rw-r--r--js/src/jit-test/tests/ion/monomorphic-property-access.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/ion/monomorphic-property-access.js b/js/src/jit-test/tests/ion/monomorphic-property-access.js
new file mode 100644
index 0000000000..54066a8d89
--- /dev/null
+++ b/js/src/jit-test/tests/ion/monomorphic-property-access.js
@@ -0,0 +1,38 @@
+function Foo() {
+ for (var i=0; i<10; i++) {
+ this["p" + i] = i;
+ }
+}
+
+function test1(foo) {
+ for (var i=0; i<10400; i++) {
+ foo.p1 = i;
+ foo.p9 = i;
+ var x = foo.p0 + foo.p1 + foo.p2 + foo.p8 + foo.p4 +
+ foo.p5 + foo.p6 + foo.p7 + foo.p3 + foo.p9;
+ assertEq(x, i + i + 35);
+ }
+}
+
+test1(new Foo);
+
+function Bar(arg) {
+ if (arg) { // Thwart definite-property analysis.
+ this.x = 1;
+ this.y = 2;
+ this.z = 3;
+ }
+}
+
+function test2(bar) {
+ for (var i=0; i<10400; i++) {
+ bar.x++;
+ bar.y++;
+ bar.z++;
+ }
+ assertEq(bar.x, 10401);
+ assertEq(bar.y, 10402);
+ assertEq(bar.z, 10403);
+}
+
+test2(new Bar(true));