Revision: 9578
Author: [email protected]
Date: Tue Oct 11 03:02:42 2011
Log: Make elements_kind map transition test conditional on smi element
support
TEST=mjsunit/element-kind passes even without --smi-only-arrays
Review URL: http://codereview.chromium.org/8230008
http://code.google.com/p/v8/source/detail?r=9578
Modified:
/branches/bleeding_edge/test/mjsunit/element-kind.js
=======================================
--- /branches/bleeding_edge/test/mjsunit/element-kind.js Tue Oct 11
02:33:00 2011
+++ /branches/bleeding_edge/test/mjsunit/element-kind.js Tue Oct 11
03:02:42 2011
@@ -209,49 +209,53 @@
// 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));
+}
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev