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

Unified Diff: src/debug/debug-frames.cc

Issue 2619353006: Refactor FrameSummary for JS and Wasm frames (Closed)
Patch Set: Address comment Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/debug/debug-frames.h ('k') | src/frames.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/debug/debug-frames.cc
diff --git a/src/debug/debug-frames.cc b/src/debug/debug-frames.cc
index 979b089ee22ca47a952a5a7d23a05c51320f9e05..15d6ed5b4d161092f26f08e7a4d34e8710f5a420 100644
--- a/src/debug/debug-frames.cc
+++ b/src/debug/debug-frames.cc
@@ -5,22 +5,28 @@
#include "src/debug/debug-frames.h"
#include "src/frames-inl.h"
+#include "src/wasm/wasm-interpreter.h"
+#include "src/wasm/wasm-objects.h"
namespace v8 {
namespace internal {
-FrameInspector::FrameInspector(StandardFrame* frame, int inlined_jsframe_index,
+FrameInspector::FrameInspector(StandardFrame* frame, int inlined_frame_index,
Isolate* isolate)
- : frame_(frame), deoptimized_frame_(NULL), isolate_(isolate) {
+ : frame_(frame),
+ frame_summary_(FrameSummary::Get(frame, inlined_frame_index)),
+ deoptimized_frame_(nullptr),
+ isolate_(isolate) {
JavaScriptFrame* js_frame =
frame->is_java_script() ? javascript_frame() : nullptr;
DCHECK(js_frame || frame->is_wasm());
has_adapted_arguments_ = js_frame && js_frame->has_adapted_arguments();
- is_bottommost_ = inlined_jsframe_index == 0;
+ is_bottommost_ = inlined_frame_index == 0;
is_optimized_ = frame_->is_optimized();
is_interpreted_ = frame_->is_interpreted();
+
// Calculate the deoptimized frame.
- if (frame->is_optimized()) {
+ if (is_optimized_) {
DCHECK(js_frame != nullptr);
// TODO(turbofan): Revisit once we support deoptimization.
if (js_frame->LookupCode()->is_turbofanned() &&
@@ -30,7 +36,7 @@ FrameInspector::FrameInspector(StandardFrame* frame, int inlined_jsframe_index,
}
deoptimized_frame_ = Deoptimizer::DebuggerInspectableFrame(
- js_frame, inlined_jsframe_index, isolate);
+ js_frame, inlined_frame_index, isolate);
}
}
@@ -47,16 +53,11 @@ int FrameInspector::GetParametersCount() {
}
Handle<Script> FrameInspector::GetScript() {
- Object* script = is_optimized_
- ? deoptimized_frame_->GetFunction()->shared()->script()
- : frame_->script();
- return handle(Script::cast(script), isolate_);
+ return Handle<Script>::cast(frame_summary_.script());
}
Handle<JSFunction> FrameInspector::GetFunction() {
- DCHECK(!frame_->is_wasm());
- return is_optimized_ ? deoptimized_frame_->GetFunction()
- : handle(javascript_frame()->function(), isolate_);
+ return frame_summary_.AsJavaScript().function();
}
Handle<Object> FrameInspector::GetParameter(int index) {
@@ -76,22 +77,16 @@ Handle<Object> FrameInspector::GetExpression(int index) {
}
int FrameInspector::GetSourcePosition() {
- return is_optimized_ ? deoptimized_frame_->GetSourcePosition()
- : frame_->position();
+ return frame_summary_.SourcePosition();
}
-bool FrameInspector::IsConstructor() {
- return is_optimized_ && !is_bottommost_
- ? deoptimized_frame_->HasConstructStub()
- : frame_->IsConstructor();
-}
+bool FrameInspector::IsConstructor() { return frame_summary_.is_constructor(); }
Handle<Object> FrameInspector::GetContext() {
return is_optimized_ ? deoptimized_frame_->GetContext()
: handle(frame_->context(), isolate_);
}
-
// To inspect all the provided arguments the frame might need to be
// replaced with the arguments frame.
void FrameInspector::SetArgumentsFrame(StandardFrame* frame) {
@@ -209,15 +204,11 @@ int DebugFrameHelper::FindIndexedNonNativeFrame(StackTraceFrameIterator* it,
int index) {
int count = -1;
for (; !it->done(); it->Advance()) {
- if (it->is_wasm()) {
- if (++count == index) return 0;
- continue;
- }
List<FrameSummary> frames(FLAG_max_inlining_levels + 1);
- it->javascript_frame()->Summarize(&frames);
+ it->frame()->Summarize(&frames);
for (int i = frames.length() - 1; i >= 0; i--) {
// Omit functions from native and extension scripts.
- if (!frames[i].function()->shared()->IsSubjectToDebugging()) continue;
+ if (!frames[i].is_subject_to_debugging()) continue;
if (++count == index) return i;
}
}
« no previous file with comments | « src/debug/debug-frames.h ('k') | src/frames.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698