Sha256: bee39f129b2597a9c34a579829fe720f3d71f5cf737918530aab81ead99b1e7f

Contents?: true

Size: 804 Bytes

Versions: 125

Compression:

Stored size: 804 Bytes

Contents

// 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.

#ifndef INCLUDE_CPPGC_EPHEMERON_PAIR_H_
#define INCLUDE_CPPGC_EPHEMERON_PAIR_H_

#include "cppgc/liveness-broker.h"
#include "cppgc/member.h"

namespace cppgc {

/**
 * An ephemeron pair is used to conditionally retain an object.
 * The `value` will be kept alive only if the `key` is alive.
 */
template <typename K, typename V>
struct EphemeronPair {
  EphemeronPair(K* k, V* v) : key(k), value(v) {}
  WeakMember<K> key;
  Member<V> value;

  void ClearValueIfKeyIsDead(const LivenessBroker& broker) {
    if (!broker.IsHeapObjectAlive(key)) value = nullptr;
  }
};

}  // namespace cppgc

#endif  // INCLUDE_CPPGC_EPHEMERON_PAIR_H_

Version data entries

125 entries across 125 versions & 2 rubygems

Version Path
libv8-node-18.8.0.0-x86_64-linux-musl vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-18.8.0.0-x86_64-linux vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-18.8.0.0-aarch64-linux-musl vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-18.8.0.0-aarch64-linux vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-17.9.1.0-aarch64-linux-musl vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-17.9.1.0-aarch64-linux vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-17.9.1.0-arm64-darwin vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-16.17.0.0-aarch64-linux-musl vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-16.17.0.0-aarch64-linux vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-16.17.0.0-arm64-darwin vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-18.8.0.0-x86_64-darwin vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-17.9.1.0-x86_64-linux-musl vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-17.9.1.0-x86_64-linux vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-17.9.1.0-x86_64-darwin vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-16.17.0.0-x86_64-linux-musl vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-16.17.0.0-x86_64-linux vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-16.17.0.0-x86_64-darwin vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-16.10.0.0-arm64-darwin vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-16.10.0.0-x86_64-darwin vendor/v8/include/cppgc/ephemeron-pair.h
libv8-node-16.10.0.0-x86_64-linux vendor/v8/include/cppgc/ephemeron-pair.h