Bug 847119. Fix the "did the DOM call throw?" test in IonMonkey to check the return value correctly. r=jandem

This commit is contained in:
Boris Zbarsky 2013-03-05 13:41:24 -05:00
parent 8ce09edad9
commit 22feb10e39
3 changed files with 60 additions and 3 deletions

View File

@ -66,6 +66,7 @@ MOCHITEST_FILES := \
test_namedNoIndexed.html \
test_bug759621.html \
test_queryInterface.html \
test_exceptionThrowing.html \
$(NULL)
MOCHITEST_CHROME_FILES = \

View File

@ -0,0 +1,56 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=847119
-->
<head>
<meta charset="utf-8">
<title>Test for Bug 847119</title>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
<script type="application/javascript">
/** Test for Bug 847119 **/
var xhr = new XMLHttpRequest();
var domthrows = function() { xhr.open(); }
var count = 20000;
function f() {
var k = 0;
for (var j = 0; j < count; ++j) {
try { domthrows(); } catch(e) { ++k; }
}
return k;
}
function g() { return count; }
is(f(), count, "Should get count exceptions");
for (var h of [f, g]) {
try { is(h(), count, "Should get count exceptions here too"); } catch (e) {}
}
ok(true, "We should get here");
var domthrows = function() { xhr.withCredentials = false; }
xhr.open("GET", "");
xhr.send();
is(f(), count, "Should get count exceptions from getter");
for (var h of [f, g]) {
try { is(h(), count, "Should get count exceptions from getter here too"); } catch (e) {}
}
ok(true, "We should get here too");
</script>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=847119">Mozilla Bug 847119</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
</pre>
</body>
</html>

View File

@ -1135,7 +1135,7 @@ CodeGenerator::visitCallDOMNative(LCallDOMNative *call)
} else {
// Test for failure.
Label success, exception;
masm.branchTest32(Assembler::Zero, ReturnReg, ReturnReg, &exception);
masm.branchTestBool(Assembler::Zero, ReturnReg, ReturnReg, &exception);
// Load the outparam vp[0] into output register(s).
masm.loadValue(Address(StackPointer, IonDOMMethodExitFrameLayout::offsetOfResult()),
@ -5543,7 +5543,7 @@ CodeGenerator::visitGetDOMProperty(LGetDOMProperty *ins)
JSReturnOperand);
} else {
Label success, exception;
masm.branchTest32(Assembler::Zero, ReturnReg, ReturnReg, &exception);
masm.branchTestBool(Assembler::Zero, ReturnReg, ReturnReg, &exception);
masm.loadValue(Address(StackPointer, IonDOMExitFrameLayout::offsetOfResult()),
JSReturnOperand);
@ -5605,7 +5605,7 @@ CodeGenerator::visitSetDOMProperty(LSetDOMProperty *ins)
masm.callWithABI(JS_FUNC_TO_DATA_PTR(void *, ins->mir()->fun()));
Label success, exception;
masm.branchTest32(Assembler::Zero, ReturnReg, ReturnReg, &exception);
masm.branchTestBool(Assembler::Zero, ReturnReg, ReturnReg, &exception);
masm.jump(&success);