MCPcopy Create free account
hub / github.com/nodejs/node / testPolymorphicStores

Function testPolymorphicStores

deps/v8/test/mjsunit/polymorph-arrays.js:109–179  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

107}
108
109function testPolymorphicStores() {
110 function make_polymorphic_store_function() {
111 function store(a, i, val) {
112 a[i] = val;
113 }
114 %PrepareFunctionForOptimization(store);
115
116 var object_array = new Object;
117 var sparse_object_array = new Object;
118 var js_array = new Array(10);
119 var sparse_js_array = [];
120 sparse_js_array.length = 200001;
121
122 init_array(object_array);
123 init_array(js_array);
124 init_sparse_array(sparse_object_array);
125 init_sparse_array(sparse_js_array);
126
127 store(object_array, 1, 256);
128 store(js_array, 1, 256);
129 store(sparse_object_array, 1, 256);
130 store(sparse_js_array, 1, 256);
131
132 return store;
133 }
134
135 var object_array = new Object;
136 var sparse_object_array = new Object;
137 var js_array = new Array(10);
138 var sparse_js_array = %NormalizeElements([]);
139 sparse_js_array.length = 200001;
140 assertTrue(%HasDictionaryElements(sparse_js_array));
141
142 init_array(object_array);
143 init_array(js_array);
144 init_sparse_array(sparse_object_array);
145 init_sparse_array(sparse_js_array);
146
147 store = make_polymorphic_store_function();
148 store(object_array, 2, 257);
149 store = make_polymorphic_store_function();
150 store(js_array, 2, 257);
151 store = make_polymorphic_store_function();
152 store(sparse_object_array, 2, 257);
153 store = make_polymorphic_store_function();
154 store(sparse_js_array, 2, 257);
155
156 assertEquals(257, object_array[2]);
157 assertEquals(257, js_array[2]);
158 assertEquals(257, sparse_js_array[2]);
159 assertEquals(257, sparse_object_array[2]);
160
161 // Now try Crankshaft optimized polymorphic stores
162 store = make_polymorphic_store_function();
163 %OptimizeFunctionOnNextCall(store);
164 store(object_array, 3, 258);
165 store = make_polymorphic_store_function();
166 %OptimizeFunctionOnNextCall(store);

Callers 1

Calls 6

init_arrayFunction · 0.85
init_sparse_arrayFunction · 0.85
assertTrueFunction · 0.70
storeFunction · 0.70
assertEqualsFunction · 0.50

Tested by

no test coverage detected