mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-01 14:45:29 +00:00
Bug 799185 part 4 - Add tests for ReconstructPCStack. r=the-toad
This commit is contained in:
parent
81416a9d3f
commit
c2caba3ae9
14
js/src/jit-test/tests/ion/bug799185-1.js
Normal file
14
js/src/jit-test/tests/ion/bug799185-1.js
Normal file
@ -0,0 +1,14 @@
|
||||
options('strict')
|
||||
f = (function() {
|
||||
for (var z = 0; z < 9; ++z) {
|
||||
x = z
|
||||
}
|
||||
try {
|
||||
i
|
||||
} catch (x if null) {
|
||||
let e
|
||||
} catch (l) {
|
||||
x.m
|
||||
}
|
||||
})
|
||||
for (a in f()) {}
|
51
js/src/jit-test/tests/ion/bug799185-2.js
Normal file
51
js/src/jit-test/tests/ion/bug799185-2.js
Normal file
@ -0,0 +1,51 @@
|
||||
function test(aLauncher) {
|
||||
var result = null;
|
||||
|
||||
let prefs = 0;
|
||||
let bundle = 1;
|
||||
|
||||
if (!bundle) {
|
||||
// Check to see if the user wishes to auto save to the default download
|
||||
// folder without prompting. Note that preference might not be set.
|
||||
let autodownload = false;
|
||||
try {
|
||||
autodownload = !!autodownload;
|
||||
} catch (e) { }
|
||||
|
||||
if (autodownload) {
|
||||
// Retrieve the user's default download directory
|
||||
let dnldMgr = 2;
|
||||
let defaultFolder = 3;
|
||||
|
||||
try {
|
||||
result = 42;
|
||||
}
|
||||
catch (ex) {
|
||||
if (result == 12) {
|
||||
let prompter = 4;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Check to make sure we have a valid directory, otherwise, prompt
|
||||
if (result)
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
// Use file picker to show dialog.
|
||||
var picker = 0;
|
||||
if (picker) {
|
||||
// aSuggestedFileExtension includes the period, so strip it
|
||||
picker = 1;
|
||||
}
|
||||
else {
|
||||
try {
|
||||
picker = aLauncher.MIMEInfo.primaryExtension;
|
||||
}
|
||||
catch (ex) { }
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
test({});
|
9
js/src/jit-test/tests/ion/bug799185-3.js
Normal file
9
js/src/jit-test/tests/ion/bug799185-3.js
Normal file
@ -0,0 +1,9 @@
|
||||
// |jit-test| error: TypeError
|
||||
function processNode(self) {
|
||||
try {
|
||||
if (self) return;
|
||||
undefined.z;
|
||||
} finally {
|
||||
}
|
||||
};
|
||||
processNode();
|
9
js/src/jit-test/tests/ion/bug799185-4.js
Normal file
9
js/src/jit-test/tests/ion/bug799185-4.js
Normal file
@ -0,0 +1,9 @@
|
||||
function foo(aObject)
|
||||
{
|
||||
try { }
|
||||
catch (ex if (ex.name == "TypeError")) { }
|
||||
try { Object.getPrototypeOf(aObject); }
|
||||
catch (ex) { }
|
||||
}
|
||||
|
||||
foo(true);
|
19
js/src/jit-test/tests/ion/bug799185-5.js
Normal file
19
js/src/jit-test/tests/ion/bug799185-5.js
Normal file
@ -0,0 +1,19 @@
|
||||
function foo(aObject)
|
||||
{
|
||||
try {
|
||||
try {
|
||||
if (!aObject)
|
||||
return;
|
||||
}
|
||||
catch (ex if (ex.name == "TypeError")) { }
|
||||
finally {
|
||||
}
|
||||
undefined.x;
|
||||
}
|
||||
catch (ex if (ex.name == "TypeError")) { }
|
||||
catch (ex if (ex.name == "TypeError")) { }
|
||||
finally {
|
||||
}
|
||||
}
|
||||
|
||||
foo(true);
|
19
js/src/jit-test/tests/ion/bug799185-6.js
Normal file
19
js/src/jit-test/tests/ion/bug799185-6.js
Normal file
@ -0,0 +1,19 @@
|
||||
function f(a, b, c) {
|
||||
while (a) {
|
||||
let x;
|
||||
if (b) {
|
||||
if (c) {
|
||||
d();
|
||||
break; // hidden LEAVEBLOCK, then GOTO
|
||||
}
|
||||
break; // another hidden LEAVEBLOCK, then GOTO
|
||||
}
|
||||
}
|
||||
null.x;
|
||||
}
|
||||
|
||||
try {
|
||||
f();
|
||||
} catch (x) {
|
||||
;
|
||||
}
|
73
js/src/jit-test/tests/ion/bug799185-7.js
Normal file
73
js/src/jit-test/tests/ion/bug799185-7.js
Normal file
@ -0,0 +1,73 @@
|
||||
var y = undefined;
|
||||
|
||||
try {} catch (x) {
|
||||
try {} catch (x) {
|
||||
try {} catch (x) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {} catch (x if y) {
|
||||
try {} catch (x if y) {
|
||||
try {} catch (x if y) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
while (false) {
|
||||
try {} catch ({x,y} if x) {
|
||||
try {} catch ({a,b,c,d} if a) {
|
||||
if (b) break;
|
||||
if (c) continue;
|
||||
}
|
||||
} finally {}
|
||||
}
|
||||
|
||||
Label1:
|
||||
for (let foo = 0; foo < 0; foo++) {
|
||||
Label2:
|
||||
for (let bar = 0; bar < 0; bar++) {
|
||||
if (foo) {
|
||||
if (bar)
|
||||
break Label2;
|
||||
continue Label2;
|
||||
} else {
|
||||
if (bar)
|
||||
break Label1;
|
||||
continue Label1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Label3:
|
||||
for (let foo = 0; foo < 0; foo++) {
|
||||
Label4:
|
||||
for (let bar = 0; bar < 0; bar++) {
|
||||
if (foo) {
|
||||
if (bar)
|
||||
continue Label4;
|
||||
break Label4;
|
||||
} else {
|
||||
if (bar)
|
||||
continue Label3;
|
||||
break Label3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (42) {
|
||||
default:
|
||||
try {} catch (x) {
|
||||
if (x + 1) {
|
||||
if (x)
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
try {
|
||||
null.x;
|
||||
} catch (x) {
|
||||
}
|
19
js/src/jit-test/tests/ion/bug799185-8.js
Normal file
19
js/src/jit-test/tests/ion/bug799185-8.js
Normal file
@ -0,0 +1,19 @@
|
||||
// |jit-test| error: TypeError
|
||||
function testBitOrInconvertibleObjectInconvertibleObject() {
|
||||
var o1 = {};
|
||||
var count2 = 0;
|
||||
function toString2() {
|
||||
++count2;
|
||||
if (count2 == 95) return {};
|
||||
}
|
||||
var o2 = { toString: toString2 };
|
||||
try {
|
||||
for (var i = 0; i < 100; i++)
|
||||
var q = o1 | o2;
|
||||
} catch (e) {
|
||||
if (i !== 94)
|
||||
return gc();
|
||||
this.bar.foo ^ this
|
||||
}
|
||||
}
|
||||
testBitOrInconvertibleObjectInconvertibleObject()
|
12
js/src/jit-test/tests/ion/bug799185-9.js
Normal file
12
js/src/jit-test/tests/ion/bug799185-9.js
Normal file
@ -0,0 +1,12 @@
|
||||
|
||||
function f() {
|
||||
try {} catch (x) {
|
||||
return;
|
||||
} finally {
|
||||
null.x;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
f();
|
||||
} catch (x) {}
|
Loading…
Reference in New Issue
Block a user