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 716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
727 | 727 |
728 class StandardFrame : public StackFrame { | 728 class StandardFrame : public StackFrame { |
729 public: | 729 public: |
730 // Testers. | 730 // Testers. |
731 bool is_standard() const override { return true; } | 731 bool is_standard() const override { return true; } |
732 | 732 |
733 // Accessors. | 733 // Accessors. |
734 virtual Object* receiver() const; | 734 virtual Object* receiver() const; |
735 virtual Script* script() const; | 735 virtual Script* script() const; |
736 virtual Object* context() const; | 736 virtual Object* context() const; |
| 737 virtual int position() const; |
737 | 738 |
738 // Access the expressions in the stack frame including locals. | 739 // Access the expressions in the stack frame including locals. |
739 inline Object* GetExpression(int index) const; | 740 inline Object* GetExpression(int index) const; |
740 inline void SetExpression(int index, Object* value); | 741 inline void SetExpression(int index, Object* value); |
741 int ComputeExpressionsCount() const; | 742 int ComputeExpressionsCount() const; |
742 | 743 |
743 // Access the parameters. | 744 // Access the parameters. |
744 virtual Object* GetParameter(int index) const; | 745 virtual Object* GetParameter(int index) const; |
745 virtual int ComputeParametersCount() const; | 746 virtual int ComputeParametersCount() const; |
746 | 747 |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
950 friend class StackFrameIteratorBase; | 951 friend class StackFrameIteratorBase; |
951 | 952 |
952 Object* StackSlotAt(int index) const; | 953 Object* StackSlotAt(int index) const; |
953 }; | 954 }; |
954 | 955 |
955 | 956 |
956 class InterpretedFrame : public JavaScriptFrame { | 957 class InterpretedFrame : public JavaScriptFrame { |
957 public: | 958 public: |
958 Type type() const override { return INTERPRETED; } | 959 Type type() const override { return INTERPRETED; } |
959 | 960 |
| 961 // Accessors. |
| 962 int position() const override; |
| 963 |
960 // Lookup exception handler for current {pc}, returns -1 if none found. | 964 // Lookup exception handler for current {pc}, returns -1 if none found. |
961 int LookupExceptionHandlerInTable( | 965 int LookupExceptionHandlerInTable( |
962 int* data, HandlerTable::CatchPrediction* prediction) override; | 966 int* data, HandlerTable::CatchPrediction* prediction) override; |
963 | 967 |
964 // Returns the current offset into the bytecode stream. | 968 // Returns the current offset into the bytecode stream. |
965 int GetBytecodeOffset() const; | 969 int GetBytecodeOffset() const; |
966 | 970 |
967 // Updates the current offset into the bytecode stream, mainly used for stack | 971 // Updates the current offset into the bytecode stream, mainly used for stack |
968 // unwinding to continue execution at a different bytecode offset. | 972 // unwinding to continue execution at a different bytecode offset. |
969 void PatchBytecodeOffset(int new_offset); | 973 void PatchBytecodeOffset(int new_offset); |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1060 // returns the stack slot count of the entire frame. | 1064 // returns the stack slot count of the entire frame. |
1061 int LookupExceptionHandlerInTable(int* data); | 1065 int LookupExceptionHandlerInTable(int* data); |
1062 | 1066 |
1063 // Determine the code for the frame. | 1067 // Determine the code for the frame. |
1064 Code* unchecked_code() const override; | 1068 Code* unchecked_code() const override; |
1065 | 1069 |
1066 // Accessors. | 1070 // Accessors. |
1067 Object* wasm_obj() const; | 1071 Object* wasm_obj() const; |
1068 uint32_t function_index() const; | 1072 uint32_t function_index() const; |
1069 Script* script() const override; | 1073 Script* script() const override; |
| 1074 int position() const override; |
1070 | 1075 |
1071 static WasmFrame* cast(StackFrame* frame) { | 1076 static WasmFrame* cast(StackFrame* frame) { |
1072 DCHECK(frame->is_wasm()); | 1077 DCHECK(frame->is_wasm()); |
1073 return static_cast<WasmFrame*>(frame); | 1078 return static_cast<WasmFrame*>(frame); |
1074 } | 1079 } |
1075 | 1080 |
1076 protected: | 1081 protected: |
1077 inline explicit WasmFrame(StackFrameIteratorBase* iterator); | 1082 inline explicit WasmFrame(StackFrameIteratorBase* iterator); |
1078 | 1083 |
1079 Address GetCallerStackPointer() const override; | 1084 Address GetCallerStackPointer() const override; |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1321 | 1326 |
1322 | 1327 |
1323 // Reads all frames on the current stack and copies them into the current | 1328 // Reads all frames on the current stack and copies them into the current |
1324 // zone memory. | 1329 // zone memory. |
1325 Vector<StackFrame*> CreateStackMap(Isolate* isolate, Zone* zone); | 1330 Vector<StackFrame*> CreateStackMap(Isolate* isolate, Zone* zone); |
1326 | 1331 |
1327 } // namespace internal | 1332 } // namespace internal |
1328 } // namespace v8 | 1333 } // namespace v8 |
1329 | 1334 |
1330 #endif // V8_FRAMES_H_ | 1335 #endif // V8_FRAMES_H_ |
OLD | NEW |