Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
68 lines (50 loc) · 2.09 KB

File metadata and controls

68 lines (50 loc) · 2.09 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Copyright 2018 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef V8_OBJECTS_EMBEDDER_DATA_ARRAY_H_
#define V8_OBJECTS_EMBEDDER_DATA_ARRAY_H_
#include "src/common/globals.h"
#include "src/handles/maybe-handles.h"
#include "src/objects/heap-object.h"
#include "torque-generated/class-definitions-tq.h"
// Has to be the last include (doesn't have include guards):
#include "src/objects/object-macros.h"
namespace v8 {
namespace internal {
// This is a storage array for embedder data fields stored in native context.
// It's basically an "array of EmbedderDataSlots".
// Note, if the pointer compression is enabled the embedder data slot also
// contains a raw data part in addition to tagged part.
class EmbedderDataArray
: public TorqueGeneratedEmbedderDataArray<EmbedderDataArray, HeapObject> {
public:
// TODO(v8:8989): [torque] Support marker constants.
static const int kHeaderSize = kSize;
// Garbage collection support.
static constexpr int SizeFor(int length) {
return kHeaderSize + length * kEmbedderDataSlotSize;
}
// Returns a grown copy if the index is bigger than the array's length.
static Handle<EmbedderDataArray> EnsureCapacity(
Isolate* isolate, Handle<EmbedderDataArray> array, int index);
// Code Generation support.
static constexpr int OffsetOfElementAt(int index) { return SizeFor(index); }
// Address of the first slot.
V8_INLINE Address slots_start();
// Address of the one past last slot.
V8_INLINE Address slots_end();
// Dispatched behavior.
DECL_PRINTER(EmbedderDataArray)
DECL_VERIFIER(EmbedderDataArray)
class BodyDescriptor;
static const int kMaxSize = kMaxRegularHeapObjectSize;
static constexpr int kMaxLength =
(kMaxSize - kHeaderSize) / kEmbedderDataSlotSize;
private:
STATIC_ASSERT(kHeaderSize == Internals::kFixedArrayHeaderSize);
TQ_OBJECT_CONSTRUCTORS(EmbedderDataArray)
};
} // namespace internal
} // namespace v8
#include "src/objects/object-macros-undef.h"
#endif // V8_OBJECTS_EMBEDDER_DATA_ARRAY_H_
Morty Proxy This is a proxified and sanitized view of the page, visit original site.