/src/node/deps/v8/include/v8-message.h
Line | Count | Source (jump to first uncovered line) |
1 | | // Copyright 2021 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 INCLUDE_V8_MESSAGE_H_ |
6 | | #define INCLUDE_V8_MESSAGE_H_ |
7 | | |
8 | | #include <stdio.h> |
9 | | |
10 | | #include <iosfwd> |
11 | | |
12 | | #include "v8-local-handle.h" // NOLINT(build/include_directory) |
13 | | #include "v8-maybe.h" // NOLINT(build/include_directory) |
14 | | #include "v8-primitive.h" // NOLINT(build/include_directory) |
15 | | #include "v8config.h" // NOLINT(build/include_directory) |
16 | | |
17 | | namespace v8 { |
18 | | |
19 | | class Integer; |
20 | | class PrimitiveArray; |
21 | | class StackTrace; |
22 | | class String; |
23 | | class Value; |
24 | | |
25 | | /** |
26 | | * The optional attributes of ScriptOrigin. |
27 | | */ |
28 | | class ScriptOriginOptions { |
29 | | public: |
30 | | V8_INLINE ScriptOriginOptions(bool is_shared_cross_origin = false, |
31 | | bool is_opaque = false, bool is_wasm = false, |
32 | | bool is_module = false) |
33 | 12.8M | : flags_((is_shared_cross_origin ? kIsSharedCrossOrigin : 0) | |
34 | 12.8M | (is_wasm ? kIsWasm : 0) | (is_opaque ? kIsOpaque : 0) | |
35 | 12.8M | (is_module ? kIsModule : 0)) {} |
36 | | V8_INLINE ScriptOriginOptions(int flags) |
37 | | : flags_(flags & |
38 | 0 | (kIsSharedCrossOrigin | kIsOpaque | kIsWasm | kIsModule)) {} |
39 | | |
40 | 0 | bool IsSharedCrossOrigin() const { |
41 | 0 | return (flags_ & kIsSharedCrossOrigin) != 0; |
42 | 0 | } |
43 | 0 | bool IsOpaque() const { return (flags_ & kIsOpaque) != 0; } |
44 | 0 | bool IsWasm() const { return (flags_ & kIsWasm) != 0; } |
45 | 0 | bool IsModule() const { return (flags_ & kIsModule) != 0; } |
46 | | |
47 | 0 | int Flags() const { return flags_; } |
48 | | |
49 | | private: |
50 | | enum { |
51 | | kIsSharedCrossOrigin = 1, |
52 | | kIsOpaque = 1 << 1, |
53 | | kIsWasm = 1 << 2, |
54 | | kIsModule = 1 << 3 |
55 | | }; |
56 | | const int flags_; |
57 | | }; |
58 | | |
59 | | /** |
60 | | * The origin, within a file, of a script. |
61 | | */ |
62 | | class V8_EXPORT ScriptOrigin { |
63 | | public: |
64 | | V8_DEPRECATE_SOON("Use constructor without the isolate.") |
65 | | V8_INLINE ScriptOrigin(Isolate* isolate, Local<Value> resource_name, |
66 | | int resource_line_offset = 0, |
67 | | int resource_column_offset = 0, |
68 | | bool resource_is_shared_cross_origin = false, |
69 | | int script_id = -1, |
70 | | Local<Value> source_map_url = Local<Value>(), |
71 | | bool resource_is_opaque = false, bool is_wasm = false, |
72 | | bool is_module = false, |
73 | | Local<Data> host_defined_options = Local<Data>()) |
74 | 12.8M | : resource_name_(resource_name), |
75 | 12.8M | resource_line_offset_(resource_line_offset), |
76 | 12.8M | resource_column_offset_(resource_column_offset), |
77 | 12.8M | options_(resource_is_shared_cross_origin, resource_is_opaque, is_wasm, |
78 | 12.8M | is_module), |
79 | 12.8M | script_id_(script_id), |
80 | 12.8M | source_map_url_(source_map_url), |
81 | 12.8M | host_defined_options_(host_defined_options) { |
82 | 12.8M | VerifyHostDefinedOptions(); |
83 | 12.8M | } |
84 | | |
85 | | V8_INLINE ScriptOrigin(Local<Value> resource_name, |
86 | | int resource_line_offset = 0, |
87 | | int resource_column_offset = 0, |
88 | | bool resource_is_shared_cross_origin = false, |
89 | | int script_id = -1, |
90 | | Local<Value> source_map_url = Local<Value>(), |
91 | | bool resource_is_opaque = false, bool is_wasm = false, |
92 | | bool is_module = false, |
93 | | Local<Data> host_defined_options = Local<Data>()) |
94 | | : resource_name_(resource_name), |
95 | | resource_line_offset_(resource_line_offset), |
96 | | resource_column_offset_(resource_column_offset), |
97 | | options_(resource_is_shared_cross_origin, resource_is_opaque, is_wasm, |
98 | | is_module), |
99 | | script_id_(script_id), |
100 | | source_map_url_(source_map_url), |
101 | 0 | host_defined_options_(host_defined_options) { |
102 | 0 | VerifyHostDefinedOptions(); |
103 | 0 | } |
104 | | |
105 | | V8_INLINE Local<Value> ResourceName() const; |
106 | | V8_INLINE int LineOffset() const; |
107 | | V8_INLINE int ColumnOffset() const; |
108 | | V8_INLINE int ScriptId() const; |
109 | | V8_INLINE Local<Value> SourceMapUrl() const; |
110 | | V8_INLINE Local<Data> GetHostDefinedOptions() const; |
111 | 12.8M | V8_INLINE ScriptOriginOptions Options() const { return options_; } |
112 | | |
113 | | private: |
114 | | void VerifyHostDefinedOptions() const; |
115 | | Local<Value> resource_name_; |
116 | | int resource_line_offset_; |
117 | | int resource_column_offset_; |
118 | | ScriptOriginOptions options_; |
119 | | int script_id_; |
120 | | Local<Value> source_map_url_; |
121 | | Local<Data> host_defined_options_; |
122 | | }; |
123 | | |
124 | | /** |
125 | | * An error message. |
126 | | */ |
127 | | class V8_EXPORT Message { |
128 | | public: |
129 | | Local<String> Get() const; |
130 | | |
131 | | /** |
132 | | * Return the isolate to which the Message belongs. |
133 | | */ |
134 | | Isolate* GetIsolate() const; |
135 | | |
136 | | V8_WARN_UNUSED_RESULT MaybeLocal<String> GetSource( |
137 | | Local<Context> context) const; |
138 | | V8_WARN_UNUSED_RESULT MaybeLocal<String> GetSourceLine( |
139 | | Local<Context> context) const; |
140 | | |
141 | | /** |
142 | | * Returns the origin for the script from where the function causing the |
143 | | * error originates. |
144 | | */ |
145 | | ScriptOrigin GetScriptOrigin() const; |
146 | | |
147 | | /** |
148 | | * Returns the resource name for the script from where the function causing |
149 | | * the error originates. |
150 | | */ |
151 | | Local<Value> GetScriptResourceName() const; |
152 | | |
153 | | /** |
154 | | * Exception stack trace. By default stack traces are not captured for |
155 | | * uncaught exceptions. SetCaptureStackTraceForUncaughtExceptions allows |
156 | | * to change this option. |
157 | | */ |
158 | | Local<StackTrace> GetStackTrace() const; |
159 | | |
160 | | /** |
161 | | * Returns the number, 1-based, of the line where the error occurred. |
162 | | */ |
163 | | V8_WARN_UNUSED_RESULT Maybe<int> GetLineNumber(Local<Context> context) const; |
164 | | |
165 | | /** |
166 | | * Returns the index within the script of the first character where |
167 | | * the error occurred. |
168 | | */ |
169 | | int GetStartPosition() const; |
170 | | |
171 | | /** |
172 | | * Returns the index within the script of the last character where |
173 | | * the error occurred. |
174 | | */ |
175 | | int GetEndPosition() const; |
176 | | |
177 | | /** |
178 | | * Returns the Wasm function index where the error occurred. Returns -1 if |
179 | | * message is not from a Wasm script. |
180 | | */ |
181 | | int GetWasmFunctionIndex() const; |
182 | | |
183 | | /** |
184 | | * Returns the error level of the message. |
185 | | */ |
186 | | int ErrorLevel() const; |
187 | | |
188 | | /** |
189 | | * Returns the index within the line of the first character where |
190 | | * the error occurred. |
191 | | */ |
192 | | int GetStartColumn() const; |
193 | | V8_WARN_UNUSED_RESULT Maybe<int> GetStartColumn(Local<Context> context) const; |
194 | | |
195 | | /** |
196 | | * Returns the index within the line of the last character where |
197 | | * the error occurred. |
198 | | */ |
199 | | int GetEndColumn() const; |
200 | | V8_WARN_UNUSED_RESULT Maybe<int> GetEndColumn(Local<Context> context) const; |
201 | | |
202 | | /** |
203 | | * Passes on the value set by the embedder when it fed the script from which |
204 | | * this Message was generated to V8. |
205 | | */ |
206 | | bool IsSharedCrossOrigin() const; |
207 | | bool IsOpaque() const; |
208 | | |
209 | | static void PrintCurrentStackTrace(Isolate* isolate, std::ostream& out); |
210 | | |
211 | | static const int kNoLineNumberInfo = 0; |
212 | | static const int kNoColumnInfo = 0; |
213 | | static const int kNoScriptIdInfo = 0; |
214 | | static const int kNoWasmFunctionIndexInfo = -1; |
215 | | }; |
216 | | |
217 | 12.8M | Local<Value> ScriptOrigin::ResourceName() const { return resource_name_; } |
218 | | |
219 | 12.8M | Local<Data> ScriptOrigin::GetHostDefinedOptions() const { |
220 | 12.8M | return host_defined_options_; |
221 | 12.8M | } |
222 | | |
223 | 13.0M | int ScriptOrigin::LineOffset() const { return resource_line_offset_; } |
224 | | |
225 | 12.8M | int ScriptOrigin::ColumnOffset() const { return resource_column_offset_; } |
226 | | |
227 | 0 | int ScriptOrigin::ScriptId() const { return script_id_; } |
228 | | |
229 | 13.2M | Local<Value> ScriptOrigin::SourceMapUrl() const { return source_map_url_; } |
230 | | |
231 | | } // namespace v8 |
232 | | |
233 | | #endif // INCLUDE_V8_MESSAGE_H_ |