Revision f230a1cf deps/v8/test/mjsunit/array-literal-feedback.js

View differences:

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