Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(162)

Side by Side Diff: src/frames.h

Issue 2069823003: [wasm] Enable wasm frame inspection for debugging (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@split-wasm-debug
Patch Set: fix gcmole reports Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 653 matching lines...) Expand 10 before | Expand all | Expand 10 after
664 Handle<AbstractCode> abstract_code_; 664 Handle<AbstractCode> abstract_code_;
665 int code_offset_; 665 int code_offset_;
666 bool is_constructor_; 666 bool is_constructor_;
667 }; 667 };
668 668
669 class StandardFrame : public StackFrame { 669 class StandardFrame : public StackFrame {
670 public: 670 public:
671 // Testers. 671 // Testers.
672 bool is_standard() const override { return true; } 672 bool is_standard() const override { return true; }
673 673
674 // Accessors.
675 inline Object* context() const;
676
677 // Access the expressions in the stack frame including locals. 674 // Access the expressions in the stack frame including locals.
678 inline Object* GetExpression(int index) const; 675 inline Object* GetExpression(int index) const;
679 inline void SetExpression(int index, Object* value); 676 inline void SetExpression(int index, Object* value);
680 int ComputeExpressionsCount() const; 677 int ComputeExpressionsCount() const;
681 678
682 void SetCallerFp(Address caller_fp) override; 679 void SetCallerFp(Address caller_fp) override;
683 680
684 static StandardFrame* cast(StackFrame* frame) { 681 static StandardFrame* cast(StackFrame* frame) {
685 DCHECK(frame->is_standard()); 682 DCHECK(frame->is_standard());
686 return static_cast<StandardFrame*>(frame); 683 return static_cast<StandardFrame*>(frame);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
731 Type type() const override { return JAVA_SCRIPT; } 728 Type type() const override { return JAVA_SCRIPT; }
732 729
733 // Build a list with summaries for this frame including all inlined frames. 730 // Build a list with summaries for this frame including all inlined frames.
734 virtual void Summarize( 731 virtual void Summarize(
735 List<FrameSummary>* frames, 732 List<FrameSummary>* frames,
736 FrameSummary::Mode mode = FrameSummary::kExactSummary) const; 733 FrameSummary::Mode mode = FrameSummary::kExactSummary) const;
737 734
738 // Accessors. 735 // Accessors.
739 virtual JSFunction* function() const; 736 virtual JSFunction* function() const;
740 virtual Object* receiver() const; 737 virtual Object* receiver() const;
738 inline Object* context() const;
741 739
742 inline void set_receiver(Object* value); 740 inline void set_receiver(Object* value);
743 741
744 // Access the parameters. 742 // Access the parameters.
745 inline Address GetParameterSlot(int index) const; 743 inline Address GetParameterSlot(int index) const;
746 inline Object* GetParameter(int index) const; 744 inline Object* GetParameter(int index) const;
747 inline int ComputeParametersCount() const { 745 inline int ComputeParametersCount() const {
748 return GetNumberOfIncomingArguments(); 746 return GetNumberOfIncomingArguments();
749 } 747 }
750 748
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
963 // GC support. 961 // GC support.
964 void Iterate(ObjectVisitor* v) const override; 962 void Iterate(ObjectVisitor* v) const override;
965 963
966 // Printing support. 964 // Printing support.
967 void Print(StringStream* accumulator, PrintMode mode, 965 void Print(StringStream* accumulator, PrintMode mode,
968 int index) const override; 966 int index) const override;
969 967
970 // Determine the code for the frame. 968 // Determine the code for the frame.
971 Code* unchecked_code() const override; 969 Code* unchecked_code() const override;
972 970
973 Object* wasm_obj(); 971 // Accessors.
974 uint32_t function_index(); 972 Object* wasm_obj() const;
973 uint32_t function_index() const;
975 974
976 static WasmFrame* cast(StackFrame* frame) { 975 static WasmFrame* cast(StackFrame* frame) {
977 DCHECK(frame->is_wasm()); 976 DCHECK(frame->is_wasm());
978 return static_cast<WasmFrame*>(frame); 977 return static_cast<WasmFrame*>(frame);
979 } 978 }
980 979
981 protected: 980 protected:
982 inline explicit WasmFrame(StackFrameIteratorBase* iterator); 981 inline explicit WasmFrame(StackFrameIteratorBase* iterator);
983 982
984 Address GetCallerStackPointer() const override; 983 Address GetCallerStackPointer() const override;
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
1154 private: 1153 private:
1155 StackFrameIterator iterator_; 1154 StackFrameIterator iterator_;
1156 }; 1155 };
1157 1156
1158 // NOTE: The stack trace frame iterator is an iterator that only traverse proper 1157 // NOTE: The stack trace frame iterator is an iterator that only traverse proper
1159 // JavaScript frames that have proper JavaScript functions and WASM frames. 1158 // JavaScript frames that have proper JavaScript functions and WASM frames.
1160 // This excludes the problematic functions in runtime.js. 1159 // This excludes the problematic functions in runtime.js.
1161 class StackTraceFrameIterator BASE_EMBEDDED { 1160 class StackTraceFrameIterator BASE_EMBEDDED {
1162 public: 1161 public:
1163 explicit StackTraceFrameIterator(Isolate* isolate); 1162 explicit StackTraceFrameIterator(Isolate* isolate);
1163 StackTraceFrameIterator(Isolate* isolate, StackFrame::Id id);
1164 bool done() const { return iterator_.done(); } 1164 bool done() const { return iterator_.done(); }
1165 void Advance(); 1165 void Advance();
1166 1166
1167 inline StandardFrame* frame() const; 1167 inline StandardFrame* frame() const;
1168 1168
1169 inline bool is_javascript() const; 1169 inline bool is_javascript() const;
1170 inline bool is_wasm() const; 1170 inline bool is_wasm() const;
1171 inline JavaScriptFrame* javascript_frame() const; 1171 inline JavaScriptFrame* javascript_frame() const;
1172 inline WasmFrame* wasm_frame() const; 1172 inline WasmFrame* wasm_frame() const;
1173 1173
1174 // Advance to the frame holding the arguments for the current
1175 // frame. This only affects the current frame if it is a javascript frame and
1176 // has adapted arguments.
1177 void AdvanceToArgumentsFrame();
1178
1174 private: 1179 private:
1175 StackFrameIterator iterator_; 1180 StackFrameIterator iterator_;
1176 bool IsValidFrame(StackFrame* frame) const; 1181 bool IsValidFrame(StackFrame* frame) const;
1177 }; 1182 };
1178 1183
1179 1184
1180 class SafeStackFrameIterator: public StackFrameIteratorBase { 1185 class SafeStackFrameIterator: public StackFrameIteratorBase {
1181 public: 1186 public:
1182 SafeStackFrameIterator(Isolate* isolate, 1187 SafeStackFrameIterator(Isolate* isolate,
1183 Address fp, Address sp, 1188 Address fp, Address sp,
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1220 1225
1221 1226
1222 // Reads all frames on the current stack and copies them into the current 1227 // Reads all frames on the current stack and copies them into the current
1223 // zone memory. 1228 // zone memory.
1224 Vector<StackFrame*> CreateStackMap(Isolate* isolate, Zone* zone); 1229 Vector<StackFrame*> CreateStackMap(Isolate* isolate, Zone* zone);
1225 1230
1226 } // namespace internal 1231 } // namespace internal
1227 } // namespace v8 1232 } // namespace v8
1228 1233
1229 #endif // V8_FRAMES_H_ 1234 #endif // V8_FRAMES_H_
OLDNEW
« src/debug/mirrors.js ('K') | « src/debug/mirrors.js ('k') | src/frames.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698