OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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_DEFERRED_OBJECTS_H_ | 5 #ifndef VM_DEFERRED_OBJECTS_H_ |
6 #define VM_DEFERRED_OBJECTS_H_ | 6 #define VM_DEFERRED_OBJECTS_H_ |
7 | 7 |
8 #include "platform/globals.h" | 8 #include "platform/globals.h" |
9 | 9 |
10 namespace dart { | 10 namespace dart { |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 | 133 |
134 intptr_t index() const { return index_; } | 134 intptr_t index() const { return index_; } |
135 | 135 |
136 private: | 136 private: |
137 const intptr_t index_; | 137 const intptr_t index_; |
138 | 138 |
139 DISALLOW_COPY_AND_ASSIGN(DeferredObjectRef); | 139 DISALLOW_COPY_AND_ASSIGN(DeferredObjectRef); |
140 }; | 140 }; |
141 | 141 |
142 | 142 |
| 143 class DeferredRetAddr : public DeferredSlot { |
| 144 public: |
| 145 DeferredRetAddr(intptr_t index, |
| 146 intptr_t deopt_id, |
| 147 RawObject** slot, |
| 148 DeferredSlot* next) |
| 149 : DeferredSlot(slot, next), index_(index), deopt_id_(deopt_id) { } |
| 150 |
| 151 virtual void Materialize(DeoptContext* deopt_context); |
| 152 |
| 153 intptr_t index() const { return index_; } |
| 154 |
| 155 private: |
| 156 const intptr_t index_; |
| 157 const intptr_t deopt_id_; |
| 158 |
| 159 DISALLOW_COPY_AND_ASSIGN(DeferredRetAddr); |
| 160 }; |
| 161 |
| 162 |
| 163 class DeferredPcMarker : public DeferredSlot { |
| 164 public: |
| 165 DeferredPcMarker(intptr_t index, RawObject** slot, DeferredSlot* next) |
| 166 : DeferredSlot(slot, next), index_(index) { } |
| 167 |
| 168 virtual void Materialize(DeoptContext* deopt_context); |
| 169 |
| 170 intptr_t index() const { return index_; } |
| 171 |
| 172 private: |
| 173 const intptr_t index_; |
| 174 |
| 175 DISALLOW_COPY_AND_ASSIGN(DeferredPcMarker); |
| 176 }; |
| 177 |
| 178 |
| 179 class DeferredPp : public DeferredSlot { |
| 180 public: |
| 181 DeferredPp(intptr_t index, RawObject** slot, DeferredSlot* next) |
| 182 : DeferredSlot(slot, next), index_(index) { } |
| 183 |
| 184 virtual void Materialize(DeoptContext* deopt_context); |
| 185 |
| 186 intptr_t index() const { return index_; } |
| 187 |
| 188 private: |
| 189 const intptr_t index_; |
| 190 |
| 191 DISALLOW_COPY_AND_ASSIGN(DeferredPp); |
| 192 }; |
| 193 |
| 194 |
143 // Describes an object which allocation was removed by AllocationSinking pass. | 195 // Describes an object which allocation was removed by AllocationSinking pass. |
144 // Arguments for materialization are stored as a part of expression stack | 196 // Arguments for materialization are stored as a part of expression stack |
145 // for the bottommost deoptimized frame so that GC could discover them. | 197 // for the bottommost deoptimized frame so that GC could discover them. |
146 // They will be removed from the stack at the very end of deoptimization. | 198 // They will be removed from the stack at the very end of deoptimization. |
147 class DeferredObject { | 199 class DeferredObject { |
148 public: | 200 public: |
149 DeferredObject(intptr_t field_count, intptr_t* args) | 201 DeferredObject(intptr_t field_count, intptr_t* args) |
150 : field_count_(field_count), | 202 : field_count_(field_count), |
151 args_(reinterpret_cast<RawObject**>(args)), | 203 args_(reinterpret_cast<RawObject**>(args)), |
152 object_(NULL) { } | 204 object_(NULL) { } |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 | 257 |
206 // Object materialized from this description. | 258 // Object materialized from this description. |
207 const Object* object_; | 259 const Object* object_; |
208 | 260 |
209 DISALLOW_COPY_AND_ASSIGN(DeferredObject); | 261 DISALLOW_COPY_AND_ASSIGN(DeferredObject); |
210 }; | 262 }; |
211 | 263 |
212 } // namespace dart | 264 } // namespace dart |
213 | 265 |
214 #endif // VM_DEFERRED_OBJECTS_H_ | 266 #endif // VM_DEFERRED_OBJECTS_H_ |
OLD | NEW |