[weakrefs] Fix [[KeptObjects]] assertion for only when a microtask checkpoint is performed
Bug: chromium:1073263 Change-Id: I5c054e34242a91dafd6788814a39e97075d1035d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2160019 Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/master@{#67319}
This commit is contained in:
parent
3a8feabfd7
commit
4e1544bcff
@ -328,6 +328,7 @@ class CallDepthScope {
|
||||
bool CheckKeptObjectsClearedAfterMicrotaskCheckpoint(
|
||||
i::MicrotaskQueue* microtask_queue) {
|
||||
bool did_perform_microtask_checkpoint =
|
||||
isolate_->thread_local_top()->CallDepthIsZero() &&
|
||||
do_callback && microtask_queue &&
|
||||
microtask_queue->microtasks_policy() == MicrotasksPolicy::kAuto;
|
||||
return !did_perform_microtask_checkpoint ||
|
||||
|
13
test/mjsunit/harmony/weakrefs/clearkeptobjects-on-quit.js
Normal file
13
test/mjsunit/harmony/weakrefs/clearkeptobjects-on-quit.js
Normal file
@ -0,0 +1,13 @@
|
||||
// Copyright 2020 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --harmony-weak-refs
|
||||
|
||||
// A newly created WeakRef is kept alive until the end of the next microtask
|
||||
// checkpoint. V8 asserts that the kept objects list is cleared at the end of
|
||||
// microtask checkpoints when the microtask policy is auto. Test that d8, which
|
||||
// uses the auto policy, upholds the assert when manually quitting.
|
||||
let obj = {};
|
||||
let wr = new WeakRef(obj);
|
||||
testRunner.quit();
|
Loading…
Reference in New Issue
Block a user