mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1030446 - Change asm.js tests to use setJitCompilerOption instead of looping a bunch (r=bbouvier)
This commit is contained in:
parent
63f07dc84b
commit
7973d4de93
@ -98,7 +98,9 @@ assertThrowsValue(function() { f(8,2.4) }, 2.4+36);
|
|||||||
assertEq(asmLink(asmCompile('glob', 'imp', USE_ASM + 'var identity=imp.identity; function g(x) { x=+x; return +identity(x) } return g'), null, imp)(13.37), 13.37);
|
assertEq(asmLink(asmCompile('glob', 'imp', USE_ASM + 'var identity=imp.identity; function g(x) { x=+x; return +identity(x) } return g'), null, imp)(13.37), 13.37);
|
||||||
|
|
||||||
// Test asm.js => ion paths
|
// Test asm.js => ion paths
|
||||||
setJitCompilerOption("ion.usecount.trigger", 20);
|
setJitCompilerOption("ion.usecount.trigger", 10);
|
||||||
|
setJitCompilerOption("baseline.usecount.trigger", 0);
|
||||||
|
setJitCompilerOption("offthread-compilation.enable", 0);
|
||||||
|
|
||||||
// In registers on x64 and ARM, on the stack for x86
|
// In registers on x64 and ARM, on the stack for x86
|
||||||
function ffiIntFew(a,b,c,d) { return d+1 }
|
function ffiIntFew(a,b,c,d) { return d+1 }
|
||||||
@ -109,32 +111,32 @@ for (var i = 0; i < 40; i++)
|
|||||||
// Stack and registers for x64 and ARM, stack for x86
|
// Stack and registers for x64 and ARM, stack for x86
|
||||||
function ffiIntMany(a,b,c,d,e,f,g,h,i,j) { return j+1 }
|
function ffiIntMany(a,b,c,d,e,f,g,h,i,j) { return j+1 }
|
||||||
var f = asmLink(asmCompile('glob', 'imp', USE_ASM + 'var ffi=imp.ffi; function f(i) { i=i|0; return ffi(i|0,(i+1)|0,(i+2)|0,(i+3)|0,(i+4)|0,(i+5)|0,(i+6)|0,(i+7)|0,(i+8)|0,(i+9)|0)|0 } return f'), null, {ffi:ffiIntMany});
|
var f = asmLink(asmCompile('glob', 'imp', USE_ASM + 'var ffi=imp.ffi; function f(i) { i=i|0; return ffi(i|0,(i+1)|0,(i+2)|0,(i+3)|0,(i+4)|0,(i+5)|0,(i+6)|0,(i+7)|0,(i+8)|0,(i+9)|0)|0 } return f'), null, {ffi:ffiIntMany});
|
||||||
for (var i = 0; i < 40; i++)
|
for (var i = 0; i < 15; i++)
|
||||||
assertEq(f(i), i+10);
|
assertEq(f(i), i+10);
|
||||||
|
|
||||||
// In registers on x64 and ARM, on the stack for x86
|
// In registers on x64 and ARM, on the stack for x86
|
||||||
function ffiDoubleFew(a,b,c,d) { return d+1 }
|
function ffiDoubleFew(a,b,c,d) { return d+1 }
|
||||||
var f = asmLink(asmCompile('glob', 'imp', USE_ASM + 'var ffi=imp.ffi; function f(i) { i=+i; return +ffi(i,i+1.0,i+2.0,i+3.0) } return f'), null, {ffi:ffiDoubleFew});
|
var f = asmLink(asmCompile('glob', 'imp', USE_ASM + 'var ffi=imp.ffi; function f(i) { i=+i; return +ffi(i,i+1.0,i+2.0,i+3.0) } return f'), null, {ffi:ffiDoubleFew});
|
||||||
for (var i = 0; i < 40; i++)
|
for (var i = 0; i < 15; i++)
|
||||||
assertEq(f(i), i+4);
|
assertEq(f(i), i+4);
|
||||||
|
|
||||||
// Stack and registers for x64 and ARM, stack for x86
|
// Stack and registers for x64 and ARM, stack for x86
|
||||||
function ffiDoubleMany(a,b,c,d,e,f,g,h,i,j) { return j+1 }
|
function ffiDoubleMany(a,b,c,d,e,f,g,h,i,j) { return j+1 }
|
||||||
var f = asmLink(asmCompile('glob', 'imp', USE_ASM + 'var ffi=imp.ffi; function f(i) { i=+i; return +ffi(i,i+1.0,i+2.0,i+3.0,i+4.0,i+5.0,i+6.0,i+7.0,i+8.0,i+9.0) } return f'), null, {ffi:ffiDoubleMany});
|
var f = asmLink(asmCompile('glob', 'imp', USE_ASM + 'var ffi=imp.ffi; function f(i) { i=+i; return +ffi(i,i+1.0,i+2.0,i+3.0,i+4.0,i+5.0,i+6.0,i+7.0,i+8.0,i+9.0) } return f'), null, {ffi:ffiDoubleMany});
|
||||||
for (var i = 0; i < 40; i++)
|
for (var i = 0; i < 15; i++)
|
||||||
assertEq(f(i), i+10);
|
assertEq(f(i), i+10);
|
||||||
|
|
||||||
// Test the throw path
|
// Test the throw path
|
||||||
function ffiThrow(n) { if (n == 38) throw 'yolo'; }
|
function ffiThrow(n) { if (n == 14) throw 'yolo'; }
|
||||||
var f = asmLink(asmCompile('glob', 'imp', USE_ASM + 'var ffi=imp.ffi; function f(i) { i=i|0; ffi(i >> 0); } return f'), null, {ffi:ffiThrow});
|
var f = asmLink(asmCompile('glob', 'imp', USE_ASM + 'var ffi=imp.ffi; function f(i) { i=i|0; ffi(i >> 0); } return f'), null, {ffi:ffiThrow});
|
||||||
var i = 0;
|
var i = 0;
|
||||||
try {
|
try {
|
||||||
for (; i < 40; i++)
|
for (; i < 15; i++)
|
||||||
f(i);
|
f(i);
|
||||||
throw 'assume unreachable';
|
throw 'assume unreachable';
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
assertEq(e, 'yolo');
|
assertEq(e, 'yolo');
|
||||||
assertEq(i, 38);
|
assertEq(i, 14);
|
||||||
}
|
}
|
||||||
|
|
||||||
// OOL conversion paths
|
// OOL conversion paths
|
||||||
|
@ -17,10 +17,14 @@ function dumpStack()
|
|||||||
stack = new Error().stack
|
stack = new Error().stack
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setJitCompilerOption("ion.usecount.trigger", 10);
|
||||||
|
setJitCompilerOption("baseline.usecount.trigger", 0);
|
||||||
|
setJitCompilerOption("offthread-compilation.enable", 0);
|
||||||
|
|
||||||
var callFFI = asmCompile('global', 'ffis', USE_ASM + "var ffi=ffis.ffi; function f() { return ffi()|0 } return f");
|
var callFFI = asmCompile('global', 'ffis', USE_ASM + "var ffi=ffis.ffi; function f() { return ffi()|0 } return f");
|
||||||
|
|
||||||
var f = asmLink(callFFI, null, {ffi:dumpStack});
|
var f = asmLink(callFFI, null, {ffi:dumpStack});
|
||||||
for (var i = 0; i < 5000; i++) {
|
for (var i = 0; i < 15; i++) {
|
||||||
stack = null;
|
stack = null;
|
||||||
f();
|
f();
|
||||||
matchStack(stack, ['dumpStack', 'f']);
|
matchStack(stack, ['dumpStack', 'f']);
|
||||||
@ -42,7 +46,7 @@ matchStack(stack, ["dumpStack", "f", "middle", "f"]);
|
|||||||
|
|
||||||
function returnStackDumper() { return { valueOf:function() { stack = new Error().stack } } }
|
function returnStackDumper() { return { valueOf:function() { stack = new Error().stack } } }
|
||||||
var f = asmLink(callFFI, null, {ffi:returnStackDumper});
|
var f = asmLink(callFFI, null, {ffi:returnStackDumper});
|
||||||
for (var i = 0; i < 5000; i++) {
|
for (var i = 0; i < 15; i++) {
|
||||||
stack = null;
|
stack = null;
|
||||||
f();
|
f();
|
||||||
matchStack(stack, ['valueOf', 'f']);
|
matchStack(stack, ['valueOf', 'f']);
|
||||||
|
Loading…
Reference in New Issue
Block a user