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 683 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
694 static inline bool IsConstructFrame(Address fp); | 694 static inline bool IsConstructFrame(Address fp); |
695 | 695 |
696 // Used by OptimizedFrames and StubFrames. | 696 // Used by OptimizedFrames and StubFrames. |
697 void IterateCompiledFrame(ObjectVisitor* v) const; | 697 void IterateCompiledFrame(ObjectVisitor* v) const; |
698 | 698 |
699 private: | 699 private: |
700 friend class StackFrame; | 700 friend class StackFrame; |
701 friend class SafeStackFrameIterator; | 701 friend class SafeStackFrameIterator; |
702 }; | 702 }; |
703 | 703 |
704 class JavaScriptFrame; | |
705 | 704 |
706 class FrameSummary BASE_EMBEDDED { | 705 class FrameSummary BASE_EMBEDDED { |
707 public: | 706 public: |
708 FrameSummary(Object* receiver, JSFunction* function, | 707 FrameSummary(Object* receiver, JSFunction* function, |
709 AbstractCode* abstract_code, int code_offset, | 708 AbstractCode* abstract_code, int code_offset, |
710 bool is_constructor); | 709 bool is_constructor); |
711 | 710 |
712 static FrameSummary GetFirst(JavaScriptFrame* frame); | |
713 | |
714 Handle<Object> receiver() { return receiver_; } | 711 Handle<Object> receiver() { return receiver_; } |
715 Handle<JSFunction> function() { return function_; } | 712 Handle<JSFunction> function() { return function_; } |
716 Handle<AbstractCode> abstract_code() { return abstract_code_; } | 713 Handle<AbstractCode> abstract_code() { return abstract_code_; } |
717 int code_offset() { return code_offset_; } | 714 int code_offset() { return code_offset_; } |
718 bool is_constructor() { return is_constructor_; } | 715 bool is_constructor() { return is_constructor_; } |
719 | 716 |
720 void Print(); | 717 void Print(); |
721 | 718 |
722 private: | 719 private: |
723 Handle<Object> receiver_; | 720 Handle<Object> receiver_; |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
889 int* data, HandlerTable::CatchPrediction* prediction) override; | 886 int* data, HandlerTable::CatchPrediction* prediction) override; |
890 | 887 |
891 // Returns the current offset into the bytecode stream. | 888 // Returns the current offset into the bytecode stream. |
892 int GetBytecodeOffset() const; | 889 int GetBytecodeOffset() const; |
893 | 890 |
894 // Updates the current offset into the bytecode stream, mainly used for stack | 891 // Updates the current offset into the bytecode stream, mainly used for stack |
895 // unwinding to continue execution at a different bytecode offset. | 892 // unwinding to continue execution at a different bytecode offset. |
896 void PatchBytecodeOffset(int new_offset); | 893 void PatchBytecodeOffset(int new_offset); |
897 | 894 |
898 // Returns the frame's current bytecode array. | 895 // Returns the frame's current bytecode array. |
899 BytecodeArray* GetBytecodeArray() const; | 896 Object* GetBytecodeArray() const; |
900 | 897 |
901 // Updates the frame's BytecodeArray with |bytecode_array|. Used by the | 898 // Updates the frame's BytecodeArray with |bytecode_array|. Used by the |
902 // debugger to swap execution onto a BytecodeArray patched with breakpoints. | 899 // debugger to swap execution onto a BytecodeArray patched with breakpoints. |
903 void PatchBytecodeArray(BytecodeArray* bytecode_array); | 900 void PatchBytecodeArray(Object* bytecode_array); |
904 | 901 |
905 // Access to the interpreter register file for this frame. | 902 // Access to the interpreter register file for this frame. |
906 Object* GetInterpreterRegister(int register_index) const; | 903 Object* GetInterpreterRegister(int register_index) const; |
907 | 904 |
908 // Build a list with summaries for this frame including all inlined frames. | 905 // Build a list with summaries for this frame including all inlined frames. |
909 void Summarize(List<FrameSummary>* frames) override; | 906 void Summarize(List<FrameSummary>* frames) override; |
910 | 907 |
911 protected: | 908 protected: |
912 inline explicit InterpretedFrame(StackFrameIteratorBase* iterator); | 909 inline explicit InterpretedFrame(StackFrameIteratorBase* iterator); |
913 | 910 |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1203 | 1200 |
1204 | 1201 |
1205 // Reads all frames on the current stack and copies them into the current | 1202 // Reads all frames on the current stack and copies them into the current |
1206 // zone memory. | 1203 // zone memory. |
1207 Vector<StackFrame*> CreateStackMap(Isolate* isolate, Zone* zone); | 1204 Vector<StackFrame*> CreateStackMap(Isolate* isolate, Zone* zone); |
1208 | 1205 |
1209 } // namespace internal | 1206 } // namespace internal |
1210 } // namespace v8 | 1207 } // namespace v8 |
1211 | 1208 |
1212 #endif // V8_FRAMES_H_ | 1209 #endif // V8_FRAMES_H_ |
OLD | NEW |