| Index: runtime/vm/raw_object.h
|
| diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
|
| index e58735b9ec021d93bf300b07672371c972d2876d..8fa8a7d3f3ef2a1a81b2ac4088f5e8db0de1c663 100644
|
| --- a/runtime/vm/raw_object.h
|
| +++ b/runtime/vm/raw_object.h
|
| @@ -49,6 +49,9 @@ namespace dart {
|
| V(OneByteString) \
|
| V(TwoByteString) \
|
| V(FourByteString) \
|
| + V(ExternalOneByteString) \
|
| + V(ExternalTwoByteString) \
|
| + V(ExternalFourByteString) \
|
| V(Bool) \
|
| V(Array) \
|
| V(ImmutableArray) \
|
| @@ -696,6 +699,40 @@ class RawFourByteString : public RawString {
|
| };
|
|
|
|
|
| +template<typename T>
|
| +class ExternalStringData {
|
| + public:
|
| + typedef void Callback(void* peer);
|
| + ExternalStringData(const T* data, void* peer, Callback* callback) :
|
| + data_(data), peer_(peer), callback_(callback) {
|
| + }
|
| + const T* data_;
|
| + void* peer_;
|
| + Callback* callback_;
|
| +};
|
| +
|
| +
|
| +class RawExternalOneByteString : public RawString {
|
| + RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalOneByteString);
|
| +
|
| + ExternalStringData<uint8_t>* external_data_;
|
| +};
|
| +
|
| +
|
| +class RawExternalTwoByteString : public RawString {
|
| + RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalTwoByteString);
|
| +
|
| + ExternalStringData<uint16_t>* external_data_;
|
| +};
|
| +
|
| +
|
| +class RawExternalFourByteString : public RawString {
|
| + RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalFourByteString);
|
| +
|
| + ExternalStringData<uint32_t>* external_data_;
|
| +};
|
| +
|
| +
|
| class RawBool : public RawInstance {
|
| RAW_HEAP_OBJECT_IMPLEMENTATION(Bool);
|
|
|
|
|