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

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

Issue 2275803002: Assign external sizes to external strings and to external typed data created by the VM. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: sync Created 4 years, 3 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_impl.cc ('k') | runtime/vm/object.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 #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 6662 matching lines...) Expand 10 before | Expand all | Expand 10 after
6673 void* GetPeer() const; 6673 void* GetPeer() const;
6674 6674
6675 void ToUTF8(uint8_t* utf8_array, intptr_t array_len) const; 6675 void ToUTF8(uint8_t* utf8_array, intptr_t array_len) const;
6676 6676
6677 // Copies the string characters into the provided external array 6677 // Copies the string characters into the provided external array
6678 // and morphs the string object into an external string object. 6678 // and morphs the string object into an external string object.
6679 // The remaining unused part of the original string object is marked as 6679 // The remaining unused part of the original string object is marked as
6680 // an Array object or a regular Object so that it can be traversed during 6680 // an Array object or a regular Object so that it can be traversed during
6681 // garbage collection. 6681 // garbage collection.
6682 RawString* MakeExternal(void* array, 6682 RawString* MakeExternal(void* array,
6683 intptr_t length, 6683 intptr_t external_size,
6684 void* peer, 6684 void* peer,
6685 Dart_PeerFinalizer cback) const; 6685 Dart_PeerFinalizer cback) const;
6686 6686
6687 // Creates a new String object from a C string that is assumed to contain 6687 // Creates a new String object from a C string that is assumed to contain
6688 // UTF-8 encoded characters and '\0' is considered a termination character. 6688 // UTF-8 encoded characters and '\0' is considered a termination character.
6689 // TODO(7123) - Rename this to FromCString(....). 6689 // TODO(7123) - Rename this to FromCString(....).
6690 static RawString* New(const char* cstr, Heap::Space space = Heap::kNew); 6690 static RawString* New(const char* cstr, Heap::Space space = Heap::kNew);
6691 6691
6692 // Creates a new String object from an array of UTF-8 encoded characters. 6692 // Creates a new String object from an array of UTF-8 encoded characters.
6693 static RawString* FromUTF8(const uint8_t* utf8_array, 6693 static RawString* FromUTF8(const uint8_t* utf8_array,
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
6929 Heap::Space space); 6929 Heap::Space space);
6930 6930
6931 // High performance version of substring for one-byte strings. 6931 // High performance version of substring for one-byte strings.
6932 // "str" must be OneByteString. 6932 // "str" must be OneByteString.
6933 static RawOneByteString* SubStringUnchecked(const String& str, 6933 static RawOneByteString* SubStringUnchecked(const String& str,
6934 intptr_t begin_index, 6934 intptr_t begin_index,
6935 intptr_t length, 6935 intptr_t length,
6936 Heap::Space space); 6936 Heap::Space space);
6937 6937
6938 static void SetPeer(const String& str, 6938 static void SetPeer(const String& str,
6939 intptr_t external_size,
6939 void* peer, 6940 void* peer,
6940 Dart_PeerFinalizer cback); 6941 Dart_PeerFinalizer cback);
6941 6942
6942 static void Finalize(void* isolate_callback_data, 6943 static void Finalize(void* isolate_callback_data,
6943 Dart_WeakPersistentHandle handle, 6944 Dart_WeakPersistentHandle handle,
6944 void* peer); 6945 void* peer);
6945 6946
6946 static const ClassId kClassId = kOneByteStringCid; 6947 static const ClassId kClassId = kOneByteStringCid;
6947 6948
6948 static RawOneByteString* null() { 6949 static RawOneByteString* null() {
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
7044 intptr_t start, 7045 intptr_t start,
7045 intptr_t end, 7046 intptr_t end,
7046 intptr_t len, 7047 intptr_t len,
7047 Heap::Space space); 7048 Heap::Space space);
7048 7049
7049 static RawTwoByteString* Transform(int32_t (*mapping)(int32_t ch), 7050 static RawTwoByteString* Transform(int32_t (*mapping)(int32_t ch),
7050 const String& str, 7051 const String& str,
7051 Heap::Space space); 7052 Heap::Space space);
7052 7053
7053 static void SetPeer(const String& str, 7054 static void SetPeer(const String& str,
7055 intptr_t external_size,
7054 void* peer, 7056 void* peer,
7055 Dart_PeerFinalizer cback); 7057 Dart_PeerFinalizer cback);
7056 7058
7057 static void Finalize(void* isolate_callback_data, 7059 static void Finalize(void* isolate_callback_data,
7058 Dart_WeakPersistentHandle handle, 7060 Dart_WeakPersistentHandle handle,
7059 void* peer); 7061 void* peer);
7060 7062
7061 static RawTwoByteString* null() { 7063 static RawTwoByteString* null() {
7062 return reinterpret_cast<RawTwoByteString*>(Object::null()); 7064 return reinterpret_cast<RawTwoByteString*>(Object::null());
7063 } 7065 }
(...skipping 825 matching lines...) Expand 10 before | Expand all | Expand 10 after
7889 TYPED_GETTER_SETTER(Uint64, uint64_t) 7891 TYPED_GETTER_SETTER(Uint64, uint64_t)
7890 TYPED_GETTER_SETTER(Float32, float) 7892 TYPED_GETTER_SETTER(Float32, float)
7891 TYPED_GETTER_SETTER(Float64, double) 7893 TYPED_GETTER_SETTER(Float64, double)
7892 TYPED_GETTER_SETTER(Float32x4, simd128_value_t) 7894 TYPED_GETTER_SETTER(Float32x4, simd128_value_t)
7893 TYPED_GETTER_SETTER(Int32x4, simd128_value_t) 7895 TYPED_GETTER_SETTER(Int32x4, simd128_value_t)
7894 TYPED_GETTER_SETTER(Float64x2, simd128_value_t) 7896 TYPED_GETTER_SETTER(Float64x2, simd128_value_t)
7895 7897
7896 #undef TYPED_GETTER_SETTER 7898 #undef TYPED_GETTER_SETTER
7897 7899
7898 FinalizablePersistentHandle* AddFinalizer( 7900 FinalizablePersistentHandle* AddFinalizer(
7899 void* peer, Dart_WeakPersistentHandleFinalizer callback) const; 7901 void* peer,
7902 Dart_WeakPersistentHandleFinalizer callback,
7903 intptr_t external_size) const;
7900 7904
7901 static intptr_t length_offset() { 7905 static intptr_t length_offset() {
7902 return OFFSET_OF(RawExternalTypedData, length_); 7906 return OFFSET_OF(RawExternalTypedData, length_);
7903 } 7907 }
7904 7908
7905 static intptr_t data_offset() { 7909 static intptr_t data_offset() {
7906 return OFFSET_OF(RawExternalTypedData, data_); 7910 return OFFSET_OF(RawExternalTypedData, data_);
7907 } 7911 }
7908 7912
7909 static intptr_t InstanceSize() { 7913 static intptr_t InstanceSize() {
(...skipping 869 matching lines...) Expand 10 before | Expand all | Expand 10 after
8779 8783
8780 inline void TypeArguments::SetHash(intptr_t value) const { 8784 inline void TypeArguments::SetHash(intptr_t value) const {
8781 // This is only safe because we create a new Smi, which does not cause 8785 // This is only safe because we create a new Smi, which does not cause
8782 // heap allocation. 8786 // heap allocation.
8783 StoreSmi(&raw_ptr()->hash_, Smi::New(value)); 8787 StoreSmi(&raw_ptr()->hash_, Smi::New(value));
8784 } 8788 }
8785 8789
8786 } // namespace dart 8790 } // namespace dart
8787 8791
8788 #endif // VM_OBJECT_H_ 8792 #endif // VM_OBJECT_H_
OLDNEW
« no previous file with comments | « runtime/vm/dart_api_impl.cc ('k') | runtime/vm/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698