manually-externalized-buffer.h 1.04 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
// 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<JSArrayBuffer> buffer_;
18
  std::shared_ptr<v8::BackingStore> backing_store_;
19 20 21

  explicit ManuallyExternalizedBuffer(Handle<JSArrayBuffer> buffer)
      : buffer_(buffer),
22
        backing_store_(v8::Utils::ToLocal(buffer_)->GetBackingStore()) {}
23
  ~ManuallyExternalizedBuffer() {
24 25
    // Nothing to be done. The reference to the backing store will be
    // dropped automatically.
26
  }
27
  void* backing_store() { return backing_store_->Data(); }
28 29 30 31 32 33 34
};

}  // namespace testing
}  // namespace internal
}  // namespace v8

#endif  // V8_CCTEST_MANUALLY_EXTERNALIZED_BUFFER_H_