| Index: third_party/WebKit/LayoutTests/fast/harness/internals-observe-gc.html
|
| diff --git a/third_party/WebKit/LayoutTests/fast/harness/internals-observe-gc.html b/third_party/WebKit/LayoutTests/fast/harness/internals-observe-gc.html
|
| index 803497787766eaceb30d56b2883a973bc053b152..4fb4c4eb373ad04bb2be8b3427e0458037141958 100644
|
| --- a/third_party/WebKit/LayoutTests/fast/harness/internals-observe-gc.html
|
| +++ b/third_party/WebKit/LayoutTests/fast/harness/internals-observe-gc.html
|
| @@ -10,7 +10,11 @@ shouldBe('typeof window.internals.observeGC', '"function"',
|
| // "Generic Kid's Movie III": ... where nobody dies.
|
|
|
| var valueA = {};
|
| -observationA = internals.observeGC(valueA);
|
| +// Do not pass the object directly to observeGC function. This may
|
| +// remain live on this function's stack preventing GC from collecting
|
| +// it. Accessing the object inside an inner function will prevent any
|
| +// unneeded references on this function's stack.
|
| +observationA = internals.observeGC((() => {return valueA;})());
|
| gc();
|
| shouldBeFalse('observationA.wasCollected');
|
| // value ineligible for GC should not be flagged as collected
|
| @@ -20,7 +24,11 @@ observationA = null;
|
| // "Romeo and GCuliet": Romeo JavaScript finds G.uliet C.apulet and dies.
|
|
|
| var valueB = {};
|
| -observationB = internals.observeGC(valueB);
|
| +// Do not pass the object directly to observeGC function. This may
|
| +// remain live on this function's stack preventing GC from collecting
|
| +// it. Accessing the object inside an inner function will prevent any
|
| +// unneeded references on this function's stack.
|
| +observationB = internals.observeGC((() => {return valueB;})());
|
| valueB = null;
|
| gc();
|
| shouldBeTrue('observationB.wasCollected');
|
| @@ -31,7 +39,11 @@ observationB = null;
|
| // innocence. And a DOM node.
|
|
|
| var valueC = document.createElement('div');
|
| -observationC = internals.observeGC(valueC);
|
| +// Do not pass the object directly to observeGC function. This may
|
| +// remain live on this function's stack preventing GC from collecting
|
| +// it. Accessing the object inside an inner function will prevent any
|
| +// unneeded references on this function's stack.
|
| +observationC = internals.observeGC((() => {return valueC;})());
|
| valueC = null;
|
| gc();
|
| shouldBeTrue('observationC.wasCollected');
|
| @@ -40,13 +52,19 @@ observationC = null;
|
|
|
| // Now, movies that failed:
|
|
|
| -shouldThrow('internals.observeGC(undefined)', '"TypeError: value to observe is null or undefined"');
|
| -shouldThrow('internals.observeGC(null)', '"TypeError: value to observe is null or undefined"');
|
| +shouldThrow('internals.observeGC(undefined)',
|
| + '"TypeError: value to observe is null or undefined"');
|
| +shouldThrow('internals.observeGC(null)',
|
| + '"TypeError: value to observe is null or undefined"');
|
|
|
| // Try to create objects and observers that will die at once
|
|
|
| var valueD = {};
|
| -var observerD = internals.observeGC(valueD);
|
| +// Do not pass the object directly to observeGC function. This may
|
| +// remain live on this function's stack preventing GC from collecting
|
| +// it. Accessing the object inside an inner function will prevent any
|
| +// unneeded references on this function's stack.
|
| +var observerD = internals.observeGC((() => {return valueD;})());
|
| valueD.observer = observerD;
|
| observerD.observed = valueD;
|
| valueD = observerD = null;
|
|
|