From d4c93d2de14d08c6c6052fd97f10f090ea6f5f31 Mon Sep 17 00:00:00 2001 From: Rezvan Mahdavi Hezaveh Date: Mon, 24 Feb 2025 17:20:11 -0800 Subject: [PATCH] [explicit-resource-management] Dispose the stack before disposal This CL adds the requirement of having disposed stack before calling DisposeResources on the DisposableStack. Bug: 42203506 Change-Id: I515a5f23e609fdd9448cebc4cd71b0176c86cf99 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/6298949 Reviewed-by: Shu-yu Guo Commit-Queue: Rezvan Mahdavi Hezaveh Cr-Commit-Position: refs/heads/main@{#98902} --- .../disposable-stack-re-entry.js | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 test/staging/explicit-resource-management/disposable-stack-re-entry.js diff --git a/test/staging/explicit-resource-management/disposable-stack-re-entry.js b/test/staging/explicit-resource-management/disposable-stack-re-entry.js new file mode 100644 index 0000000000..4233280853 --- /dev/null +++ b/test/staging/explicit-resource-management/disposable-stack-re-entry.js @@ -0,0 +1,22 @@ +// Copyright (C) 2025 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Re-entry to a disposable stack should do nothing. +includes: [compareArray.js] +features: [explicit-resource-management] +---*/ + +let values = []; + +(function TestDisposableStackReEntry() { + let stack = new DisposableStack(); + stack.use({ + [Symbol.dispose]() { + values.push(42); + stack.dispose(); + } + }); + stack.dispose(); +})(); +assert.compareArray(values, [42]);