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

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

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
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 #ifndef VM_OBJECT_H_ 5 #ifndef VM_OBJECT_H_
6 #define VM_OBJECT_H_ 6 #define VM_OBJECT_H_
7 7
8 #include "include/dart_api.h" 8 #include "include/dart_api.h"
9 #include "platform/assert.h" 9 #include "platform/assert.h"
10 #include "platform/utils.h" 10 #include "platform/utils.h"
(...skipping 8501 matching lines...) Expand 10 before | Expand all | Expand 10 after
8512 DART_FORCE_INLINE void Object::SetRaw(RawObject* value) { 8512 DART_FORCE_INLINE void Object::SetRaw(RawObject* value) {
8513 // NOTE: The assignment "raw_ = value" should be the first statement in 8513 // NOTE: The assignment "raw_ = value" should be the first statement in
8514 // this function. Also do not use 'value' in this function after the 8514 // this function. Also do not use 'value' in this function after the
8515 // assignment (use 'raw_' instead). 8515 // assignment (use 'raw_' instead).
8516 raw_ = value; 8516 raw_ = value;
8517 if ((reinterpret_cast<uword>(value) & kSmiTagMask) == kSmiTag) { 8517 if ((reinterpret_cast<uword>(value) & kSmiTagMask) == kSmiTag) {
8518 set_vtable(Smi::handle_vtable_); 8518 set_vtable(Smi::handle_vtable_);
8519 return; 8519 return;
8520 } 8520 }
8521 intptr_t cid = value->GetClassId(); 8521 intptr_t cid = value->GetClassId();
8522 // Free-list elements cannot be wrapped in a handle. 8522 // Free-list elements cannot be wrapped in a handle.
siva 2016/06/02 00:23:36 Update comment (Free List and Forwarding corpse) e
8523 ASSERT(cid != kFreeListElement); 8523 ASSERT(cid != kFreeListElement);
8524 ASSERT(cid != kForwardingCorpse);
8524 if (cid >= kNumPredefinedCids) { 8525 if (cid >= kNumPredefinedCids) {
8525 cid = kInstanceCid; 8526 cid = kInstanceCid;
8526 } 8527 }
8527 set_vtable(builtin_vtables_[cid]); 8528 set_vtable(builtin_vtables_[cid]);
8528 #if defined(DEBUG) 8529 #if defined(DEBUG)
8529 if (FLAG_verify_handles) { 8530 if (FLAG_verify_handles) {
8530 Isolate* isolate = Isolate::Current(); 8531 Isolate* isolate = Isolate::Current();
8531 Heap* isolate_heap = isolate->heap(); 8532 Heap* isolate_heap = isolate->heap();
8532 Heap* vm_isolate_heap = Dart::vm_isolate()->heap(); 8533 Heap* vm_isolate_heap = Dart::vm_isolate()->heap();
8533 ASSERT(isolate_heap->Contains(RawObject::ToAddr(raw_)) || 8534 ASSERT(isolate_heap->Contains(RawObject::ToAddr(raw_)) ||
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
8711 8712
8712 inline void TypeArguments::SetHash(intptr_t value) const { 8713 inline void TypeArguments::SetHash(intptr_t value) const {
8713 // This is only safe because we create a new Smi, which does not cause 8714 // This is only safe because we create a new Smi, which does not cause
8714 // heap allocation. 8715 // heap allocation.
8715 StoreSmi(&raw_ptr()->hash_, Smi::New(value)); 8716 StoreSmi(&raw_ptr()->hash_, Smi::New(value));
8716 } 8717 }
8717 8718
8718 } // namespace dart 8719 } // namespace dart
8719 8720
8720 #endif // VM_OBJECT_H_ 8721 #endif // VM_OBJECT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698