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

Function testPolymorphicLoads

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

Source from the content-addressed store, hash-verified

41}
42
43function testPolymorphicLoads() {
44 function make_polymorphic_load_function() {
45 function load(a, i) {
46 return a[i];
47 }
48 %PrepareFunctionForOptimization(load);
49
50 var object_array = new Object;
51 var sparse_object_array = new Object;
52 var js_array = new Array(10);
53 var sparse_js_array = %NormalizeElements([]);
54
55 init_array(object_array);
56 init_array(js_array);
57 init_sparse_array(sparse_object_array);
58 init_sparse_array(sparse_js_array);
59
60 assertEquals(1, load(object_array, 1));
61 assertEquals(1, load(js_array, 1));
62 assertEquals(1, load(sparse_object_array, 1));
63 assertEquals(1, load(sparse_js_array, 1));
64
65 return load;
66 }
67
68 var object_array = new Object;
69 var sparse_object_array = new Object;
70 var js_array = new Array(10);
71 var sparse_js_array = %NormalizeElements([]);
72
73 init_array(object_array);
74 init_array(js_array);
75 init_sparse_array(sparse_object_array);
76 init_sparse_array(sparse_js_array);
77
78 load = make_polymorphic_load_function();
79 assertEquals(undefined, load(js_array, new Object()));
80 load = make_polymorphic_load_function();
81 assertEquals(undefined, load(object_array, new Object()));
82 load = make_polymorphic_load_function();
83 assertEquals(undefined, load(sparse_js_array, new Object()));
84 load = make_polymorphic_load_function();
85 assertEquals(undefined, load(sparse_object_array, new Object()));
86
87 // Try with optimizing compiler.
88 load = make_polymorphic_load_function();
89 %OptimizeFunctionOnNextCall(load);
90 assertEquals(1, load(object_array, 1));
91 assertEquals(1, load(js_array, 1));
92 assertEquals(1, load(sparse_object_array, 1));
93 assertEquals(1, load(sparse_js_array, 1));
94
95 load = make_polymorphic_load_function();
96 %OptimizeFunctionOnNextCall(load);
97 assertEquals(undefined, load(js_array, new Object()));
98 load = make_polymorphic_load_function();
99 %OptimizeFunctionOnNextCall(load);
100 assertEquals(undefined, load(object_array, new Object()));

Callers 1

Calls 5

init_arrayFunction · 0.85
init_sparse_arrayFunction · 0.85
loadFunction · 0.70
assertEqualsFunction · 0.50

Tested by

no test coverage detected