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

[cleanup] Add missing %PrepareFunctionForOptimize in mjsunit tests

Bug: v8:8801,v8:8394,v8:9183
Change-Id: I5ceaf731a1b2720f086e6791fe08caaaa55de030
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1662568
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Mythri Alle <mythria@chromium.org>
Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
Auto-Submit: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62224}
parent d22884ef
......@@ -116,6 +116,7 @@
args.push(i);
if (i%10 == 0) %OptimizeFunctionOnNextCall(sum1);
assertEquals(i*(i+1)/2, sum1(...args));
if (i%10 == 0) %PrepareFunctionForOptimization(sum1);
}
})();
......@@ -136,6 +137,7 @@
args.push(i);
if (i%10 == 0) %OptimizeFunctionOnNextCall(sum2);
assertEquals(i*(i+1)/2, sum2(...args));
if (i%10 == 0) %PrepareFunctionForOptimization(sum2);
}
})();
......@@ -156,6 +158,7 @@
args.push(i);
if (i%10 == 0) %OptimizeFunctionOnNextCall(sum3);
assertEquals(i*(i+1)/2, sum3(...args));
if (i%10 == 0) %PrepareFunctionForOptimization(sum3);
}
})();
......@@ -176,6 +179,7 @@
args.push(i);
if (i%10 == 0) %OptimizeFunctionOnNextCall(sum4);
assertEquals(i*(i+1)/2-1, sum4(...args));
if (i%10 == 0) %PrepareFunctionForOptimization(sum4);
}
})();
......@@ -192,5 +196,6 @@
args.push(i);
if (i%10 == 0) %OptimizeFunctionOnNextCall(read);
assertEquals(i, read(...args));
if (i%10 == 0) %PrepareFunctionForOptimization(read);
}
})();
......@@ -10,6 +10,7 @@ function f() {
return non_const_true || (f() = this);
}
%PrepareFunctionForOptimization(f);
assertTrue(f());
assertTrue(f());
%OptimizeFunctionOnNextCall(f);
......
......@@ -15,6 +15,7 @@ function f( ) {
d = 357;
return {foo: b};
}
%PrepareFunctionForOptimization(f);
f();
f();
%OptimizeFunctionOnNextCall(f);
......@@ -27,6 +28,7 @@ function g(obj) {
return obj.foo.length;
}
%PrepareFunctionForOptimization(f);
g(dummy);
g(dummy);
%OptimizeFunctionOnNextCall(g);
......
......@@ -16,6 +16,7 @@ function foo(a) {
}
}
%PrepareFunctionForOptimization(foo);
foo([1,2]);
foo([2,3]);
%OptimizeFunctionOnNextCall(foo);
......
......@@ -19,5 +19,6 @@ var f = (function(v) {
};
})(get_thrower()).fun;
%PrepareFunctionForOptimization(f);
%OptimizeFunctionOnNextCall(f);
f();
......@@ -5,6 +5,7 @@
// Flags: --allow-natives-syntax
function check(f, result) {
%PrepareFunctionForOptimization(f);
%OptimizeFunctionOnNextCall(f);
assertEquals(result, f());
}
......
......@@ -22,5 +22,6 @@ function run_close_to_stack_limit(f) {
}
var boom = module().f;
%PrepareFunctionForOptimization(boom);
%OptimizeFunctionOnNextCall(boom)
run_close_to_stack_limit(boom);
......@@ -20,6 +20,7 @@ var f2 = (function() {
function f(a) { return a || g(); }
return f;
})();
%PrepareFunctionForOptimization(f2);
assertTrue(f2(true));
%OptimizeFunctionOnNextCall(f2);
assertTrue(f2(true));
......@@ -16,5 +16,6 @@ var boom = (function(stdlib, foreign, heap) {
}
return foo
})(this, 0, new ArrayBuffer(256));
%PrepareFunctionForOptimization(boom);
%OptimizeFunctionOnNextCall(boom);
boom(0, 0x1000);
......@@ -9,10 +9,12 @@ var p = {foo: 1.5}
function g(x) { return x.foo === +x.foo; }
%PrepareFunctionForOptimization(g);
assertEquals(false, g(o));
assertEquals(false, g(o));
%OptimizeFunctionOnNextCall(g);
assertEquals(false, g(o)); // Still fine here.
assertEquals(true, g(p));
%PrepareFunctionForOptimization(g);
%OptimizeFunctionOnNextCall(g);
assertEquals(false, g(o)); // Confused by type feedback.
......@@ -12,6 +12,7 @@ function f() {
}
}
%PrepareFunctionForOptimization(f);
f();
f();
%OptimizeFunctionOnNextCall(f);
......
......@@ -11,6 +11,7 @@ class Subclass extends Base {
super();
}
}
%PrepareFunctionForOptimization(Subclass);
new Subclass();
new Subclass();
%OptimizeFunctionOnNextCall(Subclass);
......
......@@ -10,5 +10,6 @@ function f(obj) {
return key === undefined;
}
%PrepareFunctionForOptimization(f);
%OptimizeFunctionOnNextCall(f);
assertFalse(f({ foo:0 }));
......@@ -6,6 +6,7 @@
function foo(o) { return %_ToLength(o.length); }
%PrepareFunctionForOptimization(foo);
foo(new Array(4));
foo(new Array(Math.pow(2, 32) - 1));
foo({length: 10});
......
......@@ -14,11 +14,13 @@ function Check() {
n.xyz = 0x826852f4;
}
%PrepareFunctionForOptimization(Ctor);
Ctor();
Ctor();
%OptimizeFunctionOnNextCall(Ctor);
Ctor();
%PrepareFunctionForOptimization(Check);
Check();
Check();
%OptimizeFunctionOnNextCall(Check);
......
......@@ -15,11 +15,13 @@ function Check() {
n.xyz = 0x826852f4;
}
%PrepareFunctionForOptimization(Ctor);
Ctor();
Ctor();
%OptimizeFunctionOnNextCall(Ctor);
Ctor();
%PrepareFunctionForOptimization(Check);
Check();
Check();
%OptimizeFunctionOnNextCall(Check);
......
......@@ -17,6 +17,7 @@ function h(a) {
function boom() { return g(1) }
%PrepareFunctionForOptimization(boom);
assertEquals(1, h(1));
assertEquals(2, boom());
assertEquals(3, boom());
......
......@@ -23,6 +23,7 @@ function emit_f(size) {
// a single instruction's immediate field (2^12).
var kLength = 701;
emit_f(kLength);
%PrepareFunctionForOptimization(f);
f(1);
f(1);
%OptimizeFunctionOnNextCall(f);
......
......@@ -11,6 +11,7 @@ function foo(a) {
this.x = 0;
delete x;
%PrepareFunctionForOptimization(foo);
foo();
foo();
%OptimizeFunctionOnNextCall(foo);
......@@ -19,6 +20,7 @@ assertEquals(undefined, v);
Object.freeze(this);
%PrepareFunctionForOptimization(foo);
foo(4);
foo(5);
%OptimizeFunctionOnNextCall(foo);
......
......@@ -5,6 +5,7 @@
// Flags: --allow-natives-syntax
eval('function f(a) { return [' + new Array(1 << 17) + ',a] }');
%PrepareFunctionForOptimization(f);
assertEquals(23, f(23)[1 << 17]);
assertEquals(42, f(42)[1 << 17]);
%OptimizeFunctionOnNextCall(f);
......
......@@ -8,6 +8,7 @@ function f() {
for (var i of [NaN].keys());
}
%PrepareFunctionForOptimization(f);
f();
%OptimizeFunctionOnNextCall(f);
f();
......@@ -7,6 +7,8 @@
// Generate a function {f} containing a large array literal of doubles.
eval("function f() { return [" + String("0.1,").repeat(65535) + "] }");
%PrepareFunctionForOptimization(f);
// Running the function once will initialize the boilerplate.
assertEquals(65535, f().length);
......
......@@ -14,5 +14,6 @@ function f() {
return g(-1);
}
%PrepareFunctionForOptimization(f);
%OptimizeFunctionOnNextCall(f);
assertEquals(4294967295, f());
......@@ -9,6 +9,7 @@ function foo() {
%_DeoptimizeNow();
return a[2];
}
%PrepareFunctionForOptimization(foo);
assertSame(undefined, foo());
assertSame(undefined, foo());
%OptimizeFunctionOnNextCall(foo)
......
......@@ -8,6 +8,7 @@ class C {}
class D extends C { constructor() { super(...unresolved, 75) } }
D.__proto__ = null;
%PrepareFunctionForOptimization(D);
assertThrows(() => new D(), TypeError);
assertThrows(() => new D(), TypeError);
%OptimizeFunctionOnNextCall(D);
......
......@@ -27,6 +27,7 @@
var obj = {};
obj.load_boom = smi_arr;
%PrepareFunctionForOptimization(do_keyed_load);
do_keyed_load(arrs);
do_keyed_load(arrs);
%OptimizeFunctionOnNextCall(do_keyed_load);
......@@ -57,6 +58,7 @@
var obj = {};
obj.store_boom = smi_arr;
%PrepareFunctionForOptimization(do_keyed_store);
do_keyed_store(arrs);
do_keyed_store(arrs);
%OptimizeFunctionOnNextCall(do_keyed_store);
......
......@@ -31,6 +31,7 @@ var observer = new Proxy(A, {
}
});
%PrepareFunctionForOptimization(B);
Reflect.construct(B, [], observer);
Reflect.construct(B, [], observer);
%OptimizeFunctionOnNextCall(B);
......
......@@ -11,6 +11,7 @@
}
src += 'c) { return a + c })';
var f = eval(src);
%PrepareFunctionForOptimization(f);
assertEquals(NaN, f(1));
assertEquals(NaN, f(2));
%OptimizeFunctionOnNextCall(f);
......
......@@ -8,6 +8,7 @@ function __f_1() {
function __f_2() {
Array.prototype.__proto__ = { 77e4 : null };
}
%PrepareFunctionForOptimization(__f_2);
__f_2();
%OptimizeFunctionOnNextCall(__f_2);
__f_2();
......
......@@ -7,6 +7,7 @@
(function TestGeneratorMaterialization() {
function* f([x]) { yield x }
// No warm-up of {f} to trigger soft deopt.
%PrepareFunctionForOptimization(f);
%OptimizeFunctionOnNextCall(f);
var gen = f([23]);
assertEquals("[object Generator]", gen.toString());
......@@ -22,6 +23,7 @@
return gen;
}
function h() { f() }
%PrepareFunctionForOptimization(h);
// Enough warm-up to make {p} an in-object property.
for (var i = 0; i < 100; ++i) { g(); h(); }
%OptimizeFunctionOnNextCall(h);
......
......@@ -8,6 +8,7 @@ class Base {}
class Derived extends Base {
constructor() { super(); }
}
%PrepareFunctionForOptimization(Derived);
var proxy = new Proxy(Base, { get() {} });
assertDoesNotThrow(() => Reflect.construct(Derived, []));
assertThrows(() => Reflect.construct(Derived, [], proxy), TypeError);
......
......@@ -7,6 +7,7 @@
const A = class A {}
function test(foo) {
%PrepareFunctionForOptimization(foo);
assertThrows(foo);
assertThrows(foo);
%OptimizeFunctionOnNextCall(foo);
......
......@@ -11,6 +11,7 @@ function f() {
%_DeoptimizeNow();
return o.length;
}
%PrepareFunctionForOptimization(f);
assertEquals(1, f());
assertEquals(1, f());
%OptimizeFunctionOnNextCall(f);
......
......@@ -10,6 +10,7 @@ function f() {
local += 'abcdefghijkl' + (0 + global);
global += 'abcdefghijkl';
}
%PrepareFunctionForOptimization(f);
f();
%OptimizeFunctionOnNextCall(f);
f();
......@@ -26,6 +26,7 @@ function __getRandomProperty(obj, seed) {
};
return __v_59904.filter(__v_59909);
};
%PrepareFunctionForOptimization(__v_59906);
print(__v_59906());
__v_59904[__getRandomProperty(__v_59904, 366855)] = this, gc();
print(__v_59906());
......
......@@ -19,6 +19,7 @@ class Derived extends Base {
// Feed a bound function as new.target
// to the profiler, so HeapObjectMatcher
// can find it.
%PrepareFunctionForOptimization(Derived);
Reflect.construct(Derived, [], Object.bind());
%OptimizeFunctionOnNextCall(Derived);
new Derived();
......@@ -17,6 +17,7 @@ function foo() {
try { undefined[0] = bar(); } catch (e) { }
Math.min(bar(), bar(), bar());
}
%PrepareFunctionForOptimization(foo);
foo();
foo();
%OptimizeFunctionOnNextCall(foo);
......
......@@ -18,6 +18,7 @@ bar(0.1);
return bar(x | -1) == 4294967295;
}
%PrepareFunctionForOptimization(foo);
assertFalse(foo(1));
assertFalse(foo(0));
%OptimizeFunctionOnNextCall(foo);
......@@ -35,6 +36,7 @@ bar(0.1);
makeFoo(0); // Defeat the function context specialization.
const foo = makeFoo(1);
%PrepareFunctionForOptimization(foo);
assertFalse(foo(1));
assertFalse(foo(0));
%OptimizeFunctionOnNextCall(foo);
......
......@@ -21,6 +21,7 @@ a3.fill(3.3);
var a4 = [1.1];
%PrepareFunctionForOptimization(fun);
for (let i = 0; i < 3; i++) fun(...a4);
%OptimizeFunctionOnNextCall(fun);
fun(...a4);
......
......@@ -14,6 +14,7 @@ function opt(){
finally{}
}
}
%PrepareFunctionForOptimization(opt);
opt();
%OptimizeFunctionOnNextCall(opt);
opt();
......@@ -5,6 +5,7 @@
// Flags: --allow-natives-syntax
function test(func, expect) {
%PrepareFunctionForOptimization(func);
assertTrue(func() == expect);
%OptimizeFunctionOnNextCall(func);
assertTrue(func() == expect);
......@@ -50,6 +51,7 @@ test(check_v4, true);
function testIn(index, array) {
return index in array;
}
%PrepareFunctionForOptimization(testIn);
let a = [];
a.__proto__ = [0,1,2];
......@@ -65,6 +67,7 @@ test(check_v4, true);
%ClearFunctionFeedback(testIn);
%DeoptimizeFunction(testIn);
%PrepareFunctionForOptimization(testIn);
// First load will set IC to Load handle with allow hole to undefined conversion false.
assertTrue(testIn(0, a));
......@@ -75,6 +78,7 @@ test(check_v4, true);
// Repeat the same testing for access out-of-bounds of the array, but in bounds of it's prototype.
%ClearFunctionFeedback(testIn);
%DeoptimizeFunction(testIn);
%PrepareFunctionForOptimization(testIn);
assertTrue(testIn(2, a));
assertTrue(testIn(2, a));
......@@ -83,6 +87,7 @@ test(check_v4, true);
%ClearFunctionFeedback(testIn);
%DeoptimizeFunction(testIn);
%PrepareFunctionForOptimization(testIn);
assertTrue(testIn(2, a));
%OptimizeFunctionOnNextCall(testIn);
......
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