V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
zone-segment.h
1
// Copyright 2016 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_ZONE_ZONE_SEGMENT_H_
6
#define V8_ZONE_ZONE_SEGMENT_H_
7
8
#include "src/v8.h"
9
10
// Segments represent chunks of memory: They have starting address
11
// (encoded in the this pointer) and a size in bytes. Segments are
12
// chained together forming a LIFO structure with the newest segment
13
// available as segment_head_. Segments are allocated using malloc()
14
// and de-allocated using free().
15
namespace
v8
{
16
namespace
internal {
17
18
// Forward declaration
19
class
Zone;
20
21
class
Segment
{
22
public
:
23
void
Initialize(
size_t
size) { size_ = size; }
24
25
Zone
* zone()
const
{
return
zone_; }
26
void
set_zone(
Zone
*
const
zone) { zone_ = zone; }
27
28
Segment
* next()
const
{
return
next_; }
29
void
set_next(
Segment
*
const
next) { next_ = next; }
30
31
size_t
size()
const
{
return
size_; }
32
size_t
capacity()
const
{
return
size_ -
sizeof
(
Segment
); }
33
34
Address
start()
const
{
return
address(
sizeof
(
Segment
)); }
35
Address
end()
const
{
return
address(size_); }
36
37
// Zap the contents of the segment (but not the header).
38
void
ZapContents();
39
// Zaps the header and makes the segment unusable this way.
40
void
ZapHeader();
41
42
private
:
43
#ifdef DEBUG
44
// Constant byte value used for zapping dead memory in debug mode.
45
static
const
unsigned
char
kZapDeadByte = 0xcd;
46
#endif
47
48
// Computes the address of the nth byte in this segment.
49
Address
address(
size_t
n)
const
{
50
return
reinterpret_cast<
Address
>
(
this
) + n;
51
}
52
53
Zone
* zone_;
54
Segment
* next_;
55
size_t
size_;
56
};
57
}
// namespace internal
58
}
// namespace v8
59
60
#endif // V8_ZONE_ZONE_SEGMENT_H_
uintptr_t
v8
Definition:
libplatform.h:13
v8::internal::Segment
Definition:
zone-segment.h:21
v8::internal::Zone
Definition:
zone.h:42
v8
src
zone
zone-segment.h
Generated on Tue Dec 25 2018 14:40:05 by
1.8.14