v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
cross-heap-remembered-set.h
Go to the documentation of this file.
1
// Copyright 2022 the V8 project authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#ifndef V8_HEAP_CPPGC_JS_CROSS_HEAP_REMEMBERED_SET_H_
6
#define V8_HEAP_CPPGC_JS_CROSS_HEAP_REMEMBERED_SET_H_
7
8
#include <vector>
9
10
#include "
src/base/macros.h
"
11
#include "
src/handles/handles.h
"
12
#include "
src/objects/tagged.h
"
13
14
namespace
cppgc::internal
{
15
class
HeapBase;
16
}
17
18
namespace
v8::internal
{
19
20
class
JSObject;
21
22
// The class is used to remember V8 to Oilpan references.
23
class
V8_EXPORT_PRIVATE
CrossHeapRememberedSet
final {
24
public
:
25
explicit
CrossHeapRememberedSet
(
cppgc::internal::HeapBase
& heap_base)
26
: heap_base_(heap_base) {}
27
28
CrossHeapRememberedSet
(
const
CrossHeapRememberedSet
&) =
delete
;
29
CrossHeapRememberedSet
(
CrossHeapRememberedSet
&&) =
delete
;
30
31
void
RememberReferenceIfNeeded(
Isolate
& isolate,
Tagged<JSObject>
host_obj,
32
void
* cppgc_object);
33
void
Reset(
Isolate
& isolate);
34
35
template
<
typename
F>
36
void
Visit(
Isolate
&,
F
);
37
38
bool
IsEmpty
()
const
{
return
remembered_v8_to_cppgc_references_.empty(); }
39
40
private
:
41
cppgc::internal::HeapBase
&
heap_base_
;
42
// The vector keeps handles to remembered V8 objects that have outgoing
43
// references to the cppgc heap. Please note that the handles are global.
44
std::vector<IndirectHandle<JSObject>>
remembered_v8_to_cppgc_references_
;
45
};
46
47
template
<
typename
F>
48
void
CrossHeapRememberedSet::Visit
(
Isolate
& isolate,
F
f) {
49
for
(
auto
& obj :
remembered_v8_to_cppgc_references_
) {
50
f(*obj);
51
}
52
}
53
54
}
// namespace v8::internal
55
56
#endif
// V8_HEAP_CPPGC_JS_CROSS_HEAP_REMEMBERED_SET_H_
F
#define F(name, str)
cppgc::internal::HeapBase
Definition
heap-base.h:82
v8::internal::CrossHeapRememberedSet
Definition
cross-heap-remembered-set.h:23
v8::internal::CrossHeapRememberedSet::heap_base_
cppgc::internal::HeapBase & heap_base_
Definition
cross-heap-remembered-set.h:41
v8::internal::CrossHeapRememberedSet::CrossHeapRememberedSet
CrossHeapRememberedSet(const CrossHeapRememberedSet &)=delete
v8::internal::CrossHeapRememberedSet::Visit
void Visit(Isolate &, F)
Definition
cross-heap-remembered-set.h:48
v8::internal::CrossHeapRememberedSet::CrossHeapRememberedSet
CrossHeapRememberedSet(CrossHeapRememberedSet &&)=delete
v8::internal::CrossHeapRememberedSet::IsEmpty
bool IsEmpty() const
Definition
cross-heap-remembered-set.h:38
v8::internal::CrossHeapRememberedSet::CrossHeapRememberedSet
CrossHeapRememberedSet(cppgc::internal::HeapBase &heap_base)
Definition
cross-heap-remembered-set.h:25
v8::internal::CrossHeapRememberedSet::remembered_v8_to_cppgc_references_
std::vector< IndirectHandle< JSObject > > remembered_v8_to_cppgc_references_
Definition
cross-heap-remembered-set.h:44
v8::internal::Isolate
Definition
isolate.h:586
v8::internal::Tagged
Definition
waiter-queue-node.h:21
handles.h
cppgc::internal
Definition
cross-heap-remembered-set.h:14
v8::internal
Definition
api-arguments-inl.h:20
v8::internal::F
@ F
Definition
constants-mips64.h:1194
macros.h
V8_EXPORT_PRIVATE
#define V8_EXPORT_PRIVATE
Definition
macros.h:460
tagged.h
src
heap
cppgc-js
cross-heap-remembered-set.h
Generated on Sun Apr 6 2025 21:08:54 for v8 by
1.12.0