| Index: test/mjsunit/regress/regress-169928.js
|
| diff --git a/test/mjsunit/compiler/inline-arity-mismatch.js b/test/mjsunit/regress/regress-169928.js
|
| similarity index 66%
|
| copy from test/mjsunit/compiler/inline-arity-mismatch.js
|
| copy to test/mjsunit/regress/regress-169928.js
|
| index 4a61fa3a62c36f8f53b12cde023f52bdb6e1abc7..e5efcb11860bcba74d5799cbe66085fd92d26c4e 100644
|
| --- a/test/mjsunit/compiler/inline-arity-mismatch.js
|
| +++ b/test/mjsunit/regress/regress-169928.js
|
| @@ -25,38 +25,29 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| -// Flags: --allow-natives-syntax
|
| +// Flags: --allow-natives-syntax --smi-only-arrays --track-allocation-sites
|
|
|
| -// Test inlining at call sites with mismatched arity.
|
|
|
| -function f(a) {
|
| - return a.x;
|
| +function fastliteralcase(literal, value) {
|
| + literal[0] = value;
|
| + return literal;
|
| }
|
|
|
| -function g(a, b) {
|
| - return a.x;
|
| -}
|
| -
|
| -function h1(a, b) {
|
| - return f(a, a) * g(b);
|
| -}
|
| -
|
| -function h2(a, b) {
|
| - return f(a, a) * g(b);
|
| +function get_standard_literal() {
|
| + var literal = [1, 2, 3];
|
| + return literal;
|
| }
|
|
|
| +// Case: [1,2,3] as allocation site
|
| +obj = fastliteralcase(get_standard_literal(), 1);
|
| +obj = fastliteralcase(get_standard_literal(), 1.5);
|
| +obj = fastliteralcase(get_standard_literal(), 2);
|
|
|
| -var o = {x: 2};
|
| +obj = fastliteralcase([5, 3, 2], 1.5);
|
| +// The assert indicates that a transition stub made the array FAST_DOUBLE. The
|
| +// bug was in the transition stub. To really reproduce with a access violation
|
| +// the array needs to be allocated at the very end of new space, where top ==
|
| +// limit. The bug was that then we tried to dereference limit.
|
| +assertEquals(true, %HasFastDoubleElements(obj));
|
|
|
| -assertEquals(4, h1(o, o));
|
| -assertEquals(4, h1(o, o));
|
| -assertEquals(4, h2(o, o));
|
| -assertEquals(4, h2(o, o));
|
| -%OptimizeFunctionOnNextCall(h1);
|
| -%OptimizeFunctionOnNextCall(h2);
|
| -assertEquals(4, h1(o, o));
|
| -assertEquals(4, h2(o, o));
|
|
|
| -var u = {y:0, x:1};
|
| -assertEquals(2, h1(u, o));
|
| -assertEquals(2, h2(o, u));
|
|
|