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

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

Issue 2026643004: Don't overload FreeListElement for become. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 6 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
« no previous file with comments | « runtime/vm/raw_object.h ('k') | runtime/vm/scavenger.cc » ('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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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/raw_object.h" 5 #include "vm/raw_object.h"
6 6
7 #include "vm/become.h"
7 #include "vm/class_table.h" 8 #include "vm/class_table.h"
8 #include "vm/dart.h" 9 #include "vm/dart.h"
9 #include "vm/freelist.h" 10 #include "vm/freelist.h"
10 #include "vm/isolate.h" 11 #include "vm/isolate.h"
11 #include "vm/object.h" 12 #include "vm/object.h"
12 #include "vm/visitor.h" 13 #include "vm/visitor.h"
13 14
14 15
15 namespace dart { 16 namespace dart {
16 17
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 intptr_t num_handlers = raw_handlers->ptr()->num_entries_; 171 intptr_t num_handlers = raw_handlers->ptr()->num_entries_;
171 instance_size = ExceptionHandlers::InstanceSize(num_handlers); 172 instance_size = ExceptionHandlers::InstanceSize(num_handlers);
172 break; 173 break;
173 } 174 }
174 case kFreeListElement: { 175 case kFreeListElement: {
175 uword addr = RawObject::ToAddr(this); 176 uword addr = RawObject::ToAddr(this);
176 FreeListElement* element = reinterpret_cast<FreeListElement*>(addr); 177 FreeListElement* element = reinterpret_cast<FreeListElement*>(addr);
177 instance_size = element->Size(); 178 instance_size = element->Size();
178 break; 179 break;
179 } 180 }
181 case kForwardingCorpse: {
182 uword addr = RawObject::ToAddr(this);
183 ForwardingCorpse* element = reinterpret_cast<ForwardingCorpse*>(addr);
184 instance_size = element->Size();
185 break;
186 }
180 default: { 187 default: {
181 // Get the (constant) instance size out of the class object. 188 // Get the (constant) instance size out of the class object.
182 // TODO(koda): Add Size(ClassTable*) interface to allow caching in loops. 189 // TODO(koda): Add Size(ClassTable*) interface to allow caching in loops.
183 Isolate* isolate = Isolate::Current(); 190 Isolate* isolate = Isolate::Current();
184 #if defined(DEBUG) 191 #if defined(DEBUG)
185 ClassTable* class_table = isolate->class_table(); 192 ClassTable* class_table = isolate->class_table();
186 if (!class_table->IsValidIndex(class_id) || 193 if (!class_table->IsValidIndex(class_id) ||
187 !class_table->HasValidClassAt(class_id)) { 194 !class_table->HasValidClassAt(class_id)) {
188 FATAL2("Invalid class id: %" Pd " from tags %" Px "\n", 195 FATAL2("Invalid class id: %" Pd " from tags %" Px "\n",
189 class_id, ptr()->tags_); 196 class_id, ptr()->tags_);
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 size = RawInstance::VisitInstancePointers(raw_obj, visitor); 288 size = RawInstance::VisitInstancePointers(raw_obj, visitor);
282 break; 289 break;
283 } 290 }
284 #undef RAW_VISITPOINTERS 291 #undef RAW_VISITPOINTERS
285 case kFreeListElement: { 292 case kFreeListElement: {
286 uword addr = RawObject::ToAddr(this); 293 uword addr = RawObject::ToAddr(this);
287 FreeListElement* element = reinterpret_cast<FreeListElement*>(addr); 294 FreeListElement* element = reinterpret_cast<FreeListElement*>(addr);
288 size = element->Size(); 295 size = element->Size();
289 break; 296 break;
290 } 297 }
298 case kForwardingCorpse: {
299 uword addr = RawObject::ToAddr(this);
300 ForwardingCorpse* forwarder = reinterpret_cast<ForwardingCorpse*>(addr);
301 size = forwarder->Size();
302 break;
303 }
291 case kNullCid: 304 case kNullCid:
292 size = Size(); 305 size = Size();
293 break; 306 break;
294 default: 307 default:
295 OS::Print("Class Id: %" Pd "\n", class_id); 308 OS::Print("Class Id: %" Pd "\n", class_id);
296 UNREACHABLE(); 309 UNREACHABLE();
297 break; 310 break;
298 } 311 }
299 } else { 312 } else {
300 RawInstance* raw_obj = reinterpret_cast<RawInstance*>(this); 313 RawInstance* raw_obj = reinterpret_cast<RawInstance*>(this);
(...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after
962 intptr_t RawUserTag::VisitUserTagPointers( 975 intptr_t RawUserTag::VisitUserTagPointers(
963 RawUserTag* raw_obj, ObjectPointerVisitor* visitor) { 976 RawUserTag* raw_obj, ObjectPointerVisitor* visitor) {
964 // Make sure that we got here with the tagged pointer as this. 977 // Make sure that we got here with the tagged pointer as this.
965 ASSERT(raw_obj->IsHeapObject()); 978 ASSERT(raw_obj->IsHeapObject());
966 visitor->VisitPointers(raw_obj->from(), raw_obj->to()); 979 visitor->VisitPointers(raw_obj->from(), raw_obj->to());
967 return UserTag::InstanceSize(); 980 return UserTag::InstanceSize();
968 } 981 }
969 982
970 983
971 } // namespace dart 984 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/raw_object.h ('k') | runtime/vm/scavenger.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698