v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
builtin-jump-table-info-x64.cc
Go to the documentation of this file.
1
// Copyright 2023 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
#include "
src/codegen/x64/builtin-jump-table-info-x64.h
"
6
7
#include "
src/base/memory.h
"
8
#include "
src/codegen/assembler-inl.h
"
9
#include "
src/common/globals.h
"
10
11
namespace
v8
{
12
namespace
internal
{
13
14
void
BuiltinJumpTableInfoWriter::Add
(uint32_t
pc_offset
, int32_t target) {
15
entries_
.emplace_back(
pc_offset
, target);
16
}
17
18
size_t
BuiltinJumpTableInfoWriter::entry_count
()
const
{
19
return
entries_
.size();
20
}
21
22
uint32_t
BuiltinJumpTableInfoWriter::size_in_bytes
()
const
{
23
return
static_cast<
uint32_t
>
(
entry_count
() *
24
BuiltinJumpTableInfoEntry::kSize
);
25
}
26
27
void
BuiltinJumpTableInfoWriter::Emit
(
Assembler
* assm) {
28
for
(
auto
i
=
entries_
.begin();
i
!=
entries_
.end(); ++
i
) {
29
static_assert
(
BuiltinJumpTableInfoEntry::kPCOffsetSize
==
kUInt32Size
);
30
assm->
dd
(
i
->pc_offset);
31
static_assert
(
BuiltinJumpTableInfoEntry::kTargetSize
==
kInt32Size
);
32
assm->
dd
(
i
->
target
);
33
static_assert
(
BuiltinJumpTableInfoEntry::kSize
==
34
BuiltinJumpTableInfoEntry::kPCOffsetSize
+
35
BuiltinJumpTableInfoEntry::kTargetSize
);
36
}
37
}
38
39
BuiltinJumpTableInfoIterator::BuiltinJumpTableInfoIterator
(
Address
start
,
40
uint32_t size)
41
:
start_
(
start
),
size_
(size),
cursor_
(
start_
) {
42
DCHECK_NE
(
kNullAddress
,
start
);
43
}
44
45
uint32_t
BuiltinJumpTableInfoIterator::GetPCOffset
()
const
{
46
return
base::ReadUnalignedValue<uint32_t>
(
47
cursor_
+ offsetof(
BuiltinJumpTableInfoEntry
,
pc_offset
));
48
}
49
50
int32_t
BuiltinJumpTableInfoIterator::GetTarget
()
const
{
51
return
base::ReadUnalignedValue<int32_t>
(
52
cursor_
+ offsetof(
BuiltinJumpTableInfoEntry
, target));
53
}
54
55
void
BuiltinJumpTableInfoIterator::Next
() {
56
cursor_
+=
BuiltinJumpTableInfoEntry::kSize
;
57
}
58
59
bool
BuiltinJumpTableInfoIterator::HasCurrent
()
const
{
60
return
cursor_
<
start_
+
size_
;
61
}
62
63
}
// namespace internal
64
}
// namespace v8
assembler-inl.h
memory.h
builtin-jump-table-info-x64.h
target
v8::internal::Assembler
Definition
assembler-x64.h:484
v8::internal::Assembler::dd
void dd(uint32_t data)
Definition
assembler-riscv.cc:1447
v8::internal::BuiltinJumpTableInfoIterator::cursor_
Address cursor_
Definition
builtin-jump-table-info-x64.h:66
v8::internal::BuiltinJumpTableInfoIterator::BuiltinJumpTableInfoIterator
BuiltinJumpTableInfoIterator(Address start, uint32_t size)
Definition
builtin-jump-table-info-x64.cc:39
v8::internal::BuiltinJumpTableInfoIterator::Next
void Next()
Definition
builtin-jump-table-info-x64.cc:55
v8::internal::BuiltinJumpTableInfoIterator::HasCurrent
bool HasCurrent() const
Definition
builtin-jump-table-info-x64.cc:59
v8::internal::BuiltinJumpTableInfoIterator::GetPCOffset
uint32_t GetPCOffset() const
Definition
builtin-jump-table-info-x64.cc:45
v8::internal::BuiltinJumpTableInfoIterator::size_
const uint32_t size_
Definition
builtin-jump-table-info-x64.h:65
v8::internal::BuiltinJumpTableInfoIterator::start_
const Address start_
Definition
builtin-jump-table-info-x64.h:64
v8::internal::BuiltinJumpTableInfoIterator::GetTarget
int32_t GetTarget() const
Definition
builtin-jump-table-info-x64.cc:50
v8::internal::BuiltinJumpTableInfoWriter::Emit
void Emit(Assembler *assm)
Definition
builtin-jump-table-info-x64.cc:27
v8::internal::BuiltinJumpTableInfoWriter::entries_
std::vector< BuiltinJumpTableInfoEntry > entries_
Definition
builtin-jump-table-info-x64.h:51
v8::internal::BuiltinJumpTableInfoWriter::Add
V8_EXPORT_PRIVATE void Add(uint32_t pc_offset, int32_t target)
Definition
builtin-jump-table-info-x64.cc:14
v8::internal::BuiltinJumpTableInfoWriter::size_in_bytes
uint32_t size_in_bytes() const
Definition
builtin-jump-table-info-x64.cc:22
v8::internal::BuiltinJumpTableInfoWriter::entry_count
size_t entry_count() const
Definition
builtin-jump-table-info-x64.cc:18
size_
const int size_
Definition
assembler.cc:132
start_
uint8_t *const start_
Definition
assembler.cc:131
globals.h
start
int start
Definition
debug-coverage.cc:595
pc_offset
int pc_offset
Definition
liftoff-compiler.cc:9470
v8::base::ReadUnalignedValue
static V ReadUnalignedValue(Address p)
Definition
memory.h:28
v8::internal
Definition
api-arguments-inl.h:20
v8::internal::internal
internal
Definition
wasm-objects-inl.h:458
v8::internal::kInt32Size
constexpr int kInt32Size
Definition
globals.h:401
v8::internal::Address
Address
Definition
api-callbacks-inl.h:36
v8::internal::kUInt32Size
constexpr int kUInt32Size
Definition
globals.h:403
v8::internal::kNullAddress
static constexpr Address kNullAddress
Definition
v8-internal.h:53
v8
Definition
api-arguments-inl.h:19
DCHECK_NE
#define DCHECK_NE(v1, v2)
Definition
logging.h:486
v8::internal::BuiltinJumpTableInfoEntry
Definition
builtin-jump-table-info-x64.h:28
v8::internal::BuiltinJumpTableInfoEntry::kPCOffsetSize
static constexpr int kPCOffsetSize
Definition
builtin-jump-table-info-x64.h:34
v8::internal::BuiltinJumpTableInfoEntry::kTargetSize
static constexpr int kTargetSize
Definition
builtin-jump-table-info-x64.h:35
v8::internal::BuiltinJumpTableInfoEntry::kSize
static constexpr int kSize
Definition
builtin-jump-table-info-x64.h:36
cursor_
int cursor_
Definition
turboshaft-graph-interface.cc:141
src
codegen
x64
builtin-jump-table-info-x64.cc
Generated on Sun Apr 6 2025 21:08:51 for v8 by
1.12.0