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
116 lines (89 loc) · 3.46 KB

File metadata and controls

116 lines (89 loc) · 3.46 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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
// Copyright 2017 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_FRAME_ARRAY_H_
#define V8_OBJECTS_FRAME_ARRAY_H_
#include "src/objects/objects.h"
#include "src/wasm/wasm-objects.h"
// Has to be the last include (doesn't have include guards):
#include "src/objects/object-macros.h"
namespace v8 {
namespace internal {
template <typename T>
class Handle;
#define FRAME_ARRAY_FIELD_LIST(V) \
V(WasmInstance, WasmInstanceObject) \
V(WasmFunctionIndex, Smi) \
V(WasmCodeObject, Object) \
V(Receiver, Object) \
V(Function, JSFunction) \
V(Code, AbstractCode) \
V(Offset, Smi) \
V(Flags, Smi) \
V(Parameters, FixedArray)
// Container object for data collected during simple stack trace captures.
class FrameArray : public FixedArray {
public:
#define DECL_FRAME_ARRAY_ACCESSORS(name, type) \
inline type name(int frame_ix) const; \
inline void Set##name(int frame_ix, type value);
FRAME_ARRAY_FIELD_LIST(DECL_FRAME_ARRAY_ACCESSORS)
#undef DECL_FRAME_ARRAY_ACCESSORS
inline bool IsWasmFrame(int frame_ix) const;
inline bool IsAsmJsWasmFrame(int frame_ix) const;
inline bool IsAnyWasmFrame(int frame_ix) const;
inline int FrameCount() const;
void ShrinkToFit(Isolate* isolate);
// Flags.
enum Flag {
kIsWasmFrame = 1 << 0,
kIsAsmJsWasmFrame = 1 << 1,
kIsStrict = 1 << 2,
kIsConstructor = 1 << 3,
kAsmJsAtNumberConversion = 1 << 4,
kIsAsync = 1 << 5,
kIsPromiseAll = 1 << 6,
kIsPromiseAny = 1 << 7
};
static Handle<FrameArray> AppendJSFrame(Handle<FrameArray> in,
Handle<Object> receiver,
Handle<JSFunction> function,
Handle<AbstractCode> code, int offset,
int flags,
Handle<FixedArray> parameters);
static Handle<FrameArray> AppendWasmFrame(
Handle<FrameArray> in, Handle<WasmInstanceObject> wasm_instance,
int wasm_function_index, wasm::WasmCode* code, int offset, int flags);
DECL_CAST(FrameArray)
private:
// The underlying fixed array embodies a captured stack trace. Frame i
// occupies indices
//
// kFirstIndex + 1 + [i * kElementsPerFrame, (i + 1) * kElementsPerFrame[,
//
// with internal offsets as below:
static const int kWasmInstanceOffset = 0;
static const int kWasmFunctionIndexOffset = 1;
static const int kWasmCodeObjectOffset = 2;
static const int kReceiverOffset = 0;
static const int kFunctionOffset = 1;
static const int kCodeOffset = 2;
static const int kOffsetOffset = 3;
static const int kFlagsOffset = 4;
static const int kParametersOffset = 5;
static const int kElementsPerFrame = 6;
// Array layout indices.
static const int kFrameCountIndex = 0;
static const int kFirstIndex = 1;
static int LengthFor(int frame_count) {
return kFirstIndex + frame_count * kElementsPerFrame;
}
static Handle<FrameArray> EnsureSpace(Isolate* isolate,
Handle<FrameArray> array, int length);
friend class Factory;
OBJECT_CONSTRUCTORS(FrameArray, FixedArray);
};
} // namespace internal
} // namespace v8
#include "src/objects/object-macros-undef.h"
#endif // V8_OBJECTS_FRAME_ARRAY_H_
Morty Proxy This is a proxified and sanitized view of the page, visit original site.