Move unsafe jsc shell test functions to the $vm object.
[WebKit-https.git] / JSTests / typeProfiler / overflow.js
1 var findTypeForExpression = $vm.findTypeForExpression;
2
3 load("./driver/driver.js");
4
5 function wrapper()
6 {
7
8 var x;
9 var Proto = function() {};
10 var oldProto;
11 for (var i = 0; i < MaxStructureCountWithoutOverflow; i++) {
12     // Make sure we get a new prototype chain on each assignment to x because objects with shared prototype chains will be merged.
13     x = new Proto;
14     x['field' + i] = 20;
15     x = x
16     oldProto = Proto;
17     Proto = function() {};
18     Proto.prototype.__proto__ = oldProto.prototype;
19 }
20 x = {};
21
22 var y;
23 Proto = function() {};
24 oldProto = null;
25 for (var i = 0; i < MaxStructureCountWithoutOverflow - 1; i++) {
26     y = new Proto;
27     y['field' + i] = 20;
28     y = y
29     oldProto = Proto;
30     Proto = function() {};
31     Proto.prototype.__proto__ = oldProto.prototype;
32 }
33 y = {};
34
35 }
36 wrapper();
37
38 var types = findTypeForExpression(wrapper, "x;"); 
39 assert(types.isOverflown, "x should be overflown with too many structure shapes.");
40
41 var types = findTypeForExpression(wrapper, "y;"); 
42 assert(!types.isOverflown, "y should not be overflown with too many structure shapes.");