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

Side by Side Diff: runtime/vm/become.cc

Issue 2481873005: clang-format runtime/vm (Closed)
Patch Set: Merge Created 4 years, 1 month 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
« no previous file with comments | « runtime/vm/become.h ('k') | runtime/vm/benchmark_test.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 #include "vm/become.h" 5 #include "vm/become.h"
6 6
7 #include "platform/assert.h" 7 #include "platform/assert.h"
8 #include "platform/utils.h" 8 #include "platform/utils.h"
9 9
10 #include "vm/dart_api_state.h" 10 #include "vm/dart_api_state.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 uword addr = reinterpret_cast<uword>(object) - kHeapObjectTag; 55 uword addr = reinterpret_cast<uword>(object) - kHeapObjectTag;
56 ForwardingCorpse* forwarder = reinterpret_cast<ForwardingCorpse*>(addr); 56 ForwardingCorpse* forwarder = reinterpret_cast<ForwardingCorpse*>(addr);
57 return forwarder->target(); 57 return forwarder->target();
58 } 58 }
59 59
60 60
61 static void ForwardObjectTo(RawObject* before_obj, RawObject* after_obj) { 61 static void ForwardObjectTo(RawObject* before_obj, RawObject* after_obj) {
62 const intptr_t size_before = before_obj->Size(); 62 const intptr_t size_before = before_obj->Size();
63 63
64 uword corpse_addr = reinterpret_cast<uword>(before_obj) - kHeapObjectTag; 64 uword corpse_addr = reinterpret_cast<uword>(before_obj) - kHeapObjectTag;
65 ForwardingCorpse* forwarder = ForwardingCorpse::AsForwarder(corpse_addr, 65 ForwardingCorpse* forwarder =
66 size_before); 66 ForwardingCorpse::AsForwarder(corpse_addr, size_before);
67 forwarder->set_target(after_obj); 67 forwarder->set_target(after_obj);
68 if (!IsForwardingObject(before_obj)) { 68 if (!IsForwardingObject(before_obj)) {
69 FATAL("become: ForwardObjectTo failure."); 69 FATAL("become: ForwardObjectTo failure.");
70 } 70 }
71 // Still need to be able to iterate over the forwarding corpse. 71 // Still need to be able to iterate over the forwarding corpse.
72 const intptr_t size_after = before_obj->Size(); 72 const intptr_t size_after = before_obj->Size();
73 if (size_before != size_after) { 73 if (size_before != size_after) {
74 FATAL("become: Before and after sizes do not match."); 74 FATAL("become: Before and after sizes do not match.");
75 } 75 }
76 } 76 }
77 77
78 78
79 class ForwardPointersVisitor : public ObjectPointerVisitor { 79 class ForwardPointersVisitor : public ObjectPointerVisitor {
80 public: 80 public:
81 explicit ForwardPointersVisitor(Isolate* isolate) 81 explicit ForwardPointersVisitor(Isolate* isolate)
82 : ObjectPointerVisitor(isolate), visiting_object_(NULL), count_(0) { } 82 : ObjectPointerVisitor(isolate), visiting_object_(NULL), count_(0) {}
83 83
84 virtual void VisitPointers(RawObject** first, RawObject** last) { 84 virtual void VisitPointers(RawObject** first, RawObject** last) {
85 for (RawObject** p = first; p <= last; p++) { 85 for (RawObject** p = first; p <= last; p++) {
86 RawObject* old_target = *p; 86 RawObject* old_target = *p;
87 if (IsForwardingObject(old_target)) { 87 if (IsForwardingObject(old_target)) {
88 RawObject* new_target = GetForwardedObject(old_target); 88 RawObject* new_target = GetForwardedObject(old_target);
89 if (visiting_object_ == NULL) { 89 if (visiting_object_ == NULL) {
90 *p = new_target; 90 *p = new_target;
91 } else { 91 } else {
92 visiting_object_->StorePointer(p, new_target); 92 visiting_object_->StorePointer(p, new_target);
(...skipping 11 matching lines...) Expand all
104 RawObject* visiting_object_; 104 RawObject* visiting_object_;
105 intptr_t count_; 105 intptr_t count_;
106 106
107 DISALLOW_COPY_AND_ASSIGN(ForwardPointersVisitor); 107 DISALLOW_COPY_AND_ASSIGN(ForwardPointersVisitor);
108 }; 108 };
109 109
110 110
111 class ForwardHeapPointersVisitor : public ObjectVisitor { 111 class ForwardHeapPointersVisitor : public ObjectVisitor {
112 public: 112 public:
113 explicit ForwardHeapPointersVisitor(ForwardPointersVisitor* pointer_visitor) 113 explicit ForwardHeapPointersVisitor(ForwardPointersVisitor* pointer_visitor)
114 : pointer_visitor_(pointer_visitor) { } 114 : pointer_visitor_(pointer_visitor) {}
115 115
116 virtual void VisitObject(RawObject* obj) { 116 virtual void VisitObject(RawObject* obj) {
117 pointer_visitor_->VisitingObject(obj); 117 pointer_visitor_->VisitingObject(obj);
118 obj->VisitPointers(pointer_visitor_); 118 obj->VisitPointers(pointer_visitor_);
119 } 119 }
120 120
121 private: 121 private:
122 ForwardPointersVisitor* pointer_visitor_; 122 ForwardPointersVisitor* pointer_visitor_;
123 123
124 DISALLOW_COPY_AND_ASSIGN(ForwardHeapPointersVisitor); 124 DISALLOW_COPY_AND_ASSIGN(ForwardHeapPointersVisitor);
125 }; 125 };
126 126
127 127
128 class ForwardHeapPointersHandleVisitor : public HandleVisitor { 128 class ForwardHeapPointersHandleVisitor : public HandleVisitor {
129 public: 129 public:
130 ForwardHeapPointersHandleVisitor() 130 ForwardHeapPointersHandleVisitor()
131 : HandleVisitor(Thread::Current()), count_(0) { } 131 : HandleVisitor(Thread::Current()), count_(0) {}
132 132
133 virtual void VisitHandle(uword addr) { 133 virtual void VisitHandle(uword addr) {
134 FinalizablePersistentHandle* handle = 134 FinalizablePersistentHandle* handle =
135 reinterpret_cast<FinalizablePersistentHandle*>(addr); 135 reinterpret_cast<FinalizablePersistentHandle*>(addr);
136 if (IsForwardingObject(handle->raw())) { 136 if (IsForwardingObject(handle->raw())) {
137 *handle->raw_addr() = GetForwardedObject(handle->raw()); 137 *handle->raw_addr() = GetForwardedObject(handle->raw());
138 count_++; 138 count_++;
139 } 139 }
140 } 140 }
141 141
(...skipping 24 matching lines...) Expand all
166 heap_->WriteProtectCode(true); 166 heap_->WriteProtectCode(true);
167 } 167 }
168 } 168 }
169 169
170 private: 170 private:
171 Heap* heap_; 171 Heap* heap_;
172 }; 172 };
173 #else 173 #else
174 class WritableCodeLiteralsScope : public ValueObject { 174 class WritableCodeLiteralsScope : public ValueObject {
175 public: 175 public:
176 explicit WritableCodeLiteralsScope(Heap* heap) { } 176 explicit WritableCodeLiteralsScope(Heap* heap) {}
177 ~WritableCodeLiteralsScope() { } 177 ~WritableCodeLiteralsScope() {}
178 }; 178 };
179 #endif 179 #endif
180 180
181 181
182 void Become::MakeDummyObject(const Instance& instance) { 182 void Become::MakeDummyObject(const Instance& instance) {
183 // Make the forward pointer point to itself. 183 // Make the forward pointer point to itself.
184 // This is needed to distinguish it from a real forward object. 184 // This is needed to distinguish it from a real forward object.
185 ForwardObjectTo(instance.raw(), instance.raw()); 185 ForwardObjectTo(instance.raw(), instance.raw());
186 } 186 }
187 187
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 // Heap pointers (may require updating the remembered set) 284 // Heap pointers (may require updating the remembered set)
285 { 285 {
286 WritableCodeLiteralsScope writable_code(heap); 286 WritableCodeLiteralsScope writable_code(heap);
287 ForwardHeapPointersVisitor object_visitor(&pointer_visitor); 287 ForwardHeapPointersVisitor object_visitor(&pointer_visitor);
288 heap->VisitObjects(&object_visitor); 288 heap->VisitObjects(&object_visitor);
289 pointer_visitor.VisitingObject(NULL); 289 pointer_visitor.VisitingObject(NULL);
290 } 290 }
291 291
292 #if !defined(PRODUCT) 292 #if !defined(PRODUCT)
293 tds.SetNumArguments(2); 293 tds.SetNumArguments(2);
294 tds.FormatArgument(0, "Remapped objects", "%" Pd, before.Length()); 294 tds.FormatArgument(0, "Remapped objects", "%" Pd, before.Length());
295 tds.FormatArgument(1, "Remapped references", "%" Pd, 295 tds.FormatArgument(1, "Remapped references", "%" Pd,
296 pointer_visitor.count() + handle_visitor.count()); 296 pointer_visitor.count() + handle_visitor.count());
297 #endif 297 #endif
298 } 298 }
299 299
300 #if defined(DEBUG) 300 #if defined(DEBUG)
301 for (intptr_t i = 0; i < before.Length(); i++) { 301 for (intptr_t i = 0; i < before.Length(); i++) {
302 ASSERT(before.At(i) == after.At(i)); 302 ASSERT(before.At(i) == after.At(i));
303 } 303 }
304 #endif 304 #endif
305 } 305 }
306 306
307 } // namespace dart 307 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/become.h ('k') | runtime/vm/benchmark_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698