mirror of
https://github.com/servo/servo.git
synced 2025-08-15 18:35:33 +01:00
Update web-platform-tests to revision b'99458bfd6e43f5842a4a510cc5adfd8185e5c64c'
This commit is contained in:
parent
eac515e4ab
commit
ec97b29ff1
334 changed files with 5735 additions and 3175 deletions
52
tests/wpt/web-platform-tests/common/gc.js
Normal file
52
tests/wpt/web-platform-tests/common/gc.js
Normal file
|
@ -0,0 +1,52 @@
|
|||
/**
|
||||
* Does a best-effort attempt at invoking garbage collection. Attempts to use
|
||||
* the standardized `TestUtils.gc()` function, but falls back to other
|
||||
* environment-specific nonstandard functions, with a final result of just
|
||||
* creating a lot of garbage (in which case you will get a console warning).
|
||||
*
|
||||
* This should generally only be used to attempt to trigger bugs and crashes
|
||||
* inside tests, i.e. cases where if garbage collection happened, then this
|
||||
* should not trigger some misbehavior. You cannot rely on garbage collection
|
||||
* successfully trigger, or that any particular unreachable object will be
|
||||
* collected.
|
||||
*
|
||||
* @returns {Promise<undefined>} A promise you should await to ensure garbage
|
||||
* collection has had a chance to complete.
|
||||
*/
|
||||
self.garbageCollect = async () => {
|
||||
// https://testutils.spec.whatwg.org/#the-testutils-namespace
|
||||
if (self.TestUtils?.gc) {
|
||||
return TestUtils.gc();
|
||||
}
|
||||
|
||||
// Use --expose_gc for V8 (and Node.js)
|
||||
// to pass this flag at chrome launch use: --js-flags="--expose-gc"
|
||||
// Exposed in SpiderMonkey shell as well
|
||||
if (self.gc) {
|
||||
return self.gc();
|
||||
}
|
||||
|
||||
// Present in some WebKit development environments
|
||||
if (self.GCController) {
|
||||
return GCController.collect();
|
||||
}
|
||||
|
||||
console.warn(
|
||||
'Tests are running without the ability to do manual garbage collection. ' +
|
||||
'They will still work, but coverage will be suboptimal.');
|
||||
|
||||
for (var i = 0; i < 1000; i++) {
|
||||
gcRec(10);
|
||||
}
|
||||
|
||||
function gcRec(n) {
|
||||
if (n < 1) {
|
||||
return {};
|
||||
}
|
||||
|
||||
let temp = { i: "ab" + i + i / 100000 };
|
||||
temp += "foo";
|
||||
|
||||
gcRec(n - 1);
|
||||
}
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue