| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 #ifndef V8_FRAMES_H_ | 5 #ifndef V8_FRAMES_H_ |
| 6 #define V8_FRAMES_H_ | 6 #define V8_FRAMES_H_ |
| 7 | 7 |
| 8 #include "src/allocation.h" | 8 #include "src/allocation.h" |
| 9 #include "src/handles.h" | 9 #include "src/handles.h" |
| 10 #include "src/safepoint-table.h" | 10 #include "src/safepoint-table.h" |
| (...skipping 652 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 663 static BuiltinExitFrame* cast(StackFrame* frame) { | 663 static BuiltinExitFrame* cast(StackFrame* frame) { |
| 664 DCHECK(frame->is_builtin_exit()); | 664 DCHECK(frame->is_builtin_exit()); |
| 665 return static_cast<BuiltinExitFrame*>(frame); | 665 return static_cast<BuiltinExitFrame*>(frame); |
| 666 } | 666 } |
| 667 | 667 |
| 668 JSFunction* function() const; | 668 JSFunction* function() const; |
| 669 Object* receiver() const; | 669 Object* receiver() const; |
| 670 | 670 |
| 671 bool IsConstructor() const; | 671 bool IsConstructor() const; |
| 672 | 672 |
| 673 void Print(StringStream* accumulator, PrintMode mode, |
| 674 int index) const override; |
| 675 |
| 673 protected: | 676 protected: |
| 674 inline explicit BuiltinExitFrame(StackFrameIteratorBase* iterator); | 677 inline explicit BuiltinExitFrame(StackFrameIteratorBase* iterator); |
| 675 | 678 |
| 676 private: | 679 private: |
| 680 Object* GetParameter(int i) const; |
| 681 int ComputeParametersCount() const; |
| 682 |
| 683 inline Object* receiver_slot_object() const; |
| 684 inline Object* argc_slot_object() const; |
| 677 inline Object* target_slot_object() const; | 685 inline Object* target_slot_object() const; |
| 678 inline Object* new_target_slot_object() const; | 686 inline Object* new_target_slot_object() const; |
| 679 inline Object* receiver_slot_object() const; | |
| 680 | 687 |
| 681 friend class StackFrameIteratorBase; | 688 friend class StackFrameIteratorBase; |
| 682 }; | 689 }; |
| 683 | 690 |
| 684 class JavaScriptFrame; | 691 class JavaScriptFrame; |
| 685 | 692 |
| 686 class FrameSummary BASE_EMBEDDED { | 693 class FrameSummary BASE_EMBEDDED { |
| 687 public: | 694 public: |
| 688 // Mode for JavaScriptFrame::Summarize. Exact summary is required to produce | 695 // Mode for JavaScriptFrame::Summarize. Exact summary is required to produce |
| 689 // an exact stack trace. It will trigger an assertion failure if that is not | 696 // an exact stack trace. It will trigger an assertion failure if that is not |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 871 inline explicit JavaScriptFrame(StackFrameIteratorBase* iterator); | 878 inline explicit JavaScriptFrame(StackFrameIteratorBase* iterator); |
| 872 | 879 |
| 873 Address GetCallerStackPointer() const override; | 880 Address GetCallerStackPointer() const override; |
| 874 | 881 |
| 875 virtual int GetNumberOfIncomingArguments() const; | 882 virtual int GetNumberOfIncomingArguments() const; |
| 876 | 883 |
| 877 // Garbage collection support. Iterates over incoming arguments, | 884 // Garbage collection support. Iterates over incoming arguments, |
| 878 // receiver, and any callee-saved registers. | 885 // receiver, and any callee-saved registers. |
| 879 void IterateArguments(ObjectVisitor* v) const; | 886 void IterateArguments(ObjectVisitor* v) const; |
| 880 | 887 |
| 888 virtual void PrintFrameKind(StringStream* accumulator) const {} |
| 889 |
| 881 private: | 890 private: |
| 882 inline Object* function_slot_object() const; | 891 inline Object* function_slot_object() const; |
| 883 | 892 |
| 884 friend class StackFrameIteratorBase; | 893 friend class StackFrameIteratorBase; |
| 885 }; | 894 }; |
| 886 | 895 |
| 887 | 896 |
| 888 class StubFrame : public StandardFrame { | 897 class StubFrame : public StandardFrame { |
| 889 public: | 898 public: |
| 890 Type type() const override { return STUB; } | 899 Type type() const override { return STUB; } |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1015 // various standard library functions (i.e. Math.asin, Math.floor, etc.). | 1024 // various standard library functions (i.e. Math.asin, Math.floor, etc.). |
| 1016 class BuiltinFrame final : public JavaScriptFrame { | 1025 class BuiltinFrame final : public JavaScriptFrame { |
| 1017 public: | 1026 public: |
| 1018 Type type() const final { return BUILTIN; } | 1027 Type type() const final { return BUILTIN; } |
| 1019 | 1028 |
| 1020 static BuiltinFrame* cast(StackFrame* frame) { | 1029 static BuiltinFrame* cast(StackFrame* frame) { |
| 1021 DCHECK(frame->is_builtin()); | 1030 DCHECK(frame->is_builtin()); |
| 1022 return static_cast<BuiltinFrame*>(frame); | 1031 return static_cast<BuiltinFrame*>(frame); |
| 1023 } | 1032 } |
| 1024 | 1033 |
| 1025 // Printing support. | |
| 1026 void Print(StringStream* accumulator, PrintMode mode, int index) const final; | |
| 1027 | |
| 1028 protected: | 1034 protected: |
| 1029 inline explicit BuiltinFrame(StackFrameIteratorBase* iterator); | 1035 inline explicit BuiltinFrame(StackFrameIteratorBase* iterator); |
| 1030 | 1036 |
| 1031 int GetNumberOfIncomingArguments() const final; | 1037 int GetNumberOfIncomingArguments() const final; |
| 1038 void PrintFrameKind(StringStream* accumulator) const override; |
| 1032 | 1039 |
| 1033 private: | 1040 private: |
| 1034 friend class StackFrameIteratorBase; | 1041 friend class StackFrameIteratorBase; |
| 1035 }; | 1042 }; |
| 1036 | 1043 |
| 1037 class WasmFrame : public StandardFrame { | 1044 class WasmFrame : public StandardFrame { |
| 1038 public: | 1045 public: |
| 1039 Type type() const override { return WASM; } | 1046 Type type() const override { return WASM; } |
| 1040 | 1047 |
| 1041 // GC support. | 1048 // GC support. |
| (...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1306 | 1313 |
| 1307 | 1314 |
| 1308 // Reads all frames on the current stack and copies them into the current | 1315 // Reads all frames on the current stack and copies them into the current |
| 1309 // zone memory. | 1316 // zone memory. |
| 1310 Vector<StackFrame*> CreateStackMap(Isolate* isolate, Zone* zone); | 1317 Vector<StackFrame*> CreateStackMap(Isolate* isolate, Zone* zone); |
| 1311 | 1318 |
| 1312 } // namespace internal | 1319 } // namespace internal |
| 1313 } // namespace v8 | 1320 } // namespace v8 |
| 1314 | 1321 |
| 1315 #endif // V8_FRAMES_H_ | 1322 #endif // V8_FRAMES_H_ |
| OLD | NEW |