|
108 | 108 | assertInstanceof(foo(-1), RangeError); |
109 | 109 | })(); |
110 | 110 |
|
| 111 | +// Packed |
111 | 112 | // Test non-extensible Array call with multiple parameters. |
112 | 113 | (() => { |
113 | | - function foo(x, y, z) { return Object.preventExtensions(new Array(x, y, z)); } |
| 114 | + function foo(x, y, z, t) { return Object.preventExtensions(new Array(x, y, z, t)); } |
114 | 115 |
|
115 | 116 | %PrepareFunctionForOptimization(foo); |
116 | | - assertEquals([1, 2, 3], foo(1, 2, 3)); |
117 | | - assertEquals([1, 2, 3], foo(1, 2, 3)); |
118 | | - assertFalse(Object.isExtensible(foo(1,2,3))); |
| 117 | + assertEquals([1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 118 | + assertEquals([1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 119 | + assertFalse(Object.isExtensible(foo(1,2,3, 'a'))); |
119 | 120 | %OptimizeFunctionOnNextCall(foo); |
120 | | - assertEquals([1, 2, 3], foo(1, 2, 3)); |
121 | | - assertFalse(Object.isExtensible(foo(1,2,3))); |
| 121 | + assertEquals([1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 122 | + assertFalse(Object.isExtensible(foo(1,2,3, 'a'))); |
122 | 123 | })(); |
123 | 124 |
|
124 | 125 | // Test sealed Array call with multiple parameters. |
125 | 126 | (() => { |
126 | | - function foo(x, y, z) { return Object.seal(new Array(x, y, z)); } |
| 127 | + function foo(x, y, z, t) { return Object.seal(new Array(x, y, z, t)); } |
127 | 128 |
|
128 | 129 | %PrepareFunctionForOptimization(foo); |
129 | | - assertEquals([1, 2, 3], foo(1, 2, 3)); |
130 | | - assertEquals([1, 2, 3], foo(1, 2, 3)); |
131 | | - assertTrue(Object.isSealed(foo(1,2,3))); |
| 130 | + assertEquals([1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 131 | + assertEquals([1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 132 | + assertTrue(Object.isSealed(foo(1,2,3, 'a'))); |
132 | 133 | %OptimizeFunctionOnNextCall(foo); |
133 | | - assertEquals([1, 2, 3], foo(1, 2, 3)); |
134 | | - assertTrue(Object.isSealed(foo(1,2,3))); |
| 134 | + assertEquals([1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 135 | + assertTrue(Object.isSealed(foo(1,2,3, 'a'))); |
135 | 136 | })(); |
136 | 137 |
|
137 | 138 | // Test frozen Array call with multiple parameters. |
138 | 139 | (() => { |
139 | | - function foo(x, y, z) { return Object.freeze(new Array(x, y, z)); } |
| 140 | + function foo(x, y, z, t) { return Object.freeze(new Array(x, y, z, t)); } |
140 | 141 |
|
141 | 142 | %PrepareFunctionForOptimization(foo); |
142 | | - assertEquals([1, 2, 3], foo(1, 2, 3)); |
143 | | - assertEquals([1, 2, 3], foo(1, 2, 3)); |
144 | | - assertTrue(Object.isFrozen(foo(1,2,3))); |
| 143 | + assertEquals([1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 144 | + assertEquals([1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 145 | + assertTrue(Object.isFrozen(foo(1,2,3, 'a'))); |
145 | 146 | %OptimizeFunctionOnNextCall(foo); |
146 | | - assertEquals([1, 2, 3], foo(1, 2, 3)); |
147 | | - assertTrue(Object.isFrozen(foo(1,2,3))); |
| 147 | + assertEquals([1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 148 | + assertTrue(Object.isFrozen(foo(1,2,3, 'a'))); |
| 149 | +})(); |
| 150 | + |
| 151 | +// Holey |
| 152 | +// Test non-extensible Array call with multiple parameters. |
| 153 | +(() => { |
| 154 | + function foo(x, y, z, t) { return Object.preventExtensions([, x, y, z, t]); } |
| 155 | + |
| 156 | + %PrepareFunctionForOptimization(foo); |
| 157 | + assertEquals([, 1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 158 | + assertEquals([, 1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 159 | + assertFalse(Object.isExtensible(foo(1,2,3, 'a'))); |
| 160 | + %OptimizeFunctionOnNextCall(foo); |
| 161 | + assertEquals([, 1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 162 | + assertFalse(Object.isExtensible(foo(1,2,3, 'a'))); |
| 163 | +})(); |
| 164 | + |
| 165 | +// Test sealed Array call with multiple parameters. |
| 166 | +(() => { |
| 167 | + function foo(x, y, z, t) { return Object.seal([, x, y, z, t]); } |
| 168 | + |
| 169 | + %PrepareFunctionForOptimization(foo); |
| 170 | + assertEquals([, 1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 171 | + assertEquals([, 1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 172 | + assertTrue(Object.isSealed(foo(1,2,3, 'a'))); |
| 173 | + %OptimizeFunctionOnNextCall(foo); |
| 174 | + assertEquals([, 1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 175 | + assertTrue(Object.isSealed(foo(1,2,3, 'a'))); |
| 176 | +})(); |
| 177 | + |
| 178 | +// Test frozen Array call with multiple parameters. |
| 179 | +(() => { |
| 180 | + function foo(x, y, z, t) { return Object.freeze([, x, y, z, t]); } |
| 181 | + |
| 182 | + %PrepareFunctionForOptimization(foo); |
| 183 | + assertEquals([, 1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 184 | + assertEquals([, 1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 185 | + assertTrue(Object.isFrozen(foo(1,2,3, 'a'))); |
| 186 | + %OptimizeFunctionOnNextCall(foo); |
| 187 | + assertEquals([, 1, 2, 3, 'a'], foo(1, 2, 3, 'a')); |
| 188 | + assertTrue(Object.isFrozen(foo(1,2,3, 'a'))); |
148 | 189 | })(); |
0 commit comments