v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
data-handler.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_H_
6#define V8_OBJECTS_DATA_HANDLER_H_
7
9
10// Has to be the last include (doesn't have include guards):
13
14namespace v8 {
15namespace internal {
16
17#include "torque-generated/src/objects/data-handler-tq.inc"
18
19// DataHandler is a base class for load and store handlers that can't be
20// encoded in one Smi. Kind of a handler can be deduced from instance type.
22 public:
23 static constexpr int OffsetOf(int index);
24 static constexpr int SizeFor(int count);
25
26 // [smi_handler]: A Smi which encodes a handler or Code object
27 // (we still use code handlers for accessing lexical environment variables,
28 // but soon only smi handlers will remain). See LoadHandler and StoreHandler
29 // for details about encoding.
31 inline void set_smi_handler(Tagged<Smi> value);
32 inline void set_smi_handler(Tagged<Code> value,
34
35 // [validity_cell]: A validity Cell that guards prototype chain modifications.
39
40 // Returns number of optional data fields available in the object.
41 inline int data_field_count() const;
42
43 // [data1-3]: These are optional general-purpose fields whose content and
44 // presence depends on the handler kind.
45 inline Tagged<MaybeObject> data1() const;
46 inline void set_data1(Tagged<MaybeObject> value,
48 inline Tagged<MaybeObject> data2() const;
49 inline void set_data2(Tagged<MaybeObject> value,
51 inline Tagged<MaybeObject> data3() const;
52 inline void set_data3(Tagged<MaybeObject> value,
54
57
58 class BodyDescriptor;
59
60 private:
61 friend class AccessorAssembler;
62
67
68} // namespace internal
69} // namespace v8
70
72
73#endif // V8_OBJECTS_DATA_HANDLER_H_
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)
FLEXIBLE_ARRAY_MEMBER(TaggedMember< MaybeObject >, data)
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
@ UPDATE_WRITE_BARRIER
Definition objects.h:55
v8::internal::LoadHandler V8_OBJECT_END
typename detail::FlattenUnionHelper< Union<>, Ts... >::type UnionOf
Definition union.h:123
#define DECL_VERIFIER(Name)
#define V8_OBJECT
#define DECL_PRINTER(Name)