diff options
Diffstat (limited to 'deps/v8/test/mjsunit/field-type-tracking.js')
-rw-r--r-- | deps/v8/test/mjsunit/field-type-tracking.js | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/deps/v8/test/mjsunit/field-type-tracking.js b/deps/v8/test/mjsunit/field-type-tracking.js index 6fc8558469..1ff336a6b3 100644 --- a/deps/v8/test/mjsunit/field-type-tracking.js +++ b/deps/v8/test/mjsunit/field-type-tracking.js @@ -9,13 +9,13 @@ var o = { text: "Hello World!" }; function A() { // Assign twice to make the field non-constant. - // TODO(ishell): update test once constant field tracking is done. this.a = {text: 'foo'}; this.a = o; } function readA(x) { return x.a; } + %PrepareFunctionForOptimization(readA); var a = new A(); assertUnoptimized(readA); readA(a); readA(a); readA(a); @@ -27,6 +27,7 @@ b.b = o; assertEquals(readA(b), o); assertUnoptimized(readA); + %PrepareFunctionForOptimization(readA); %OptimizeFunctionOnNextCall(readA); assertEquals(readA(a), o); assertOptimized(readA); @@ -38,6 +39,7 @@ return x.a; } assertUnoptimized(readAFromB); + %PrepareFunctionForOptimization(readAFromB); readAFromB(b); readAFromB(b); readAFromB(b); %OptimizeFunctionOnNextCall(readAFromB); assertEquals(readAFromB(b), o); @@ -50,6 +52,8 @@ c.a = [1]; assertUnoptimized(readA); assertUnoptimized(readAFromB); + %PrepareFunctionForOptimization(readA); + %PrepareFunctionForOptimization(readAFromB); assertEquals(readA(a), o); assertEquals(readA(b), o); assertEquals(readA(c), [1]); @@ -78,7 +82,9 @@ A.prototype = {y: 20}; function B(o) { return o.a.y; } function C() { this.a = new A(); } + %EnsureFeedbackVectorForFunction(C); + %PrepareFunctionForOptimization(B); B(new C()); B(new C()); %OptimizeFunctionOnNextCall(B); @@ -89,6 +95,7 @@ assertEquals(10, B(c)); assertUnoptimized(B); + %PrepareFunctionForOptimization(B); var c = new C(); %OptimizeFunctionOnNextCall(B); assertEquals(20, B(c)); @@ -111,13 +118,13 @@ (function() { function Foo(x) { this.x = x; } - // TODO(ishell): update test once constant field tracking is done. var f0 = new Foo({x: 0}); f0.x = {x: 0}; // make Foo.x non-constant here. var f1 = new Foo({x: 1}); var f2 = new Foo({x: 2}); var f3 = new Foo({x: 3}); function readX(f) { return f.x.x; } + %PrepareFunctionForOptimization(readX); assertEquals(readX(f1), 1); assertEquals(readX(f2), 2); assertUnoptimized(readX); @@ -125,6 +132,7 @@ assertEquals(readX(f3), 3); assertOptimized(readX); function writeX(f, x) { f.x = x; } + %PrepareFunctionForOptimization(writeX); writeX(f1, {x: 11}); writeX(f2, {x: 22}); assertUnoptimized(writeX); @@ -148,6 +156,7 @@ var f2 = new Narf(2); var f3 = new Narf(3); function baz(f, y) { f.y = y; } + %PrepareFunctionForOptimization(baz); baz(f1, {b: 9}); baz(f2, {b: 9}); baz(f2, {b: 9}); @@ -163,6 +172,7 @@ function readA(o) { return o.x.a; } var f = new Foo({a:1}); var b = new Bar({a:2}); + %PrepareFunctionForOptimization(readA); assertEquals(readA(f), 1); assertEquals(readA(b), 2); assertEquals(readA(f), 1); |