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

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

Issue 1388543008: 1. Write the backing data array of a GrowableObjectArray as a reference (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: sync-to-tot Created 5 years, 2 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/dart_api_message.cc ('k') | runtime/vm/raw_object.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) 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 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 void* operator new(size_t size); \ 173 void* operator new(size_t size); \
174 object(const object& value); \ 174 object(const object& value); \
175 void operator=(Raw##super* value); \ 175 void operator=(Raw##super* value); \
176 void operator=(const object& value); \ 176 void operator=(const object& value); \
177 void operator=(const super& value); \ 177 void operator=(const super& value); \
178 178
179 #define SNAPSHOT_READER_SUPPORT(object) \ 179 #define SNAPSHOT_READER_SUPPORT(object) \
180 static Raw##object* ReadFrom(SnapshotReader* reader, \ 180 static Raw##object* ReadFrom(SnapshotReader* reader, \
181 intptr_t object_id, \ 181 intptr_t object_id, \
182 intptr_t tags, \ 182 intptr_t tags, \
183 Snapshot::Kind); \ 183 Snapshot::Kind, \
184 bool as_reference); \
184 friend class SnapshotReader; \ 185 friend class SnapshotReader; \
185 186
186 #define OBJECT_IMPLEMENTATION(object, super) \ 187 #define OBJECT_IMPLEMENTATION(object, super) \
187 public: /* NOLINT */ \ 188 public: /* NOLINT */ \
188 void operator=(Raw##object* value) { \ 189 void operator=(Raw##object* value) { \
189 initializeHandle(this, value); \ 190 initializeHandle(this, value); \
190 } \ 191 } \
191 void operator^=(RawObject* value) { \ 192 void operator^=(RawObject* value) { \
192 initializeHandle(this, value); \ 193 initializeHandle(this, value); \
193 ASSERT(IsNull() || Is##object()); \ 194 ASSERT(IsNull() || Is##object()); \
(...skipping 6190 matching lines...) Expand 10 before | Expand all | Expand 10 after
6384 6385
6385 static uint8_t* CharAddr(const String& str, intptr_t index) { 6386 static uint8_t* CharAddr(const String& str, intptr_t index) {
6386 ASSERT((index >= 0) && (index < str.Length())); 6387 ASSERT((index >= 0) && (index < str.Length()));
6387 ASSERT(str.IsOneByteString()); 6388 ASSERT(str.IsOneByteString());
6388 return &str.UnsafeMutableNonPointer(raw_ptr(str)->data())[index]; 6389 return &str.UnsafeMutableNonPointer(raw_ptr(str)->data())[index];
6389 } 6390 }
6390 6391
6391 static RawOneByteString* ReadFrom(SnapshotReader* reader, 6392 static RawOneByteString* ReadFrom(SnapshotReader* reader,
6392 intptr_t object_id, 6393 intptr_t object_id,
6393 intptr_t tags, 6394 intptr_t tags,
6394 Snapshot::Kind kind); 6395 Snapshot::Kind kind,
6396 bool as_reference);
6395 6397
6396 friend class Class; 6398 friend class Class;
6397 friend class String; 6399 friend class String;
6398 friend class Symbols; 6400 friend class Symbols;
6399 friend class ExternalOneByteString; 6401 friend class ExternalOneByteString;
6400 friend class SnapshotReader; 6402 friend class SnapshotReader;
6401 friend class StringHasher; 6403 friend class StringHasher;
6402 }; 6404 };
6403 6405
6404 6406
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
6499 6501
6500 static uint16_t* CharAddr(const String& str, intptr_t index) { 6502 static uint16_t* CharAddr(const String& str, intptr_t index) {
6501 ASSERT((index >= 0) && (index < str.Length())); 6503 ASSERT((index >= 0) && (index < str.Length()));
6502 ASSERT(str.IsTwoByteString()); 6504 ASSERT(str.IsTwoByteString());
6503 return &str.UnsafeMutableNonPointer(raw_ptr(str)->data())[index]; 6505 return &str.UnsafeMutableNonPointer(raw_ptr(str)->data())[index];
6504 } 6506 }
6505 6507
6506 static RawTwoByteString* ReadFrom(SnapshotReader* reader, 6508 static RawTwoByteString* ReadFrom(SnapshotReader* reader,
6507 intptr_t object_id, 6509 intptr_t object_id,
6508 intptr_t tags, 6510 intptr_t tags,
6509 Snapshot::Kind kind); 6511 Snapshot::Kind kind,
6512 bool as_reference);
6510 6513
6511 friend class Class; 6514 friend class Class;
6512 friend class String; 6515 friend class String;
6513 friend class SnapshotReader; 6516 friend class SnapshotReader;
6514 friend class Symbols; 6517 friend class Symbols;
6515 }; 6518 };
6516 6519
6517 6520
6518 class ExternalOneByteString : public AllStatic { 6521 class ExternalOneByteString : public AllStatic {
6519 public: 6522 public:
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
6577 str.StoreNonPointer(&raw_ptr(str)->external_data_, data); 6580 str.StoreNonPointer(&raw_ptr(str)->external_data_, data);
6578 } 6581 }
6579 6582
6580 static void Finalize(void* isolate_callback_data, 6583 static void Finalize(void* isolate_callback_data,
6581 Dart_WeakPersistentHandle handle, 6584 Dart_WeakPersistentHandle handle,
6582 void* peer); 6585 void* peer);
6583 6586
6584 static RawExternalOneByteString* ReadFrom(SnapshotReader* reader, 6587 static RawExternalOneByteString* ReadFrom(SnapshotReader* reader,
6585 intptr_t object_id, 6588 intptr_t object_id,
6586 intptr_t tags, 6589 intptr_t tags,
6587 Snapshot::Kind kind); 6590 Snapshot::Kind kind,
6591 bool as_reference);
6588 6592
6589 static intptr_t NextFieldOffset() { 6593 static intptr_t NextFieldOffset() {
6590 // Indicates this class cannot be extended by dart code. 6594 // Indicates this class cannot be extended by dart code.
6591 return -kWordSize; 6595 return -kWordSize;
6592 } 6596 }
6593 6597
6594 friend class Class; 6598 friend class Class;
6595 friend class String; 6599 friend class String;
6596 friend class SnapshotReader; 6600 friend class SnapshotReader;
6597 friend class Symbols; 6601 friend class Symbols;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
6656 str.StoreNonPointer(&raw_ptr(str)->external_data_, data); 6660 str.StoreNonPointer(&raw_ptr(str)->external_data_, data);
6657 } 6661 }
6658 6662
6659 static void Finalize(void* isolate_callback_data, 6663 static void Finalize(void* isolate_callback_data,
6660 Dart_WeakPersistentHandle handle, 6664 Dart_WeakPersistentHandle handle,
6661 void* peer); 6665 void* peer);
6662 6666
6663 static RawExternalTwoByteString* ReadFrom(SnapshotReader* reader, 6667 static RawExternalTwoByteString* ReadFrom(SnapshotReader* reader,
6664 intptr_t object_id, 6668 intptr_t object_id,
6665 intptr_t tags, 6669 intptr_t tags,
6666 Snapshot::Kind kind); 6670 Snapshot::Kind kind,
6671 bool as_reference);
6667 6672
6668 static intptr_t NextFieldOffset() { 6673 static intptr_t NextFieldOffset() {
6669 // Indicates this class cannot be extended by dart code. 6674 // Indicates this class cannot be extended by dart code.
6670 return -kWordSize; 6675 return -kWordSize;
6671 } 6676 }
6672 6677
6673 friend class Class; 6678 friend class Class;
6674 friend class String; 6679 friend class String;
6675 friend class SnapshotReader; 6680 friend class SnapshotReader;
6676 friend class Symbols; 6681 friend class Symbols;
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
6828 }; 6833 };
6829 6834
6830 6835
6831 class ImmutableArray : public AllStatic { 6836 class ImmutableArray : public AllStatic {
6832 public: 6837 public:
6833 static RawImmutableArray* New(intptr_t len, Heap::Space space = Heap::kNew); 6838 static RawImmutableArray* New(intptr_t len, Heap::Space space = Heap::kNew);
6834 6839
6835 static RawImmutableArray* ReadFrom(SnapshotReader* reader, 6840 static RawImmutableArray* ReadFrom(SnapshotReader* reader,
6836 intptr_t object_id, 6841 intptr_t object_id,
6837 intptr_t tags, 6842 intptr_t tags,
6838 Snapshot::Kind kind); 6843 Snapshot::Kind kind,
6844 bool as_reference);
6839 6845
6840 static const ClassId kClassId = kImmutableArrayCid; 6846 static const ClassId kClassId = kImmutableArrayCid;
6841 6847
6842 static intptr_t InstanceSize() { 6848 static intptr_t InstanceSize() {
6843 return Array::InstanceSize(); 6849 return Array::InstanceSize();
6844 } 6850 }
6845 6851
6846 static intptr_t InstanceSize(intptr_t len) { 6852 static intptr_t InstanceSize(intptr_t len) {
6847 return Array::InstanceSize(len); 6853 return Array::InstanceSize(len);
6848 } 6854 }
(...skipping 1302 matching lines...) Expand 10 before | Expand all | Expand 10 after
8151 8157
8152 8158
8153 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, 8159 RawObject* MegamorphicCache::GetTargetFunction(const Array& array,
8154 intptr_t index) { 8160 intptr_t index) {
8155 return array.At((index * kEntryLength) + kTargetFunctionIndex); 8161 return array.At((index * kEntryLength) + kTargetFunctionIndex);
8156 } 8162 }
8157 8163
8158 } // namespace dart 8164 } // namespace dart
8159 8165
8160 #endif // VM_OBJECT_H_ 8166 #endif // VM_OBJECT_H_
OLDNEW
« no previous file with comments | « runtime/vm/dart_api_message.cc ('k') | runtime/vm/raw_object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698