Commit ac7c82f9 authored by Ross McIlroy's avatar Ross McIlroy Committed by Commit Bot

[cleanup] Add %PrepareForOptimization to some more mjsunit tests.

Bug: v8:8801,v8:8394,v8:9183
Change-Id: If6a4f39991f222337f1c49bd0439e9669d89b030
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1660486
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Mythri Alle <mythria@chromium.org>
Auto-Submit: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62181}
parent 52a4e49c
......@@ -71,7 +71,8 @@ function DefineLoadVar() {
'var x;' +
'function ' + name + '() {' +
' return x;' +
'};';
'};' +
(cfg.optimize ? '%PrepareFunctionForOptimization(' + name + ');' : '');
return Realm.eval(test_realm, AddStrict(code, cfg));
}
......@@ -90,7 +91,8 @@ function DefineStoreVar() {
'function ' + name + '(v) {' +
// ' %DebugPrint(g);' +
' return x = v;' +
'};';
'};' +
(cfg.optimize ? '%PrepareFunctionForOptimization(' + name + ');' : '');
return Realm.eval(test_realm, AddStrict(code, cfg));
}
......
......@@ -33,6 +33,7 @@
function optimized() {
return unoptimized.apply(null, arguments);
}
%PrepareFunctionForOptimization(optimized);
// It's not crucial that this is unoptimized.
function unoptimized() {
......
......@@ -42,6 +42,7 @@ function Y(x) {
}
var y = Y(X());
%PrepareFunctionForOptimization(y);
for (var i = 0; i < 5; i++) {
assertTrue(y("foo"));
......
......@@ -33,7 +33,8 @@
function f(x) {
return [x][0];
}
};
%PrepareFunctionForOptimization(f);
// Test data element on prototype.
Object.prototype[0] = 23;
......@@ -47,6 +48,7 @@ assertSame(3, f(3));
Object.prototype.__defineGetter__(0, function() { throw Error(); });
assertSame(4, f(4));
assertSame(5, f(5));
%PrepareFunctionForOptimization(f);
%OptimizeFunctionOnNextCall(f);
assertSame(6, f(6));
%DeoptimizeFunction(f);
......@@ -57,7 +59,8 @@ assertSame(6, f(6));
function g(x, y) {
var o = { foo:x, 0:y };
return o.foo + o[0];
}
};
%PrepareFunctionForOptimization(g);
// Test data property and element on prototype.
Object.prototype[0] = 23;
......@@ -73,6 +76,7 @@ Object.prototype.__defineGetter__(0, function() { throw Error(); });
Object.prototype.__defineGetter__('foo', function() { throw Error(); });
assertSame(3, g(1, 2));
assertSame(5, g(2, 3));
%PrepareFunctionForOptimization(g);
%OptimizeFunctionOnNextCall(g);
assertSame(7, g(3, 4));
%DeoptimizeFunction(g);
......@@ -43,6 +43,7 @@ function f() {
}
var o = f();
%PrepareFunctionForOptimization(o.m);
assertEquals('hest', o.m());
assertEquals('hest', o.m());
assertEquals('hest', o.m());
......
......@@ -60,6 +60,7 @@ function baz() {
assertEquals(288, b.y);
}
%PrepareFunctionForOptimization(Foo.prototype.bar);
baz();
baz();
%OptimizeFunctionOnNextCall(Foo.prototype.bar);
......
......@@ -53,6 +53,7 @@ function test() {
;
}
%PrepareFunctionForOptimization(test);
eq({}, {});
eq({}, {});
eq(1, 1);
......@@ -60,6 +61,7 @@ eq(1, 1);
test();
%OptimizeFunctionOnNextCall(test);
test();
%PrepareFunctionForOptimization(test);
%OptimizeFunctionOnNextCall(test);
// Second compilation should have noticed that LICM wasn't a good idea, and now
// function should no longer deopt when called.
......
......@@ -38,6 +38,7 @@ var functions = [
for (var i = 0; i < 5; ++i) {
for (var j in functions) {
%PrepareFunctionForOptimization(functions[j]);
print(functions[i])
assertThrows(functions[j], TypeError)
}
......
......@@ -38,8 +38,9 @@ var obj = {
a[d].apply(e[d], arguments)
}
}
}
};
%PrepareFunctionForOptimization(obj.foo);
obj.foo(1, 2, 3, 4);
obj.foo(1, 2, 3, 4);
%OptimizeFunctionOnNextCall(obj.foo);
......
......@@ -18,8 +18,9 @@ var outer = new Outer(inner);
Outer.prototype.boom = function() {
return this.inner.property;
}
};
%PrepareFunctionForOptimization(Outer.prototype.boom);
assertEquals("OK", outer.boom());
assertEquals("OK", outer.boom());
%OptimizeFunctionOnNextCall(Outer.prototype.boom);
......
......@@ -25,6 +25,7 @@ function check(x, value, type) {
}
var o = construct(receiver);
%PrepareFunctionForOptimization(o.bar);
check(o.bar.call(123), Object(123), Number);
check(o.bar.call("a"), Object("a"), String);
check(o.bar.call(undefined), this, Object);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment