Index: test/mjsunit/array-constructor-feedback.js |
diff --git a/test/mjsunit/array-constructor-feedback.js b/test/mjsunit/array-constructor-feedback.js |
index 45d5c58c7726630982795ec598d547c3551b3143..9bc62e447a79a86f78fdff3455ec8efb0f59a0ea 100644 |
--- a/test/mjsunit/array-constructor-feedback.js |
+++ b/test/mjsunit/array-constructor-feedback.js |
@@ -150,18 +150,11 @@ if (support_smi_only_arrays) { |
a = bar(10); |
assertKind(elements_kind.fast, a); |
assertOptimized(bar); |
- // bar should deopt because the length is too large. |
- a = bar(100000); |
- assertUnoptimized(bar); |
- assertKind(elements_kind.dictionary, a); |
- // The allocation site now has feedback that means the array constructor |
- // will not be inlined. |
- %OptimizeFunctionOnNextCall(bar); |
a = bar(100000); |
assertKind(elements_kind.dictionary, a); |
assertOptimized(bar); |
- // If the argument isn't a smi, it bails out as well |
+ // If the argument isn't a smi, things should still work. |
a = bar("oops"); |
assertOptimized(bar); |
assertKind(elements_kind.fast, a); |
@@ -176,12 +169,6 @@ if (support_smi_only_arrays) { |
barn(1, 2, 3); |
assertOptimized(barn); |
a = barn(1, "oops", 3); |
- // The method should deopt, but learn from the failure to avoid inlining |
- // the array. |
- assertKind(elements_kind.fast, a); |
- assertUnoptimized(barn); |
- %OptimizeFunctionOnNextCall(barn); |
- a = barn(1, "oops", 3); |
assertOptimized(barn); |
})(); |
@@ -228,10 +215,8 @@ if (support_smi_only_arrays) { |
assertTrue(Realm.eval(contextB, "bar2() instanceof Array")); |
})(); |
- // Test: create array with packed feedback, then optimize/inline |
- // function. Verify that if we ask for a holey array then we deopt. |
- // Reoptimization will proceed with the correct feedback and we |
- // won't deopt anymore. |
+ // Test: create array with packed feedback, then optimize function, which |
+ // should deal with arguments that create holey arrays. |
(function() { |
function bar(len) { return new Array(len); } |
bar(0); |
@@ -241,15 +226,16 @@ if (support_smi_only_arrays) { |
assertOptimized(bar); |
assertFalse(isHoley(a)); |
a = bar(1); // ouch! |
- assertUnoptimized(bar); |
+ assertOptimized(bar); |
assertTrue(isHoley(a)); |
- // Try again |
- %OptimizeFunctionOnNextCall(bar); |
a = bar(100); |
- assertOptimized(bar); |
assertTrue(isHoley(a)); |
a = bar(0); |
assertOptimized(bar); |
- assertTrue(isHoley(a)); |
+ // Crankshafted functions don't use mementos, so feedback still |
+ // indicates a packed array is desired. (unless --nocrankshaft is in use). |
+ if (4 != %GetOptimizationStatus(bar)) { |
+ assertFalse(isHoley(a)); |
+ } |
})(); |
} |