v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
data-handler-inl.h
Go to the documentation of this file.
1// Copyright 2017 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_OBJECTS_DATA_HANDLER_INL_H_
6#define V8_OBJECTS_DATA_HANDLER_INL_H_
7
9// Include the non-inl header before the rest of the headers.
10
11#include "src/objects/map.h"
12#include "src/objects/objects.h"
14
15// Has to be the last include (doesn't have include guards):
17
18namespace v8 {
19namespace internal {
20
21#include "torque-generated/src/objects/data-handler-tq-inl.inc"
22
23// static
24constexpr int DataHandler::OffsetOf(int index) {
26 index * sizeof(DataHandler::FlexibleDataType);
27}
28// static
29constexpr int DataHandler::SizeFor(int count) {
31 count * sizeof(DataHandler::FlexibleDataType);
32}
33
35 return smi_handler_.load();
36}
38 smi_handler_.store(this, value, SKIP_WRITE_BARRIER);
39}
41 WriteBarrierMode mode) {
42 smi_handler_.store(this, value, UPDATE_WRITE_BARRIER);
43}
44
49 WriteBarrierMode mode) {
50 validity_cell_.store(this, value, mode);
51}
52
54 return (map()->instance_size() - OFFSET_OF_DATA_START(DataHandler)) /
55 sizeof(data()[0]);
56}
57
60 return data()[0].load();
61}
63 WriteBarrierMode mode) {
65 data()[0].store(this, value, mode);
66}
67
70 return data()[1].load();
71}
73 WriteBarrierMode mode) {
75 data()[1].store(this, value, mode);
76}
77
80 return data()[2].load();
81}
83 WriteBarrierMode mode) {
85 data()[2].store(this, value, mode);
86}
87
88} // namespace internal
89} // namespace v8
90
92
93#endif // V8_OBJECTS_DATA_HANDLER_INL_H_
union v8::internal::@341::BuiltinMetadata::KindSpecificData data
TaggedMember< UnionOf< Smi, Cell > > validity_cell_
Tagged< UnionOf< Smi, Cell > > validity_cell() const
TaggedMember< UnionOf< Smi, Code > > smi_handler_
static constexpr int SizeFor(int count)
Tagged< UnionOf< Smi, Code > > smi_handler() const
void set_data1(Tagged< MaybeObject > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
void set_smi_handler(Tagged< Smi > value)
void set_data2(Tagged< MaybeObject > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
Tagged< MaybeObject > data2() const
Tagged< MaybeObject > data1() const
void set_validity_cell(Tagged< UnionOf< Smi, Cell > > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
void set_data3(Tagged< MaybeObject > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
static constexpr int OffsetOf(int index)
Tagged< MaybeObject > data3() const
Tagged< Map > map() const
@ SKIP_WRITE_BARRIER
Definition objects.h:52
@ UPDATE_WRITE_BARRIER
Definition objects.h:55
typename detail::FlattenUnionHelper< Union<>, Ts... >::type UnionOf
Definition union.h:123
#define DCHECK_GT(v1, v2)
Definition logging.h:487
#define OFFSET_OF_DATA_START(Type)