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

Unified Diff: src/frames-inl.h

Issue 1712003003: Add WasmFrame, backtraces reflect wasm's presence (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 10 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/frames.cc ('k') | src/isolate.cc » ('j') | src/isolate.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/frames-inl.h
diff --git a/src/frames-inl.h b/src/frames-inl.h
index 4013601dace9c121bf722b131e6a71234dba2df5..c27267002061ce6b4c795ce04e855a27a2ca814f 100644
--- a/src/frames-inl.h
+++ b/src/frames-inl.h
@@ -151,11 +151,11 @@ inline bool StandardFrame::IsConstructFrame(Address fp) {
return marker == Smi::FromInt(StackFrame::CONSTRUCT);
}
+inline VisibleFrame::VisibleFrame(StackFrameIteratorBase* iterator)
+ : StandardFrame(iterator) {}
inline JavaScriptFrame::JavaScriptFrame(StackFrameIteratorBase* iterator)
- : StandardFrame(iterator) {
-}
-
+ : VisibleFrame(iterator) {}
Address JavaScriptFrame::GetParameterSlot(int index) const {
int param_count = ComputeParametersCount();
@@ -242,6 +242,8 @@ inline ArgumentsAdaptorFrame::ArgumentsAdaptorFrame(
StackFrameIteratorBase* iterator) : JavaScriptFrame(iterator) {
}
+inline WasmFrame::WasmFrame(StackFrameIteratorBase* iterator)
+ : VisibleFrame(iterator) {}
inline InternalFrame::InternalFrame(StackFrameIteratorBase* iterator)
: StandardFrame(iterator) {
@@ -257,27 +259,42 @@ inline ConstructFrame::ConstructFrame(StackFrameIteratorBase* iterator)
: InternalFrame(iterator) {
}
-
-inline JavaScriptFrameIterator::JavaScriptFrameIterator(
- Isolate* isolate)
+inline VisibleFrameIterator::VisibleFrameIterator(Isolate* isolate)
: iterator_(isolate) {
if (!done()) Advance();
}
+inline VisibleFrameIterator::VisibleFrameIterator(
+ Isolate* isolate, VisibleFrameIterator::NoAdvance)
+ : iterator_(isolate) {}
+
+inline VisibleFrameIterator::VisibleFrameIterator(
+ Isolate* isolate, ThreadLocalTop* top, VisibleFrameIterator::NoAdvance)
+ : iterator_(isolate, top) {}
-inline JavaScriptFrameIterator::JavaScriptFrameIterator(
- Isolate* isolate, ThreadLocalTop* top)
- : iterator_(isolate, top) {
+inline JavaScriptFrameIterator::JavaScriptFrameIterator(Isolate* isolate)
+ : VisibleFrameIterator(isolate, VisibleFrameIterator::NoAdvance()) {
if (!done()) Advance();
}
+inline JavaScriptFrameIterator::JavaScriptFrameIterator(Isolate* isolate,
+ ThreadLocalTop* top)
+ : VisibleFrameIterator(isolate, top, VisibleFrameIterator::NoAdvance()) {
+ if (!done()) Advance();
+}
-inline JavaScriptFrame* JavaScriptFrameIterator::frame() const {
+inline VisibleFrame* VisibleFrameIterator::frame() const {
// TODO(1233797): The frame hierarchy needs to change. It's
// problematic that we can't use the safe-cast operator to cast to
// the JavaScript frame type, because we may encounter arguments
// adaptor frames.
StackFrame* frame = iterator_.frame();
+ DCHECK(frame->is_visible() || frame->is_arguments_adaptor());
+ return static_cast<VisibleFrame*>(frame);
+}
+
+inline JavaScriptFrame* JavaScriptFrameIterator::frame() const {
+ StackFrame* frame = iterator_.frame();
DCHECK(frame->is_java_script() || frame->is_arguments_adaptor());
return static_cast<JavaScriptFrame*>(frame);
}
« no previous file with comments | « src/frames.cc ('k') | src/isolate.cc » ('j') | src/isolate.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698