// Copyright 2019 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. #ifndef V8_CCTEST_MANUALLY_EXTERNALIZED_BUFFER_H_ #define V8_CCTEST_MANUALLY_EXTERNALIZED_BUFFER_H_ #include "src/api/api-inl.h" namespace v8 { namespace internal { namespace testing { // Utility to free the allocated memory for a buffer that is manually // externalized in a test. struct ManuallyExternalizedBuffer { Handle buffer_; std::shared_ptr backing_store_; explicit ManuallyExternalizedBuffer(Handle buffer) : buffer_(buffer), backing_store_(v8::Utils::ToLocal(buffer_)->GetBackingStore()) {} ~ManuallyExternalizedBuffer() { // Nothing to be done. The reference to the backing store will be // dropped automatically. } void* backing_store() { return backing_store_->Data(); } }; } // namespace testing } // namespace internal } // namespace v8 #endif // V8_CCTEST_MANUALLY_EXTERNALIZED_BUFFER_H_