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 <sstream> | 7 #include <sstream> |
8 | 8 |
9 #include "src/ast/ast.h" | 9 #include "src/ast/ast.h" |
10 #include "src/ast/scopeinfo.h" | 10 #include "src/ast/scopeinfo.h" |
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
595 | 595 |
596 | 596 |
597 StackFrame::Type ExitFrame::GetStateForFramePointer(Address fp, State* state) { | 597 StackFrame::Type ExitFrame::GetStateForFramePointer(Address fp, State* state) { |
598 if (fp == 0) return NONE; | 598 if (fp == 0) return NONE; |
599 Address sp = ComputeStackPointer(fp); | 599 Address sp = ComputeStackPointer(fp); |
600 FillState(fp, sp, state); | 600 FillState(fp, sp, state); |
601 DCHECK(*state->pc_address != NULL); | 601 DCHECK(*state->pc_address != NULL); |
602 return EXIT; | 602 return EXIT; |
603 } | 603 } |
604 | 604 |
605 | |
606 Address ExitFrame::ComputeStackPointer(Address fp) { | 605 Address ExitFrame::ComputeStackPointer(Address fp) { |
| 606 #if defined(USE_SIMULATOR) |
| 607 MSAN_MEMORY_IS_INITIALIZED(fp + ExitFrameConstants::kSPOffset, kPointerSize); |
| 608 #endif |
607 return Memory::Address_at(fp + ExitFrameConstants::kSPOffset); | 609 return Memory::Address_at(fp + ExitFrameConstants::kSPOffset); |
608 } | 610 } |
609 | 611 |
610 | |
611 void ExitFrame::FillState(Address fp, Address sp, State* state) { | 612 void ExitFrame::FillState(Address fp, Address sp, State* state) { |
612 state->sp = sp; | 613 state->sp = sp; |
613 state->fp = fp; | 614 state->fp = fp; |
614 state->pc_address = ResolveReturnAddressLocation( | 615 state->pc_address = ResolveReturnAddressLocation( |
615 reinterpret_cast<Address*>(sp - 1 * kPCOnStackSize)); | 616 reinterpret_cast<Address*>(sp - 1 * kPCOnStackSize)); |
616 // The constant pool recorded in the exit frame is not associated | 617 // The constant pool recorded in the exit frame is not associated |
617 // with the pc in this state (the return address into a C entry | 618 // with the pc in this state (the return address into a C entry |
618 // stub). ComputeCallerState will retrieve the constant pool | 619 // stub). ComputeCallerState will retrieve the constant pool |
619 // together with the associated caller pc. | 620 // together with the associated caller pc. |
620 state->constant_pool_address = NULL; | 621 state->constant_pool_address = NULL; |
(...skipping 1166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1787 for (StackFrameIterator it(isolate); !it.done(); it.Advance()) { | 1788 for (StackFrameIterator it(isolate); !it.done(); it.Advance()) { |
1788 StackFrame* frame = AllocateFrameCopy(it.frame(), zone); | 1789 StackFrame* frame = AllocateFrameCopy(it.frame(), zone); |
1789 list.Add(frame, zone); | 1790 list.Add(frame, zone); |
1790 } | 1791 } |
1791 return list.ToVector(); | 1792 return list.ToVector(); |
1792 } | 1793 } |
1793 | 1794 |
1794 | 1795 |
1795 } // namespace internal | 1796 } // namespace internal |
1796 } // namespace v8 | 1797 } // namespace v8 |
OLD | NEW |