| Index: src/frames.h
|
| diff --git a/src/frames.h b/src/frames.h
|
| index ed02c6e62496031912b39adf5ccbfbf9f9a66fa9..b2eec8bf0046b816f9d3115f865dc5089b85a553 100644
|
| --- a/src/frames.h
|
| +++ b/src/frames.h
|
| @@ -635,9 +635,16 @@ class JavaScriptFrame;
|
|
|
| class FrameSummary BASE_EMBEDDED {
|
| public:
|
| + // Mode for StandardFrame::Summarize. Exact summary is required to produce an
|
| + // exact stack trace. It will trigger an assertion failure if that is not
|
| + // possible, e.g., because of missing deoptimization information. The
|
| + // approximate mode should produce a summary even without deoptimization
|
| + // information, but it might miss frames.
|
| + enum Mode { kExactSummary, kApproximateSummary };
|
| +
|
| FrameSummary(Object* receiver, JSFunction* function,
|
| AbstractCode* abstract_code, int code_offset,
|
| - bool is_constructor);
|
| + bool is_constructor, Mode mode = kExactSummary);
|
|
|
| static FrameSummary GetFirst(JavaScriptFrame* frame);
|
|
|
| @@ -678,7 +685,9 @@ class StandardFrame : public StackFrame {
|
| }
|
|
|
| // Build a list with summaries for this frame including all inlined frames.
|
| - virtual void Summarize(List<FrameSummary>* frames) const;
|
| + virtual void Summarize(
|
| + List<FrameSummary>* frames,
|
| + FrameSummary::Mode mode = FrameSummary::kExactSummary) const;
|
|
|
| // Accessors.
|
| virtual JSFunction* function() const;
|
| @@ -777,7 +786,9 @@ class JavaScriptFrame : public StandardFrame {
|
| // Return a list with JSFunctions of this frame.
|
| virtual void GetFunctions(List<JSFunction*>* functions) const;
|
|
|
| - void Summarize(List<FrameSummary>* frames) const override;
|
| + void Summarize(
|
| + List<FrameSummary>* frames,
|
| + FrameSummary::Mode mode = FrameSummary::kExactSummary) const override;
|
|
|
| // Lookup exception handler for current {pc}, returns -1 if none found. Also
|
| // returns data associated with the handler site specific to the frame type:
|
| @@ -855,7 +866,9 @@ class OptimizedFrame : public JavaScriptFrame {
|
| // is the top-most activation)
|
| void GetFunctions(List<JSFunction*>* functions) const override;
|
|
|
| - void Summarize(List<FrameSummary>* frames) const override;
|
| + void Summarize(
|
| + List<FrameSummary>* frames,
|
| + FrameSummary::Mode mode = FrameSummary::kExactSummary) const override;
|
|
|
| // Lookup exception handler for current {pc}, returns -1 if none found.
|
| int LookupExceptionHandlerInTable(
|
| @@ -902,7 +915,9 @@ class InterpretedFrame : public JavaScriptFrame {
|
| void WriteInterpreterRegister(int register_index, Object* value);
|
|
|
| // Build a list with summaries for this frame including all inlined frames.
|
| - void Summarize(List<FrameSummary>* frames) const override;
|
| + void Summarize(
|
| + List<FrameSummary>* frames,
|
| + FrameSummary::Mode mode = FrameSummary::kExactSummary) const override;
|
|
|
| protected:
|
| inline explicit InterpretedFrame(StackFrameIteratorBase* iterator);
|
| @@ -967,7 +982,9 @@ class WasmFrame : public StandardFrame {
|
|
|
| JSFunction* function() const override;
|
|
|
| - void Summarize(List<FrameSummary>* frames) const override;
|
| + void Summarize(
|
| + List<FrameSummary>* frames,
|
| + FrameSummary::Mode mode = FrameSummary::kExactSummary) const override;
|
|
|
| protected:
|
| inline explicit WasmFrame(StackFrameIteratorBase* iterator);
|
|
|