Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
third_party
dart-lang
sdk
runtime
bin
virtual_memory.h
Go to the documentation of this file.
1
// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
2
// for details. All rights reserved. Use of this source code is governed by a
3
// BSD-style license that can be found in the LICENSE file.
4
5
#ifndef RUNTIME_BIN_VIRTUAL_MEMORY_H_
6
#define RUNTIME_BIN_VIRTUAL_MEMORY_H_
7
8
#include "
platform/allocation.h
"
9
#include "
platform/globals.h
"
10
11
namespace
dart
{
12
namespace
bin {
13
14
class
VirtualMemory
{
15
public
:
16
enum
Protection
{
17
kNoAccess
,
18
kReadOnly
,
19
kReadWrite
,
20
kReadExecute
,
21
kReadWriteExecute
22
};
23
24
// The reserved memory is unmapped on destruction.
25
~VirtualMemory
();
26
27
void
release
() {
28
address_ =
nullptr
;
29
size_ = 0;
30
}
31
32
uword
start
()
const
{
return
reinterpret_cast<
uword
>
(address_); }
33
uword
end
()
const
{
return
reinterpret_cast<
uword
>
(address_) + size_; }
34
void
*
address
()
const
{
return
address_; }
35
intptr_t
size
()
const
{
return
size_; }
36
37
// Changes the protection of the virtual memory area.
38
static
void
Protect
(
void
*
address
, intptr_t
size
,
Protection
mode);
39
void
Protect
(
Protection
mode) {
return
Protect
(
address
(),
size
(), mode); }
40
41
// Reserves and commits a virtual memory segment with size. If a segment of
42
// the requested size cannot be allocated, nullptr is returned.
43
static
VirtualMemory
*
Allocate
(intptr_t
size
,
44
bool
is_executable,
45
const
char
*
name
);
46
47
static
void
Init
() { page_size_ = CalculatePageSize(); }
48
49
// Returns the cached page size. Use only if Init() has been called.
50
static
intptr_t
PageSize
() {
51
ASSERT
(page_size_ != 0);
52
return
page_size_;
53
}
54
55
private
:
56
static
intptr_t CalculatePageSize();
57
58
// These constructors are only used internally when reserving new virtual
59
// spaces. They do not reserve any virtual address space on their own.
60
VirtualMemory
(
void
*
address
,
size_t
size
) : address_(
address
), size_(
size
) {}
61
62
void
* address_;
63
size_t
size_;
64
65
static
uword
page_size_;
66
67
DISALLOW_IMPLICIT_CONSTRUCTORS
(
VirtualMemory
);
68
};
69
70
}
// namespace bin
71
}
// namespace dart
72
73
#endif
// RUNTIME_BIN_VIRTUAL_MEMORY_H_
dart::VirtualMemory
Definition
virtual_memory.h:19
dart::bin::VirtualMemory
Definition
virtual_memory.h:14
dart::bin::VirtualMemory::Init
static void Init()
Definition
virtual_memory.h:47
dart::bin::VirtualMemory::size
intptr_t size() const
Definition
virtual_memory.h:35
dart::bin::VirtualMemory::Protect
void Protect(Protection mode)
Definition
virtual_memory.h:39
dart::bin::VirtualMemory::release
void release()
Definition
virtual_memory.h:27
dart::bin::VirtualMemory::Allocate
static VirtualMemory * Allocate(intptr_t size, bool is_executable, const char *name)
dart::bin::VirtualMemory::Protect
static void Protect(void *address, intptr_t size, Protection mode)
dart::bin::VirtualMemory::PageSize
static intptr_t PageSize()
Definition
virtual_memory.h:50
dart::bin::VirtualMemory::~VirtualMemory
~VirtualMemory()
dart::bin::VirtualMemory::start
uword start() const
Definition
virtual_memory.h:32
dart::bin::VirtualMemory::Protection
Protection
Definition
virtual_memory.h:16
dart::bin::VirtualMemory::kReadOnly
@ kReadOnly
Definition
virtual_memory.h:18
dart::bin::VirtualMemory::kReadExecute
@ kReadExecute
Definition
virtual_memory.h:20
dart::bin::VirtualMemory::kNoAccess
@ kNoAccess
Definition
virtual_memory.h:17
dart::bin::VirtualMemory::kReadWriteExecute
@ kReadWriteExecute
Definition
virtual_memory.h:21
dart::bin::VirtualMemory::kReadWrite
@ kReadWrite
Definition
virtual_memory.h:19
dart::bin::VirtualMemory::address
void * address() const
Definition
virtual_memory.h:34
dart::bin::VirtualMemory::end
uword end() const
Definition
virtual_memory.h:33
ASSERT
#define ASSERT(E)
Definition
entrypoints_verification_test.cc:25
dart
Definition
dart_vm.cc:33
dart::name
const char *const name
Definition
method_recognizer.cc:324
dart::uword
uintptr_t uword
Definition
globals.h:501
globals.h
DISALLOW_IMPLICIT_CONSTRUCTORS
#define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName)
Definition
globals.h:593
allocation.h
Generated on Fri Apr 26 2024 06:15:21 for Flutter Engine by
1.9.8