v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
handler-table-builder.h
Go to the documentation of this file.
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_INTERPRETER_HANDLER_TABLE_BUILDER_H_
6
#define V8_INTERPRETER_HANDLER_TABLE_BUILDER_H_
7
8
#include "
src/codegen/handler-table.h
"
9
#include "
src/interpreter/bytecode-register.h
"
10
#include "
src/objects/fixed-array.h
"
11
#include "
src/zone/zone-containers.h
"
12
13
namespace
v8
{
14
namespace
internal
{
15
16
class
HandlerTable;
17
18
namespace
interpreter {
19
20
// A helper class for constructing exception handler tables for the interpreter.
21
class
V8_EXPORT_PRIVATE
HandlerTableBuilder
final {
22
public
:
23
explicit
HandlerTableBuilder
(
Zone
* zone);
24
HandlerTableBuilder
(
const
HandlerTableBuilder
&) =
delete
;
25
HandlerTableBuilder
&
operator=
(
const
HandlerTableBuilder
&) =
delete
;
26
27
// Builds the actual handler table by copying the current values into a heap
28
// object. Any further mutations to the builder won't be reflected.
29
template
<
typename
IsolateT>
30
DirectHandle<TrustedByteArray>
ToHandlerTable(IsolateT* isolate);
31
32
// Creates a new handler table entry and returns a {hander_id} identifying the
33
// entry, so that it can be referenced by below setter functions.
34
int
NewHandlerEntry();
35
36
// Setter functions that modify certain values within the handler table entry
37
// being referenced by the given {handler_id}. All values will be encoded by
38
// the resulting {HandlerTable} class when copied into the heap.
39
void
SetTryRegionStart(
int
handler_id,
size_t
offset
);
40
void
SetTryRegionEnd(
int
handler_id,
size_t
offset
);
41
void
SetHandlerTarget(
int
handler_id,
size_t
offset
);
42
void
SetPrediction(
int
handler_id,
HandlerTable::CatchPrediction
prediction);
43
void
SetContextRegister(
int
handler_id,
Register
reg
);
44
45
private
:
46
struct
Entry
{
47
size_t
offset_start
;
// Bytecode offset starting try-region.
48
size_t
offset_end
;
// Bytecode offset ending try-region.
49
size_t
offset_target
;
// Bytecode offset of handler target.
50
Register
context
;
// Register holding context for handler.
51
// Optimistic prediction for handler.
52
HandlerTable::CatchPrediction
catch_prediction_
;
53
};
54
55
ZoneVector<Entry>
entries_
;
56
};
57
58
}
// namespace interpreter
59
}
// namespace internal
60
}
// namespace v8
61
62
#endif
// V8_INTERPRETER_HANDLER_TABLE_BUILDER_H_
bytecode-register.h
v8::internal::DirectHandle
Definition
handles.h:659
v8::internal::HandlerTable::CatchPrediction
CatchPrediction
Definition
handler-table.h:42
v8::internal::ZoneVector
Definition
zone-containers.h:53
v8::internal::Zone
Definition
zone.h:43
v8::internal::interpreter::HandlerTableBuilder
Definition
handler-table-builder.h:21
v8::internal::interpreter::HandlerTableBuilder::operator=
HandlerTableBuilder & operator=(const HandlerTableBuilder &)=delete
v8::internal::interpreter::HandlerTableBuilder::HandlerTableBuilder
HandlerTableBuilder(const HandlerTableBuilder &)=delete
v8::internal::interpreter::HandlerTableBuilder::entries_
ZoneVector< Entry > entries_
Definition
handler-table-builder.h:55
v8::internal::interpreter::Register
Definition
bytecode-register.h:27
fixed-array.h
handler-table.h
offset
int32_t offset
Definition
instruction-selector-ia32.cc:67
reg
LiftoffRegister reg
Definition
liftoff-compiler.cc:512
v8::internal::internal
internal
Definition
wasm-objects-inl.h:458
v8
Definition
api-arguments-inl.h:19
V8_EXPORT_PRIVATE
#define V8_EXPORT_PRIVATE
Definition
macros.h:460
v8::internal::interpreter::HandlerTableBuilder::Entry
Definition
handler-table-builder.h:46
v8::internal::interpreter::HandlerTableBuilder::Entry::offset_end
size_t offset_end
Definition
handler-table-builder.h:48
v8::internal::interpreter::HandlerTableBuilder::Entry::offset_start
size_t offset_start
Definition
handler-table-builder.h:47
v8::internal::interpreter::HandlerTableBuilder::Entry::offset_target
size_t offset_target
Definition
handler-table-builder.h:49
v8::internal::interpreter::HandlerTableBuilder::Entry::context
Register context
Definition
handler-table-builder.h:50
v8::internal::interpreter::HandlerTableBuilder::Entry::catch_prediction_
HandlerTable::CatchPrediction catch_prediction_
Definition
handler-table-builder.h:52
zone-containers.h
src
interpreter
handler-table-builder.h
Generated on Sun Apr 6 2025 21:08:54 for v8 by
1.12.0