| Index: test/mjsunit/element-kind.js
|
| diff --git a/test/mjsunit/element-kind.js b/test/mjsunit/element-kind.js
|
| index cc95f460016c6ccca2f31775e49cab376c32d98d..46fd8f567d48f536661a2df63a5bdae3393dca74 100644
|
| --- a/test/mjsunit/element-kind.js
|
| +++ b/test/mjsunit/element-kind.js
|
| @@ -209,49 +209,53 @@ crankshaft_test();
|
| // A map can have three different elements_kind transitions: SMI->DOUBLE,
|
| // DOUBLE->OBJECT, and SMI->OBJECT. No matter in which order these three are
|
| // created, they must always end up with the same FAST map.
|
| -// Preparation: create one pair of identical objects for each case.
|
| -var a = [1, 2, 3];
|
| -var b = [1, 2, 3];
|
| -assertTrue(%HaveSameMap(a, b));
|
| -assertKind(element_kind.fast_smi_only_elements, a);
|
| -var c = [1, 2, 3];
|
| -c["case2"] = true;
|
| -var d = [1, 2, 3];
|
| -d["case2"] = true;
|
| -assertTrue(%HaveSameMap(c, d));
|
| -assertFalse(%HaveSameMap(a, c));
|
| -assertKind(element_kind.fast_smi_only_elements, c);
|
| -var e = [1, 2, 3];
|
| -e["case3"] = true;
|
| -var f = [1, 2, 3];
|
| -f["case3"] = true;
|
| -assertTrue(%HaveSameMap(e, f));
|
| -assertFalse(%HaveSameMap(a, e));
|
| -assertFalse(%HaveSameMap(c, e));
|
| -assertKind(element_kind.fast_smi_only_elements, e);
|
| -// Case 1: SMI->DOUBLE, DOUBLE->OBJECT, SMI->OBJECT.
|
| -a[0] = 1.5;
|
| -assertKind(element_kind.fast_double_elements, a);
|
| -a[0] = "foo";
|
| -assertKind(element_kind.fast_elements, a);
|
| -b[0] = "bar";
|
| -assertTrue(%HaveSameMap(a, b));
|
| -// Case 2: SMI->DOUBLE, SMI->OBJECT, DOUBLE->OBJECT.
|
| -c[0] = 1.5;
|
| -assertKind(element_kind.fast_double_elements, c);
|
| -assertFalse(%HaveSameMap(c, d));
|
| -d[0] = "foo";
|
| -assertKind(element_kind.fast_elements, d);
|
| -assertFalse(%HaveSameMap(c, d));
|
| -c[0] = "bar";
|
| -assertTrue(%HaveSameMap(c, d));
|
| -// Case 3: SMI->OBJECT, SMI->DOUBLE, DOUBLE->OBJECT.
|
| -e[0] = "foo";
|
| -assertKind(element_kind.fast_elements, e);
|
| -assertFalse(%HaveSameMap(e, f));
|
| -f[0] = 1.5;
|
| -assertKind(element_kind.fast_double_elements, f);
|
| -assertFalse(%HaveSameMap(e, f));
|
| -f[0] = "bar";
|
| -assertKind(element_kind.fast_elements, f);
|
| -assertTrue(%HaveSameMap(e, f));
|
| +
|
| +// This test is meaningless without FAST_SMI_ONLY_ELEMENTS.
|
| +if (support_smi_only_arrays) {
|
| + // Preparation: create one pair of identical objects for each case.
|
| + var a = [1, 2, 3];
|
| + var b = [1, 2, 3];
|
| + assertTrue(%HaveSameMap(a, b));
|
| + assertKind(element_kind.fast_smi_only_elements, a);
|
| + var c = [1, 2, 3];
|
| + c["case2"] = true;
|
| + var d = [1, 2, 3];
|
| + d["case2"] = true;
|
| + assertTrue(%HaveSameMap(c, d));
|
| + assertFalse(%HaveSameMap(a, c));
|
| + assertKind(element_kind.fast_smi_only_elements, c);
|
| + var e = [1, 2, 3];
|
| + e["case3"] = true;
|
| + var f = [1, 2, 3];
|
| + f["case3"] = true;
|
| + assertTrue(%HaveSameMap(e, f));
|
| + assertFalse(%HaveSameMap(a, e));
|
| + assertFalse(%HaveSameMap(c, e));
|
| + assertKind(element_kind.fast_smi_only_elements, e);
|
| + // Case 1: SMI->DOUBLE, DOUBLE->OBJECT, SMI->OBJECT.
|
| + a[0] = 1.5;
|
| + assertKind(element_kind.fast_double_elements, a);
|
| + a[0] = "foo";
|
| + assertKind(element_kind.fast_elements, a);
|
| + b[0] = "bar";
|
| + assertTrue(%HaveSameMap(a, b));
|
| + // Case 2: SMI->DOUBLE, SMI->OBJECT, DOUBLE->OBJECT.
|
| + c[0] = 1.5;
|
| + assertKind(element_kind.fast_double_elements, c);
|
| + assertFalse(%HaveSameMap(c, d));
|
| + d[0] = "foo";
|
| + assertKind(element_kind.fast_elements, d);
|
| + assertFalse(%HaveSameMap(c, d));
|
| + c[0] = "bar";
|
| + assertTrue(%HaveSameMap(c, d));
|
| + // Case 3: SMI->OBJECT, SMI->DOUBLE, DOUBLE->OBJECT.
|
| + e[0] = "foo";
|
| + assertKind(element_kind.fast_elements, e);
|
| + assertFalse(%HaveSameMap(e, f));
|
| + f[0] = 1.5;
|
| + assertKind(element_kind.fast_double_elements, f);
|
| + assertFalse(%HaveSameMap(e, f));
|
| + f[0] = "bar";
|
| + assertKind(element_kind.fast_elements, f);
|
| + assertTrue(%HaveSameMap(e, f));
|
| +}
|
|
|