Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(305)

Side by Side Diff: runtime/vm/deferred_objects.h

Issue 1052563003: VM: Add infrastructure to support deferred generation of unoptimized code. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698