зеркало из https://github.com/mozilla/gecko-dev.git
JavaScript Test Library - modifications to tests from Igor Bukanov, bug 347739
This commit is contained in:
Родитель
3e78aa2e92
Коммит
4f2f7bdffb
|
@ -38,22 +38,36 @@
|
|||
var bug = 340526;
|
||||
var summary = 'Iterators: cross-referenced objects with close handler can ' +
|
||||
'delay close handler execution';
|
||||
var actual = 'No Crash';
|
||||
var expect = 'No Crash';
|
||||
|
||||
printBugNumber (bug);
|
||||
printStatus (summary);
|
||||
|
||||
try
|
||||
var close_count = 0;
|
||||
|
||||
function gen()
|
||||
{
|
||||
var iter = (function() { yield 0; })();
|
||||
iter.close = function() { new Object(); }
|
||||
iter = null;
|
||||
gc();
|
||||
try {
|
||||
yield 0;
|
||||
} finally {
|
||||
++close_count;
|
||||
}
|
||||
}
|
||||
catch(ex)
|
||||
{
|
||||
writeLineToLog(ex + '');
|
||||
}
|
||||
|
||||
|
||||
var iter1 = gen();
|
||||
var iter2 = gen();
|
||||
|
||||
iter1.another = iter2;
|
||||
iter2.another = iter1;
|
||||
|
||||
iter1.next();
|
||||
iter2.next();
|
||||
|
||||
iter1 = null;
|
||||
iter2 = null;
|
||||
|
||||
gc();
|
||||
|
||||
var expect = 2;
|
||||
var actual = close_count;
|
||||
|
||||
reportCompare(expect, actual, summary);
|
||||
|
|
|
@ -44,8 +44,21 @@ var expect = 'No Crash';
|
|||
printBugNumber (bug);
|
||||
printStatus (summary);
|
||||
|
||||
var iter = (function() { yield 0; })();
|
||||
iter.close = function() { return []; }
|
||||
var someGlobal;
|
||||
|
||||
function generator()
|
||||
{
|
||||
try {
|
||||
yield 0;
|
||||
} finally {
|
||||
someGlobal = [];
|
||||
}
|
||||
}
|
||||
|
||||
var iter = generator();
|
||||
iter.next();
|
||||
iter = null;
|
||||
|
||||
gc();
|
||||
|
||||
reportCompare(expect, actual, summary);
|
||||
|
|
|
@ -44,9 +44,16 @@ var expect = 'No Crash';
|
|||
printBugNumber (bug);
|
||||
printStatus (summary);
|
||||
|
||||
function gen(i) { yield i; }
|
||||
function gen(i) {
|
||||
try {
|
||||
yield i;
|
||||
} finally {
|
||||
name_that_does_not_exist_in_the_scope_chain = 1;
|
||||
}
|
||||
}
|
||||
|
||||
var iter = gen(1);
|
||||
iter.close = function() { name_that_does_not_exist_in_the_scope_chain = 1; }
|
||||
iter.next();
|
||||
iter = null;
|
||||
gc();
|
||||
|
||||
|
|
|
@ -51,13 +51,18 @@ function test()
|
|||
printBugNumber (bug);
|
||||
printStatus (summary);
|
||||
|
||||
|
||||
var globalToPokeGC = {};
|
||||
|
||||
function make_iterator()
|
||||
{
|
||||
var iter = (function() { yield 0; })();
|
||||
iter.close = make_iterator;
|
||||
function generator() {
|
||||
try {
|
||||
yield 0;
|
||||
} finally {
|
||||
make_iterator();
|
||||
}
|
||||
}
|
||||
generator().next();
|
||||
globalToPokeGC = {};
|
||||
if (typeof alert != 'undefined')
|
||||
{
|
||||
|
|
Загрузка…
Ссылка в новой задаче