Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1150)

Unified Diff: test/mjsunit/compiler/assignment-deopt.js

Issue 6821009: Introduce runtime function %OptimizeFunctionOnNextCall to manually trigger optimization. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: address comments Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/mjsunit/compiler/array-length.js ('k') | test/mjsunit/compiler/count-deopt.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/compiler/assignment-deopt.js
diff --git a/test/mjsunit/compiler/assignment-deopt.js b/test/mjsunit/compiler/assignment-deopt.js
index 74f185bb1cd065b85ae1a2fed5b2d2200a309fdd..2b006254171c32b969c73f0236cf1ebe1b96880e 100644
--- a/test/mjsunit/compiler/assignment-deopt.js
+++ b/test/mjsunit/compiler/assignment-deopt.js
@@ -25,6 +25,8 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// Flags: --allow-natives-syntax
+
// Test deopt with count operation on parameter.
var max_smi = 1073741823;
var o = {x:0};
@@ -44,12 +46,15 @@ o.x = "42";
assign2(o);
assertEquals("421", o.x);
-var s = max_smi - 10000;
+var s = max_smi - 10;
o.x = s;
-for(var i = 0; i < 20000; i++) {
+for(var i = 0; i < 20; i++) {
assign2(o);
+ if (i == 4) {
+ %OptimizeFunctionOnNextCall(assign2);
+ }
}
-assertEquals(max_smi + 10000, o.x);
+assertEquals(max_smi + 10, o.x);
// Test deopt with count operation on keyed property.
@@ -59,36 +64,48 @@ o = ["42"];
assign3(o, 0);
assertEquals("421", o[0]);
-var s = max_smi - 10000;
+var s = max_smi - 10;
o[0] = s;
-for(var i = 0; i < 20000; i++) {
+for(var i = 0; i < 20; i++) {
assign3(o, 0);
+ if (i == 4) {
+ %OptimizeFunctionOnNextCall(assign3);
+ }
}
-assertEquals(max_smi + 10000, o[0]);
+assertEquals(max_smi + 10, o[0]);
-assign3(o,"0");
+assign3(o, "0");
-assertEquals(max_smi + 10001, o[0]);
+assertEquals(max_smi + 11, o[0]);
// Test bailout when accessing a non-existing array element.
o[0] = 0;
-for(var i = 0; i < 10000; i++) {
+for(var i = 0; i < 5; i++) {
assign3(o, 0);
}
-assign3(o,1);
+%OptimizeFunctionOnNextCall(assign3);
+assign3(o, 0);
+assign3(o, 1);
// Test bailout with count operation in a value context.
function assign5(x,y) { return (x += 1) + y; }
-for (var i = 0; i < 10000; ++i) assertEquals(4, assign5(2, 1));
+for (var i = 0; i < 5; ++i) assertEquals(4, assign5(2, 1));
+%OptimizeFunctionOnNextCall(assign5);
+assertEquals(4, assign5(2, 1));
+
assertEquals(4.1, assign5(2, 1.1));
assertEquals(4.1, assign5(2.1, 1));
function assign7(o,y) { return (o.x += 1) + y; }
o = {x:0};
-for (var i = 0; i < 10000; ++i) {
+for (var i = 0; i < 5; ++i) {
o.x = 42;
assertEquals(44, assign7(o, 1));
}
+%OptimizeFunctionOnNextCall(assign7);
+o.x = 42;
+assertEquals(44, assign7(o, 1));
+
o.x = 42;
assertEquals(44.1, assign7(o, 1.1));
o.x = 42.1;
@@ -96,10 +113,14 @@ assertEquals(44.1, assign7(o, 1));
function assign9(o,y) { return (o[0] += 1) + y; }
q = [0];
-for (var i = 0; i < 10000; ++i) {
+for (var i = 0; i < 5; ++i) {
q[0] = 42;
assertEquals(44, assign9(q, 1));
}
+%OptimizeFunctionOnNextCall(assign9);
+q[0] = 42;
+assertEquals(44, assign9(q, 1));
+
q[0] = 42;
assertEquals(44.1, assign9(q, 1.1));
q[0] = 42.1;
@@ -109,11 +130,16 @@ assertEquals(44.1, assign9(q, 1));
function assign10(p) { return p.x += 1 }
var g1 = {x:0};
var g2 = {y:0, x:42};
-for (var i = 0; i < 10000; ++i) {
+for (var i = 0; i < 5; ++i) {
g1.x = 42;
assertEquals(43, assign10(g1));
assertEquals(43, g1.x);
}
+%OptimizeFunctionOnNextCall(assign10);
+g1.x = 42;
+assertEquals(43, assign10(g1));
+assertEquals(43, g1.x);
+
assertEquals(43, assign10(g2));
assertEquals(43, g2.x);
@@ -123,10 +149,14 @@ o = {x:0};
var g3 = { valueOf: function() { o.y = "bar"; return 42; }};
function assign11(p) { return p.x += 1; }
-for (var i = 0; i < 10000; i++) {
+for (var i = 0; i < 5; i++) {
o.x = "a";
assign11(o);
}
+%OptimizeFunctionOnNextCall(assign11);
+o.x = "a";
+assign11(o);
+
assertEquals("a11", assign11(o));
o.x = g3;
assertEquals(43, assign11(o));
@@ -136,10 +166,14 @@ o = [0];
var g4 = { valueOf: function() { o.y = "bar"; return 42; }};
function assign12(p) { return p[0] += 1; }
-for (var i = 0; i < 1000000; i++) {
+for (var i = 0; i < 5; i++) {
o[0] = "a";
assign12(o);
}
+%OptimizeFunctionOnNextCall(assign12);
+o[0] = "a";
+assign12(o);
+
assertEquals("a11", assign12(o));
o[0] = g4;
assertEquals(43, assign12(o));
« no previous file with comments | « test/mjsunit/compiler/array-length.js ('k') | test/mjsunit/compiler/count-deopt.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698