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 624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
635 void StandardFrame::IterateCompiledFrame(ObjectVisitor* v) const { | 635 void StandardFrame::IterateCompiledFrame(ObjectVisitor* v) const { |
636 // Make sure that we're not doing "safe" stack frame iteration. We cannot | 636 // Make sure that we're not doing "safe" stack frame iteration. We cannot |
637 // possibly find pointers in optimized frames in that state. | 637 // possibly find pointers in optimized frames in that state. |
638 DCHECK(can_access_heap_objects()); | 638 DCHECK(can_access_heap_objects()); |
639 | 639 |
640 // Compute the safepoint information. | 640 // Compute the safepoint information. |
641 unsigned stack_slots = 0; | 641 unsigned stack_slots = 0; |
642 SafepointEntry safepoint_entry; | 642 SafepointEntry safepoint_entry; |
643 Code* code = StackFrame::GetSafepointData( | 643 Code* code = StackFrame::GetSafepointData( |
644 isolate(), pc(), &safepoint_entry, &stack_slots); | 644 isolate(), pc(), &safepoint_entry, &stack_slots); |
645 unsigned slot_space = stack_slots * kPointerSize; | 645 unsigned slot_space = |
| 646 stack_slots * kPointerSize - StandardFrameConstants::kFixedFrameSize; |
646 | 647 |
647 // Visit the outgoing parameters. | 648 // Visit the outgoing parameters. |
648 Object** parameters_base = &Memory::Object_at(sp()); | 649 Object** parameters_base = &Memory::Object_at(sp()); |
649 Object** parameters_limit = &Memory::Object_at( | 650 Object** parameters_limit = &Memory::Object_at( |
650 fp() + JavaScriptFrameConstants::kFunctionOffset - slot_space); | 651 fp() + JavaScriptFrameConstants::kFunctionOffset - slot_space); |
651 | 652 |
652 // Visit the parameters that may be on top of the saved registers. | 653 // Visit the parameters that may be on top of the saved registers. |
653 if (safepoint_entry.argument_count() > 0) { | 654 if (safepoint_entry.argument_count() > 0) { |
654 v->VisitPointers(parameters_base, | 655 v->VisitPointers(parameters_base, |
655 parameters_base + safepoint_entry.argument_count()); | 656 parameters_base + safepoint_entry.argument_count()); |
(...skipping 983 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1639 for (StackFrameIterator it(isolate); !it.done(); it.Advance()) { | 1640 for (StackFrameIterator it(isolate); !it.done(); it.Advance()) { |
1640 StackFrame* frame = AllocateFrameCopy(it.frame(), zone); | 1641 StackFrame* frame = AllocateFrameCopy(it.frame(), zone); |
1641 list.Add(frame, zone); | 1642 list.Add(frame, zone); |
1642 } | 1643 } |
1643 return list.ToVector(); | 1644 return list.ToVector(); |
1644 } | 1645 } |
1645 | 1646 |
1646 | 1647 |
1647 } // namespace internal | 1648 } // namespace internal |
1648 } // namespace v8 | 1649 } // namespace v8 |
OLD | NEW |