| Index: test/mjsunit/array-literal-feedback.js
|
| diff --git a/test/mjsunit/array-literal-feedback.js b/test/mjsunit/array-literal-feedback.js
|
| index cfda0f6d5f6006d4aac3aa3e288066bd5fb421d5..ed9c4e879e4d6e22f0d3f49fcb00a5ac7ade7582 100644
|
| --- a/test/mjsunit/array-literal-feedback.js
|
| +++ b/test/mjsunit/array-literal-feedback.js
|
| @@ -25,25 +25,9 @@
|
| // (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 --smi-only-arrays --expose-gc
|
| +// Flags: --allow-natives-syntax --expose-gc
|
| // Flags: --noalways-opt
|
|
|
| -// Test element kind of objects.
|
| -// Since --smi-only-arrays affects builtins, its default setting at compile
|
| -// time sticks if built with snapshot. If --smi-only-arrays is deactivated
|
| -// by default, only a no-snapshot build actually has smi-only arrays enabled
|
| -// in this test case. Depending on whether smi-only arrays are actually
|
| -// enabled, this test takes the appropriate code path to check smi-only arrays.
|
| -
|
| -// support_smi_only_arrays = %HasFastSmiElements(new Array(1,2,3,4,5,6,7,8));
|
| -support_smi_only_arrays = true;
|
| -
|
| -if (support_smi_only_arrays) {
|
| - print("Tests include smi-only arrays.");
|
| -} else {
|
| - print("Tests do NOT include smi-only arrays.");
|
| -}
|
| -
|
| var elements_kind = {
|
| fast_smi_only : 'fast smi only elements',
|
| fast : 'fast elements',
|
| @@ -73,58 +57,51 @@ function isHoley(obj) {
|
| }
|
|
|
| function assertKind(expected, obj, name_opt) {
|
| - if (!support_smi_only_arrays &&
|
| - expected == elements_kind.fast_smi_only) {
|
| - expected = elements_kind.fast;
|
| - }
|
| assertEquals(expected, getKind(obj), name_opt);
|
| }
|
|
|
| -if (support_smi_only_arrays) {
|
| -
|
| - function get_literal(x) {
|
| - var literal = [1, 2, x];
|
| - return literal;
|
| - }
|
| +function get_literal(x) {
|
| + var literal = [1, 2, x];
|
| + return literal;
|
| +}
|
|
|
| - get_literal(3);
|
| - // It's important to store a from before we crankshaft get_literal, because
|
| - // mementos won't be created from crankshafted code at all.
|
| - a = get_literal(3);
|
| +get_literal(3);
|
| +// It's important to store a from before we crankshaft get_literal, because
|
| +// mementos won't be created from crankshafted code at all.
|
| +a = get_literal(3);
|
| %OptimizeFunctionOnNextCall(get_literal);
|
| - get_literal(3);
|
| - assertOptimized(get_literal);
|
| - assertTrue(%HasFastSmiElements(a));
|
| - // a has a memento so the transition caused by the store will affect the
|
| - // boilerplate.
|
| - a[0] = 3.5;
|
| -
|
| - // We should have transitioned the boilerplate array to double, and
|
| - // crankshafted code should de-opt on the unexpected elements kind
|
| - b = get_literal(3);
|
| - assertTrue(%HasFastDoubleElements(b));
|
| - assertEquals([1, 2, 3], b);
|
| - assertUnoptimized(get_literal);
|
| -
|
| - // Optimize again
|
| - get_literal(3);
|
| +get_literal(3);
|
| +assertOptimized(get_literal);
|
| +assertTrue(%HasFastSmiElements(a));
|
| +// a has a memento so the transition caused by the store will affect the
|
| +// boilerplate.
|
| +a[0] = 3.5;
|
| +
|
| +// We should have transitioned the boilerplate array to double, and
|
| +// crankshafted code should de-opt on the unexpected elements kind
|
| +b = get_literal(3);
|
| +assertTrue(%HasFastDoubleElements(b));
|
| +assertEquals([1, 2, 3], b);
|
| +assertUnoptimized(get_literal);
|
| +
|
| +// Optimize again
|
| +get_literal(3);
|
| %OptimizeFunctionOnNextCall(get_literal);
|
| - b = get_literal(3);
|
| - assertTrue(%HasFastDoubleElements(b));
|
| - assertOptimized(get_literal);
|
| +b = get_literal(3);
|
| +assertTrue(%HasFastDoubleElements(b));
|
| +assertOptimized(get_literal);
|
|
|
|
|
| - // Test: make sure allocation site information is updated through a
|
| - // transition from SMI->DOUBLE->FAST
|
| - (function() {
|
| - function bar(a, b, c) {
|
| - return [a, b, c];
|
| - }
|
| +// Test: make sure allocation site information is updated through a
|
| +// transition from SMI->DOUBLE->FAST
|
| +(function() {
|
| + function bar(a, b, c) {
|
| + return [a, b, c];
|
| + }
|
|
|
| - a = bar(1, 2, 3);
|
| - a[0] = 3.5;
|
| - a[1] = 'hi';
|
| - b = bar(1, 2, 3);
|
| - assertKind(elements_kind.fast, b);
|
| - })();
|
| -}
|
| + a = bar(1, 2, 3);
|
| + a[0] = 3.5;
|
| + a[1] = 'hi';
|
| + b = bar(1, 2, 3);
|
| + assertKind(elements_kind.fast, b);
|
| +})();
|
|
|