Revision f230a1cf deps/v8/test/mjsunit/array-literal-feedback.js
deps/v8/test/mjsunit/array-literal-feedback.js | ||
---|---|---|
44 | 44 |
print("Tests do NOT include smi-only arrays."); |
45 | 45 |
} |
46 | 46 |
|
47 |
var elements_kind = { |
|
48 |
fast_smi_only : 'fast smi only elements', |
|
49 |
fast : 'fast elements', |
|
50 |
fast_double : 'fast double elements', |
|
51 |
dictionary : 'dictionary elements', |
|
52 |
external_byte : 'external byte elements', |
|
53 |
external_unsigned_byte : 'external unsigned byte elements', |
|
54 |
external_short : 'external short elements', |
|
55 |
external_unsigned_short : 'external unsigned short elements', |
|
56 |
external_int : 'external int elements', |
|
57 |
external_unsigned_int : 'external unsigned int elements', |
|
58 |
external_float : 'external float elements', |
|
59 |
external_double : 'external double elements', |
|
60 |
external_pixel : 'external pixel elements' |
|
61 |
} |
|
62 |
|
|
63 |
function getKind(obj) { |
|
64 |
if (%HasFastSmiElements(obj)) return elements_kind.fast_smi_only; |
|
65 |
if (%HasFastObjectElements(obj)) return elements_kind.fast; |
|
66 |
if (%HasFastDoubleElements(obj)) return elements_kind.fast_double; |
|
67 |
if (%HasDictionaryElements(obj)) return elements_kind.dictionary; |
|
68 |
} |
|
69 |
|
|
70 |
function isHoley(obj) { |
|
71 |
if (%HasFastHoleyElements(obj)) return true; |
|
72 |
return false; |
|
73 |
} |
|
74 |
|
|
75 |
function assertKind(expected, obj, name_opt) { |
|
76 |
if (!support_smi_only_arrays && |
|
77 |
expected == elements_kind.fast_smi_only) { |
|
78 |
expected = elements_kind.fast; |
|
79 |
} |
|
80 |
assertEquals(expected, getKind(obj), name_opt); |
|
81 |
} |
|
82 |
|
|
47 | 83 |
if (support_smi_only_arrays) { |
48 | 84 |
|
49 | 85 |
function get_literal(x) { |
... | ... | |
72 | 108 |
b = get_literal(3); |
73 | 109 |
assertTrue(%HasFastDoubleElements(b)); |
74 | 110 |
assertOptimized(get_literal); |
111 |
|
|
112 |
|
|
113 |
// Test: make sure allocation site information is updated through a |
|
114 |
// transition from SMI->DOUBLE->FAST |
|
115 |
(function() { |
|
116 |
function bar(a, b, c) { |
|
117 |
return [a, b, c]; |
|
118 |
} |
|
119 |
|
|
120 |
a = bar(1, 2, 3); |
|
121 |
a[0] = 3.5; |
|
122 |
a[1] = 'hi'; |
|
123 |
b = bar(1, 2, 3); |
|
124 |
assertKind(elements_kind.fast, b); |
|
125 |
})(); |
|
75 | 126 |
} |
Also available in: Unified diff