Index: src/compiler.h |
diff --git a/src/compiler.h b/src/compiler.h |
index 00074c899b4d06dc58f6bb2adc52d01515fe660c..dbb513ccdb49c8c967cd26ac81a6e2955739de23 100644 |
--- a/src/compiler.h |
+++ b/src/compiler.h |
@@ -47,6 +47,12 @@ enum ParseRestriction { |
ONLY_SINGLE_FUNCTION_LITERAL // Only a single FunctionLiteral expression. |
}; |
+struct OffsetRange { |
+ OffsetRange(int from, int to) : from(from), to(to) {} |
+ int from; |
+ int to; |
+}; |
+ |
// CompilationInfo encapsulates some information known at compile time. It |
// is constructed based on the resources available at compile-time. |
class CompilationInfo { |
@@ -257,6 +263,20 @@ class CompilationInfo { |
prologue_offset_ = prologue_offset; |
} |
+ // Adds offset range [from, to) where fp register does not point |
+ // to the current frame base. Used in CPU profiler to detect stack |
+ // samples where top frame is not set up. |
+ inline void AddNoFrameRange(int from, int to) { |
+ if (no_frame_ranges_) no_frame_ranges_->Add(OffsetRange(from, to)); |
+ } |
+ |
+ List<OffsetRange>* ReleaseNoFrameRanges() { |
+ List<OffsetRange>* result = no_frame_ranges_; |
+ no_frame_ranges_ = NULL; |
+ return result; |
+ } |
+ |
+ |
private: |
Isolate* isolate_; |
@@ -361,6 +381,8 @@ class CompilationInfo { |
int prologue_offset_; |
+ List<OffsetRange>* no_frame_ranges_; |
+ |
// A copy of shared_info()->opt_count() to avoid handle deref |
// during graph optimization. |
int opt_count_; |