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

Side by Side Diff: src/frames.h

Issue 17579005: Merge SafeStackTraceFrameIterator into SafeStackFrameIterator (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/frames.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 856 matching lines...) Expand 10 before | Expand all | Expand 10 after
867 bool IsValidFrame(); 867 bool IsValidFrame();
868 }; 868 };
869 869
870 870
871 class SafeStackFrameIterator BASE_EMBEDDED { 871 class SafeStackFrameIterator BASE_EMBEDDED {
872 public: 872 public:
873 SafeStackFrameIterator(Isolate* isolate, 873 SafeStackFrameIterator(Isolate* isolate,
874 Address fp, Address sp, 874 Address fp, Address sp,
875 Address low_bound, Address high_bound); 875 Address low_bound, Address high_bound);
876 876
877 StackFrame* frame() const { 877 inline JavaScriptFrame* frame() const;
878 ASSERT(!iteration_done_);
879 return iterator_.frame();
880 }
881 878
882 bool done() const { return iteration_done_ || iterator_.done(); } 879 bool done() const { return iteration_done_ || iterator_.done(); }
883
884 void Advance(); 880 void Advance();
885 881
886 static bool is_active(Isolate* isolate); 882 static bool is_active(Isolate* isolate);
887 883
888 private: 884 private:
885 void AdvanceOneFrame();
886
889 static bool IsWithinBounds( 887 static bool IsWithinBounds(
890 Address low_bound, Address high_bound, Address addr) { 888 Address low_bound, Address high_bound, Address addr) {
891 return low_bound <= addr && addr <= high_bound; 889 return low_bound <= addr && addr <= high_bound;
892 } 890 }
893 891
894 class StackAddressValidator { 892 class StackAddressValidator {
895 public: 893 public:
896 StackAddressValidator(Address low_bound, Address high_bound) 894 StackAddressValidator(Address low_bound, Address high_bound)
897 : low_bound_(low_bound), high_bound_(high_bound) { } 895 : low_bound_(low_bound), high_bound_(high_bound) { }
898 bool IsValid(Address addr) const { 896 bool IsValid(Address addr) const {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
938 936
939 ActiveCountMaintainer maintainer_; 937 ActiveCountMaintainer maintainer_;
940 StackAddressValidator stack_validator_; 938 StackAddressValidator stack_validator_;
941 const bool is_valid_top_; 939 const bool is_valid_top_;
942 const bool is_valid_fp_; 940 const bool is_valid_fp_;
943 bool iteration_done_; 941 bool iteration_done_;
944 StackFrameIterator iterator_; 942 StackFrameIterator iterator_;
945 }; 943 };
946 944
947 945
948 class SafeStackTraceFrameIterator BASE_EMBEDDED {
949 public:
950 SafeStackTraceFrameIterator(Isolate* isolate,
951 Address fp,
952 Address sp,
953 Address low_bound,
954 Address high_bound);
955
956 inline JavaScriptFrame* frame() const;
957
958 bool done() const { return iterator_.done(); }
959 void Advance();
960
961 private:
962 SafeStackFrameIterator iterator_;
963 };
964
965
966 class StackFrameLocator BASE_EMBEDDED { 946 class StackFrameLocator BASE_EMBEDDED {
967 public: 947 public:
968 explicit StackFrameLocator(Isolate* isolate) : iterator_(isolate) {} 948 explicit StackFrameLocator(Isolate* isolate) : iterator_(isolate) {}
969 949
970 // Find the nth JavaScript frame on the stack. The caller must 950 // Find the nth JavaScript frame on the stack. The caller must
971 // guarantee that such a frame exists. 951 // guarantee that such a frame exists.
972 JavaScriptFrame* FindJavaScriptFrame(int n); 952 JavaScriptFrame* FindJavaScriptFrame(int n);
973 953
974 private: 954 private:
975 StackFrameIterator iterator_; 955 StackFrameIterator iterator_;
976 }; 956 };
977 957
978 958
979 // Reads all frames on the current stack and copies them into the current 959 // Reads all frames on the current stack and copies them into the current
980 // zone memory. 960 // zone memory.
981 Vector<StackFrame*> CreateStackMap(Isolate* isolate, Zone* zone); 961 Vector<StackFrame*> CreateStackMap(Isolate* isolate, Zone* zone);
982 962
983 } } // namespace v8::internal 963 } } // namespace v8::internal
984 964
985 #endif // V8_FRAMES_H_ 965 #endif // V8_FRAMES_H_
OLDNEW
« no previous file with comments | « no previous file | src/frames.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698