| 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 |