OLD | NEW |
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // The infrastructure used for (localized) message reporting in V8. | 5 // The infrastructure used for (localized) message reporting in V8. |
6 // | 6 // |
7 // Note: there's a big unresolved issue about ownership of the data | 7 // Note: there's a big unresolved issue about ownership of the data |
8 // structures used by this framework. | 8 // structures used by this framework. |
9 | 9 |
10 #ifndef V8_MESSAGES_H_ | 10 #ifndef V8_MESSAGES_H_ |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 virtual ~StackFrameBase() {} | 49 virtual ~StackFrameBase() {} |
50 | 50 |
51 virtual Handle<Object> GetReceiver() const = 0; | 51 virtual Handle<Object> GetReceiver() const = 0; |
52 virtual Handle<Object> GetFunction() const = 0; | 52 virtual Handle<Object> GetFunction() const = 0; |
53 | 53 |
54 virtual Handle<Object> GetFileName() = 0; | 54 virtual Handle<Object> GetFileName() = 0; |
55 virtual Handle<Object> GetFunctionName() = 0; | 55 virtual Handle<Object> GetFunctionName() = 0; |
56 virtual Handle<Object> GetScriptNameOrSourceUrl() = 0; | 56 virtual Handle<Object> GetScriptNameOrSourceUrl() = 0; |
57 virtual Handle<Object> GetMethodName() = 0; | 57 virtual Handle<Object> GetMethodName() = 0; |
58 virtual Handle<Object> GetTypeName() = 0; | 58 virtual Handle<Object> GetTypeName() = 0; |
59 virtual Handle<Object> GetEvalOrigin() = 0; | 59 virtual Handle<Object> GetEvalOrigin(); |
60 | 60 |
61 virtual int GetPosition() const = 0; | 61 virtual int GetPosition() const = 0; |
62 // Return 1-based line number, including line offset. | 62 // Return 1-based line number, including line offset. |
63 virtual int GetLineNumber() = 0; | 63 virtual int GetLineNumber() = 0; |
64 // Return 1-based column number, including column offset if first line. | 64 // Return 1-based column number, including column offset if first line. |
65 virtual int GetColumnNumber() = 0; | 65 virtual int GetColumnNumber() = 0; |
66 | 66 |
67 virtual bool IsNative() = 0; | 67 virtual bool IsNative() = 0; |
68 virtual bool IsToplevel() = 0; | 68 virtual bool IsToplevel() = 0; |
69 virtual bool IsEval() = 0; | 69 virtual bool IsEval(); |
70 virtual bool IsConstructor() = 0; | 70 virtual bool IsConstructor() = 0; |
71 virtual bool IsStrict() const = 0; | 71 virtual bool IsStrict() const = 0; |
72 | 72 |
73 virtual MaybeHandle<String> ToString() = 0; | 73 virtual MaybeHandle<String> ToString() = 0; |
| 74 |
| 75 protected: |
| 76 StackFrameBase() {} |
| 77 explicit StackFrameBase(Isolate* isolate) : isolate_(isolate) {} |
| 78 Isolate* isolate_; |
| 79 |
| 80 private: |
| 81 virtual bool HasScript() const = 0; |
| 82 virtual Handle<Script> GetScript() const = 0; |
74 }; | 83 }; |
75 | 84 |
76 class JSStackFrame : public StackFrameBase { | 85 class JSStackFrame : public StackFrameBase { |
77 public: | 86 public: |
78 JSStackFrame(Isolate* isolate, Handle<Object> receiver, | 87 JSStackFrame(Isolate* isolate, Handle<Object> receiver, |
79 Handle<JSFunction> function, Handle<AbstractCode> code, | 88 Handle<JSFunction> function, Handle<AbstractCode> code, |
80 int offset); | 89 int offset); |
81 virtual ~JSStackFrame() {} | 90 virtual ~JSStackFrame() {} |
82 | 91 |
83 Handle<Object> GetReceiver() const override { return receiver_; } | 92 Handle<Object> GetReceiver() const override { return receiver_; } |
84 Handle<Object> GetFunction() const override; | 93 Handle<Object> GetFunction() const override; |
85 | 94 |
86 Handle<Object> GetFileName() override; | 95 Handle<Object> GetFileName() override; |
87 Handle<Object> GetFunctionName() override; | 96 Handle<Object> GetFunctionName() override; |
88 Handle<Object> GetScriptNameOrSourceUrl() override; | 97 Handle<Object> GetScriptNameOrSourceUrl() override; |
89 Handle<Object> GetMethodName() override; | 98 Handle<Object> GetMethodName() override; |
90 Handle<Object> GetTypeName() override; | 99 Handle<Object> GetTypeName() override; |
91 Handle<Object> GetEvalOrigin() override; | |
92 | 100 |
93 int GetPosition() const override; | 101 int GetPosition() const override; |
94 int GetLineNumber() override; | 102 int GetLineNumber() override; |
95 int GetColumnNumber() override; | 103 int GetColumnNumber() override; |
96 | 104 |
97 bool IsNative() override; | 105 bool IsNative() override; |
98 bool IsToplevel() override; | 106 bool IsToplevel() override; |
99 bool IsEval() override; | |
100 bool IsConstructor() override; | 107 bool IsConstructor() override; |
101 bool IsStrict() const override { return is_strict_; } | 108 bool IsStrict() const override { return is_strict_; } |
102 | 109 |
103 MaybeHandle<String> ToString() override; | 110 MaybeHandle<String> ToString() override; |
104 | 111 |
105 private: | 112 private: |
106 JSStackFrame(); | 113 JSStackFrame(); |
107 void FromFrameArray(Isolate* isolate, Handle<FrameArray> array, int frame_ix); | 114 void FromFrameArray(Isolate* isolate, Handle<FrameArray> array, int frame_ix); |
108 | 115 |
109 bool HasScript() const; | 116 bool HasScript() const override; |
110 Handle<Script> GetScript() const; | 117 Handle<Script> GetScript() const override; |
111 | |
112 Isolate* isolate_; | |
113 | 118 |
114 Handle<Object> receiver_; | 119 Handle<Object> receiver_; |
115 Handle<JSFunction> function_; | 120 Handle<JSFunction> function_; |
116 Handle<AbstractCode> code_; | 121 Handle<AbstractCode> code_; |
117 int offset_; | 122 int offset_; |
118 | 123 |
119 bool force_constructor_; | 124 bool force_constructor_; |
120 bool is_strict_; | 125 bool is_strict_; |
121 | 126 |
122 friend class FrameArrayIterator; | 127 friend class FrameArrayIterator; |
123 }; | 128 }; |
124 | 129 |
125 class WasmStackFrame : public StackFrameBase { | 130 class WasmStackFrame : public StackFrameBase { |
126 public: | 131 public: |
127 virtual ~WasmStackFrame() {} | 132 virtual ~WasmStackFrame() {} |
128 | 133 |
129 Handle<Object> GetReceiver() const override { return wasm_instance_; } | 134 Handle<Object> GetReceiver() const override { return wasm_instance_; } |
130 Handle<Object> GetFunction() const override; | 135 Handle<Object> GetFunction() const override; |
131 | 136 |
132 Handle<Object> GetFileName() override { return Null(); } | 137 Handle<Object> GetFileName() override { return Null(); } |
133 Handle<Object> GetFunctionName() override; | 138 Handle<Object> GetFunctionName() override; |
134 Handle<Object> GetScriptNameOrSourceUrl() override { return Null(); } | 139 Handle<Object> GetScriptNameOrSourceUrl() override { return Null(); } |
135 Handle<Object> GetMethodName() override { return Null(); } | 140 Handle<Object> GetMethodName() override { return Null(); } |
136 Handle<Object> GetTypeName() override { return Null(); } | 141 Handle<Object> GetTypeName() override { return Null(); } |
137 Handle<Object> GetEvalOrigin() override { return Null(); } | |
138 | 142 |
139 int GetPosition() const override; | 143 int GetPosition() const override; |
140 int GetLineNumber() override { return wasm_func_index_; } | 144 int GetLineNumber() override { return wasm_func_index_; } |
141 int GetColumnNumber() override { return -1; } | 145 int GetColumnNumber() override { return -1; } |
142 | 146 |
143 bool IsNative() override { return false; } | 147 bool IsNative() override { return false; } |
144 bool IsToplevel() override { return false; } | 148 bool IsToplevel() override { return false; } |
145 bool IsEval() override { return false; } | |
146 bool IsConstructor() override { return false; } | 149 bool IsConstructor() override { return false; } |
147 bool IsStrict() const override { return false; } | 150 bool IsStrict() const override { return false; } |
148 | 151 |
149 MaybeHandle<String> ToString() override; | 152 MaybeHandle<String> ToString() override; |
150 | 153 |
151 protected: | 154 protected: |
152 Handle<Object> Null() const; | 155 Handle<Object> Null() const; |
153 | 156 |
154 Isolate* isolate_; | 157 bool HasScript() const override; |
| 158 Handle<Script> GetScript() const override; |
155 | 159 |
156 // TODO(wasm): Use proper typing. | 160 // TODO(wasm): Use proper typing. |
157 Handle<Object> wasm_instance_; | 161 Handle<Object> wasm_instance_; |
158 uint32_t wasm_func_index_; | 162 uint32_t wasm_func_index_; |
159 Handle<AbstractCode> code_; | 163 Handle<AbstractCode> code_; |
160 int offset_; | 164 int offset_; |
161 | 165 |
162 private: | 166 private: |
| 167 WasmStackFrame(); |
163 void FromFrameArray(Isolate* isolate, Handle<FrameArray> array, int frame_ix); | 168 void FromFrameArray(Isolate* isolate, Handle<FrameArray> array, int frame_ix); |
164 | 169 |
165 friend class FrameArrayIterator; | 170 friend class FrameArrayIterator; |
166 friend class AsmJsWasmStackFrame; | 171 friend class AsmJsWasmStackFrame; |
167 }; | 172 }; |
168 | 173 |
169 class AsmJsWasmStackFrame : public WasmStackFrame { | 174 class AsmJsWasmStackFrame : public WasmStackFrame { |
170 public: | 175 public: |
171 virtual ~AsmJsWasmStackFrame() {} | 176 virtual ~AsmJsWasmStackFrame() {} |
172 | 177 |
173 Handle<Object> GetReceiver() const override; | 178 Handle<Object> GetReceiver() const override; |
174 Handle<Object> GetFunction() const override; | 179 Handle<Object> GetFunction() const override; |
175 | 180 |
176 Handle<Object> GetFileName() override; | 181 Handle<Object> GetFileName() override; |
177 Handle<Object> GetScriptNameOrSourceUrl() override; | 182 Handle<Object> GetScriptNameOrSourceUrl() override; |
178 | 183 |
179 int GetPosition() const override; | 184 int GetPosition() const override; |
180 int GetLineNumber() override; | 185 int GetLineNumber() override; |
181 int GetColumnNumber() override; | 186 int GetColumnNumber() override; |
182 | 187 |
183 MaybeHandle<String> ToString() override; | 188 MaybeHandle<String> ToString() override; |
184 | 189 |
185 private: | 190 private: |
186 friend class FrameArrayIterator; | 191 friend class FrameArrayIterator; |
| 192 AsmJsWasmStackFrame(); |
187 void FromFrameArray(Isolate* isolate, Handle<FrameArray> array, int frame_ix); | 193 void FromFrameArray(Isolate* isolate, Handle<FrameArray> array, int frame_ix); |
188 | 194 |
189 bool is_at_number_conversion_; | 195 bool is_at_number_conversion_; |
190 }; | 196 }; |
191 | 197 |
192 class FrameArrayIterator { | 198 class FrameArrayIterator { |
193 public: | 199 public: |
194 FrameArrayIterator(Isolate* isolate, Handle<FrameArray> array, | 200 FrameArrayIterator(Isolate* isolate, Handle<FrameArray> array, |
195 int frame_ix = 0); | 201 int frame_ix = 0); |
196 | 202 |
(...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
715 static Handle<String> GetMessage(Isolate* isolate, Handle<Object> data); | 721 static Handle<String> GetMessage(Isolate* isolate, Handle<Object> data); |
716 static std::unique_ptr<char[]> GetLocalizedMessage(Isolate* isolate, | 722 static std::unique_ptr<char[]> GetLocalizedMessage(Isolate* isolate, |
717 Handle<Object> data); | 723 Handle<Object> data); |
718 }; | 724 }; |
719 | 725 |
720 | 726 |
721 } // namespace internal | 727 } // namespace internal |
722 } // namespace v8 | 728 } // namespace v8 |
723 | 729 |
724 #endif // V8_MESSAGES_H_ | 730 #endif // V8_MESSAGES_H_ |
OLD | NEW |