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(RawCode* code) { |
| 57 *reinterpret_cast<RawCode**>(fp() + (kPcMarkerSlotFromFp * kWordSize)) = |
| 58 code; |
54 } | 59 } |
55 | 60 |
56 // Visit objects in the frame. | 61 // Visit objects in the frame. |
57 virtual void VisitObjectPointers(ObjectPointerVisitor* visitor); | 62 virtual void VisitObjectPointers(ObjectPointerVisitor* visitor); |
58 | 63 |
59 const char* ToCString() const; | 64 const char* ToCString() const; |
60 | 65 |
61 // Check validity of a frame, used for assertion purposes. | 66 // Check validity of a frame, used for assertion purposes. |
62 virtual bool IsValid() const; | 67 virtual bool IsValid() const; |
63 | 68 |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
324 uword pc_; | 329 uword pc_; |
325 GrowableArray<DeoptInstr*> deopt_instructions_; | 330 GrowableArray<DeoptInstr*> deopt_instructions_; |
326 ObjectPool& object_table_; | 331 ObjectPool& object_table_; |
327 | 332 |
328 DISALLOW_COPY_AND_ASSIGN(InlinedFunctionsIterator); | 333 DISALLOW_COPY_AND_ASSIGN(InlinedFunctionsIterator); |
329 }; | 334 }; |
330 | 335 |
331 } // namespace dart | 336 } // namespace dart |
332 | 337 |
333 #endif // VM_STACK_FRAME_H_ | 338 #endif // VM_STACK_FRAME_H_ |
OLD | NEW |