OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/frames.h" | 5 #include "src/frames.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <sstream> | 8 #include <sstream> |
9 | 9 |
10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" |
(...skipping 1245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1256 field.~type(); \ | 1256 field.~type(); \ |
1257 break; | 1257 break; |
1258 switch (base_.kind()) { | 1258 switch (base_.kind()) { |
1259 FRAME_SUMMARY_VARIANTS(FRAME_SUMMARY_DESTR) | 1259 FRAME_SUMMARY_VARIANTS(FRAME_SUMMARY_DESTR) |
1260 default: | 1260 default: |
1261 UNREACHABLE(); | 1261 UNREACHABLE(); |
1262 } | 1262 } |
1263 #undef FRAME_SUMMARY_DESTR | 1263 #undef FRAME_SUMMARY_DESTR |
1264 } | 1264 } |
1265 | 1265 |
1266 FrameSummary FrameSummary::Get(const StandardFrame* frame, int index) { | 1266 FrameSummary FrameSummary::GetTop(const StandardFrame* frame) { |
1267 DCHECK_LE(0, index); | |
1268 List<FrameSummary> frames(FLAG_max_inlining_levels + 1); | 1267 List<FrameSummary> frames(FLAG_max_inlining_levels + 1); |
1269 frame->Summarize(&frames); | 1268 frame->Summarize(&frames); |
1270 DCHECK_GT(frames.length(), index); | 1269 DCHECK_LT(0, frames.length()); |
1271 return frames[index]; | 1270 return frames.last(); |
| 1271 } |
| 1272 |
| 1273 FrameSummary FrameSummary::GetBottom(const StandardFrame* frame) { |
| 1274 return Get(frame, 0); |
1272 } | 1275 } |
1273 | 1276 |
1274 FrameSummary FrameSummary::GetSingle(const StandardFrame* frame) { | 1277 FrameSummary FrameSummary::GetSingle(const StandardFrame* frame) { |
1275 List<FrameSummary> frames(1); | 1278 List<FrameSummary> frames(1); |
1276 frame->Summarize(&frames); | 1279 frame->Summarize(&frames); |
1277 DCHECK_EQ(1, frames.length()); | 1280 DCHECK_EQ(1, frames.length()); |
1278 return frames.first(); | 1281 return frames.first(); |
1279 } | 1282 } |
1280 | 1283 |
| 1284 FrameSummary FrameSummary::Get(const StandardFrame* frame, int index) { |
| 1285 DCHECK_LE(0, index); |
| 1286 List<FrameSummary> frames(FLAG_max_inlining_levels + 1); |
| 1287 frame->Summarize(&frames); |
| 1288 DCHECK_GT(frames.length(), index); |
| 1289 return frames[index]; |
| 1290 } |
| 1291 |
1281 #define FRAME_SUMMARY_DISPATCH(ret, name) \ | 1292 #define FRAME_SUMMARY_DISPATCH(ret, name) \ |
1282 ret FrameSummary::name() const { \ | 1293 ret FrameSummary::name() const { \ |
1283 switch (base_.kind()) { \ | 1294 switch (base_.kind()) { \ |
1284 case JAVA_SCRIPT: \ | 1295 case JAVA_SCRIPT: \ |
1285 return java_script_summary_.name(); \ | 1296 return java_script_summary_.name(); \ |
1286 case WASM_COMPILED: \ | 1297 case WASM_COMPILED: \ |
1287 return wasm_compiled_summary_.name(); \ | 1298 return wasm_compiled_summary_.name(); \ |
1288 case WASM_INTERPRETED: \ | 1299 case WASM_INTERPRETED: \ |
1289 return wasm_interpreted_summary_.name(); \ | 1300 return wasm_interpreted_summary_.name(); \ |
1290 default: \ | 1301 default: \ |
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1774 // This is a live stack frame, there must be a live wasm instance available. | 1785 // This is a live stack frame, there must be a live wasm instance available. |
1775 DCHECK_NOT_NULL(ret); | 1786 DCHECK_NOT_NULL(ret); |
1776 return ret; | 1787 return ret; |
1777 } | 1788 } |
1778 | 1789 |
1779 Script* WasmInterpreterEntryFrame::script() const { | 1790 Script* WasmInterpreterEntryFrame::script() const { |
1780 return wasm_instance()->compiled_module()->script(); | 1791 return wasm_instance()->compiled_module()->script(); |
1781 } | 1792 } |
1782 | 1793 |
1783 int WasmInterpreterEntryFrame::position() const { | 1794 int WasmInterpreterEntryFrame::position() const { |
1784 return FrameSummary::GetFirst(this).AsWasmInterpreted().SourcePosition(); | 1795 return FrameSummary::GetBottom(this).AsWasmInterpreted().SourcePosition(); |
1785 } | 1796 } |
1786 | 1797 |
1787 Address WasmInterpreterEntryFrame::GetCallerStackPointer() const { | 1798 Address WasmInterpreterEntryFrame::GetCallerStackPointer() const { |
1788 return fp() + ExitFrameConstants::kCallerSPOffset; | 1799 return fp() + ExitFrameConstants::kCallerSPOffset; |
1789 } | 1800 } |
1790 | 1801 |
1791 namespace { | 1802 namespace { |
1792 | 1803 |
1793 | 1804 |
1794 void PrintFunctionSource(StringStream* accumulator, SharedFunctionInfo* shared, | 1805 void PrintFunctionSource(StringStream* accumulator, SharedFunctionInfo* shared, |
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2219 for (StackFrameIterator it(isolate); !it.done(); it.Advance()) { | 2230 for (StackFrameIterator it(isolate); !it.done(); it.Advance()) { |
2220 StackFrame* frame = AllocateFrameCopy(it.frame(), zone); | 2231 StackFrame* frame = AllocateFrameCopy(it.frame(), zone); |
2221 list.Add(frame, zone); | 2232 list.Add(frame, zone); |
2222 } | 2233 } |
2223 return list.ToVector(); | 2234 return list.ToVector(); |
2224 } | 2235 } |
2225 | 2236 |
2226 | 2237 |
2227 } // namespace internal | 2238 } // namespace internal |
2228 } // namespace v8 | 2239 } // namespace v8 |
OLD | NEW |