OLD | NEW |
---|---|
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #ifndef VM_STACK_FRAME_H_ | 5 #ifndef VM_STACK_FRAME_H_ |
6 #define VM_STACK_FRAME_H_ | 6 #define VM_STACK_FRAME_H_ |
7 | 7 |
8 #include "vm/allocation.h" | 8 #include "vm/allocation.h" |
9 #include "vm/object.h" | 9 #include "vm/object.h" |
10 #include "vm/stub_code.h" | 10 #include "vm/stub_code.h" |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
43 // The pool pointer is not implemented on all architectures. | 43 // The pool pointer is not implemented on all architectures. |
44 static int SavedCallerPpSlotFromFp() { | 44 static int SavedCallerPpSlotFromFp() { |
45 if (kSavedCallerPpSlotFromFp != kSavedCallerFpSlotFromFp) { | 45 if (kSavedCallerPpSlotFromFp != kSavedCallerFpSlotFromFp) { |
46 return kSavedCallerPpSlotFromFp; | 46 return kSavedCallerPpSlotFromFp; |
47 } | 47 } |
48 UNREACHABLE(); | 48 UNREACHABLE(); |
49 return 0; | 49 return 0; |
50 } | 50 } |
51 | 51 |
52 void set_pc(uword value) { | 52 void set_pc(uword value) { |
53 *reinterpret_cast<uword*>(sp_ + (kSavedPcSlotFromSp * kWordSize)) = value; | 53 *reinterpret_cast<uword*>(sp() + (kSavedPcSlotFromSp * kWordSize)) = value; |
54 } | |
55 | |
56 void set_pc_marker(uword value) { | |
koda
2015/09/11 13:22:05
Since this slot is traversed by GC, shouldn't this
Florian Schneider
2015/09/11 14:30:23
Done. (and yes, I'm not done with renaming pc-mark
| |
57 *reinterpret_cast<uword*>(fp() + (kPcMarkerSlotFromFp * kWordSize)) = value; | |
54 } | 58 } |
55 | 59 |
56 // Visit objects in the frame. | 60 // Visit objects in the frame. |
57 virtual void VisitObjectPointers(ObjectPointerVisitor* visitor); | 61 virtual void VisitObjectPointers(ObjectPointerVisitor* visitor); |
58 | 62 |
59 const char* ToCString() const; | 63 const char* ToCString() const; |
60 | 64 |
61 // Check validity of a frame, used for assertion purposes. | 65 // Check validity of a frame, used for assertion purposes. |
62 virtual bool IsValid() const; | 66 virtual bool IsValid() const; |
63 | 67 |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
324 uword pc_; | 328 uword pc_; |
325 GrowableArray<DeoptInstr*> deopt_instructions_; | 329 GrowableArray<DeoptInstr*> deopt_instructions_; |
326 ObjectPool& object_table_; | 330 ObjectPool& object_table_; |
327 | 331 |
328 DISALLOW_COPY_AND_ASSIGN(InlinedFunctionsIterator); | 332 DISALLOW_COPY_AND_ASSIGN(InlinedFunctionsIterator); |
329 }; | 333 }; |
330 | 334 |
331 } // namespace dart | 335 } // namespace dart |
332 | 336 |
333 #endif // VM_STACK_FRAME_H_ | 337 #endif // VM_STACK_FRAME_H_ |
OLD | NEW |