| Index: src/frames.cc
|
| diff --git a/src/frames.cc b/src/frames.cc
|
| index 50a2e21a055d7a9d8f11442f6cfa024d555c71dc..173b67c355097281ffb9ef34dea513f0649168b8 100644
|
| --- a/src/frames.cc
|
| +++ b/src/frames.cc
|
| @@ -137,10 +137,17 @@ StackFrame* StackFrameIteratorBase::SingletonFor(StackFrame::Type type) {
|
|
|
| // -------------------------------------------------------------------------
|
|
|
| +void VisibleFrameIterator::Advance() {
|
| + do {
|
| + iterator_.Advance();
|
| + } while (!iterator_.done() && !iterator_.frame()->is_visible());
|
| +}
|
| +
|
| +// -------------------------------------------------------------------------
|
|
|
| -JavaScriptFrameIterator::JavaScriptFrameIterator(
|
| - Isolate* isolate, StackFrame::Id id)
|
| - : iterator_(isolate) {
|
| +JavaScriptFrameIterator::JavaScriptFrameIterator(Isolate* isolate,
|
| + StackFrame::Id id)
|
| + : VisibleFrameIterator(isolate) {
|
| while (!done()) {
|
| Advance();
|
| if (frame()->id() == id) return;
|
| @@ -446,7 +453,7 @@ StackFrame::Type StackFrame::ComputeType(const StackFrameIteratorBase* iterator,
|
| case Code::OPTIMIZED_FUNCTION:
|
| return OPTIMIZED;
|
| case Code::WASM_FUNCTION:
|
| - return STUB;
|
| + return WASM;
|
| case Code::BUILTIN:
|
| if (!marker->IsSmi()) {
|
| if (StandardFrame::IsArgumentsAdaptorFrame(state->fp)) {
|
| @@ -1222,6 +1229,32 @@ void StackFrame::PrintIndex(StringStream* accumulator,
|
| accumulator->Add((mode == OVERVIEW) ? "%5d: " : "[%d]: ", index);
|
| }
|
|
|
| +void WasmFrame::Print(StringStream* accumulator, PrintMode mode,
|
| + int index) const {}
|
| +
|
| +Code* WasmFrame::unchecked_code() const {
|
| + return static_cast<Code*>(isolate()->FindCodeObject(pc()));
|
| +}
|
| +
|
| +void WasmFrame::Iterate(ObjectVisitor* v) const { IterateCompiledFrame(v); }
|
| +
|
| +void WasmFrame::Summarize(List<FrameSummary>* frames) {
|
| + DCHECK(frames->length() == 0);
|
| + // TODO(jfb) Do something useful.
|
| + Object* object = Object::cast(*Handle<Object>::null());
|
| + JSFunction* jsfunction = JSFunction::cast(*Handle<JSFunction>::null());
|
| + Code* code = LookupCode();
|
| + DCHECK(code->is_wasm_code());
|
| + unsigned code_offset = 0;
|
| + bool is_constructor = false;
|
| + FrameSummary summary(object, jsfunction, AbstractCode::cast(code),
|
| + code_offset, is_constructor);
|
| + frames->Add(summary);
|
| +}
|
| +
|
| +Address WasmFrame::GetCallerStackPointer() const {
|
| + return fp() + ExitFrameConstants::kCallerSPDisplacement;
|
| +}
|
|
|
| namespace {
|
|
|
|
|