Index: runtime/vm/deferred_objects.h |
=================================================================== |
--- runtime/vm/deferred_objects.h (revision 44707) |
+++ runtime/vm/deferred_objects.h (working copy) |
@@ -140,6 +140,58 @@ |
}; |
+class DeferredRetAddr : public DeferredSlot { |
+ public: |
+ DeferredRetAddr(intptr_t index, |
+ intptr_t deopt_id, |
+ RawObject** slot, |
+ DeferredSlot* next) |
+ : DeferredSlot(slot, next), index_(index), deopt_id_(deopt_id) { } |
+ |
+ virtual void Materialize(DeoptContext* deopt_context); |
+ |
+ intptr_t index() const { return index_; } |
+ |
+ private: |
+ const intptr_t index_; |
+ const intptr_t deopt_id_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(DeferredRetAddr); |
+}; |
+ |
+ |
+class DeferredPcMarker : public DeferredSlot { |
+ public: |
+ DeferredPcMarker(intptr_t index, RawObject** slot, DeferredSlot* next) |
+ : DeferredSlot(slot, next), index_(index) { } |
+ |
+ virtual void Materialize(DeoptContext* deopt_context); |
+ |
+ intptr_t index() const { return index_; } |
+ |
+ private: |
+ const intptr_t index_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(DeferredPcMarker); |
+}; |
+ |
+ |
+class DeferredPp : public DeferredSlot { |
+ public: |
+ DeferredPp(intptr_t index, RawObject** slot, DeferredSlot* next) |
+ : DeferredSlot(slot, next), index_(index) { } |
+ |
+ virtual void Materialize(DeoptContext* deopt_context); |
+ |
+ intptr_t index() const { return index_; } |
+ |
+ private: |
+ const intptr_t index_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(DeferredPp); |
+}; |
+ |
+ |
// Describes an object which allocation was removed by AllocationSinking pass. |
// Arguments for materialization are stored as a part of expression stack |
// for the bottommost deoptimized frame so that GC could discover them. |