| OLD | NEW |
| 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/object.h" | 5 #include "vm/object.h" |
| 6 | 6 |
| 7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" |
| 8 #include "platform/assert.h" | 8 #include "platform/assert.h" |
| 9 #include "vm/assembler.h" | 9 #include "vm/assembler.h" |
| 10 #include "vm/bigint_operations.h" | 10 #include "vm/bigint_operations.h" |
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 } else if (value == '\v') { | 266 } else if (value == '\v') { |
| 267 return 'v'; | 267 return 'v'; |
| 268 } else if (value == '\r') { | 268 } else if (value == '\r') { |
| 269 return 'r'; | 269 return 'r'; |
| 270 } | 270 } |
| 271 UNREACHABLE(); | 271 UNREACHABLE(); |
| 272 return '\0'; | 272 return '\0'; |
| 273 } | 273 } |
| 274 | 274 |
| 275 | 275 |
| 276 static void DeleteWeakPersistentHandle(Dart_Handle handle) { |
| 277 ApiState* state = Isolate::Current()->api_state(); |
| 278 ASSERT(state != NULL); |
| 279 FinalizablePersistentHandle* weak_ref = |
| 280 reinterpret_cast<FinalizablePersistentHandle*>(handle); |
| 281 ASSERT(state->IsValidWeakPersistentHandle(handle)); |
| 282 state->weak_persistent_handles().FreeHandle(weak_ref); |
| 283 } |
| 284 |
| 285 |
| 276 void Object::InitOnce() { | 286 void Object::InitOnce() { |
| 277 // TODO(iposva): NoGCScope needs to be added here. | 287 // TODO(iposva): NoGCScope needs to be added here. |
| 278 ASSERT(class_class() == null_); | 288 ASSERT(class_class() == null_); |
| 279 // Initialize the static vtable values. | 289 // Initialize the static vtable values. |
| 280 { | 290 { |
| 281 Object fake_object; | 291 Object fake_object; |
| 282 Smi fake_smi; | 292 Smi fake_smi; |
| 283 Object::handle_vtable_ = fake_object.vtable(); | 293 Object::handle_vtable_ = fake_object.vtable(); |
| 284 Smi::handle_vtable_ = fake_smi.vtable(); | 294 Smi::handle_vtable_ = fake_smi.vtable(); |
| 285 } | 295 } |
| (...skipping 4456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4742 RawExternalUint8Array* TokenStream::GetStream() const { | 4752 RawExternalUint8Array* TokenStream::GetStream() const { |
| 4743 return raw_ptr()->stream_; | 4753 return raw_ptr()->stream_; |
| 4744 } | 4754 } |
| 4745 | 4755 |
| 4746 | 4756 |
| 4747 void TokenStream::SetStream(const ExternalUint8Array& value) const { | 4757 void TokenStream::SetStream(const ExternalUint8Array& value) const { |
| 4748 StorePointer(&raw_ptr()->stream_, value.raw()); | 4758 StorePointer(&raw_ptr()->stream_, value.raw()); |
| 4749 } | 4759 } |
| 4750 | 4760 |
| 4751 | 4761 |
| 4752 void TokenStream::DataFinalizer(void *peer) { | 4762 void TokenStream::DataFinalizer(Dart_Handle handle, void *peer) { |
| 4753 ASSERT(peer != NULL); | 4763 ASSERT(peer != NULL); |
| 4754 ::free(peer); | 4764 ::free(peer); |
| 4765 DeleteWeakPersistentHandle(handle); |
| 4755 } | 4766 } |
| 4756 | 4767 |
| 4757 | 4768 |
| 4758 RawString* TokenStream::PrivateKey() const { | 4769 RawString* TokenStream::PrivateKey() const { |
| 4759 return raw_ptr()->private_key_; | 4770 return raw_ptr()->private_key_; |
| 4760 } | 4771 } |
| 4761 | 4772 |
| 4762 | 4773 |
| 4763 void TokenStream::SetPrivateKey(const String& value) const { | 4774 void TokenStream::SetPrivateKey(const String& value) const { |
| 4764 StorePointer(&raw_ptr()->private_key_, value.raw()); | 4775 StorePointer(&raw_ptr()->private_key_, value.raw()); |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4960 | 4971 |
| 4961 | 4972 |
| 4962 RawTokenStream* TokenStream::New(intptr_t len) { | 4973 RawTokenStream* TokenStream::New(intptr_t len) { |
| 4963 if (len < 0 || len > kMaxElements) { | 4974 if (len < 0 || len > kMaxElements) { |
| 4964 // This should be caught before we reach here. | 4975 // This should be caught before we reach here. |
| 4965 FATAL1("Fatal error in TokenStream::New: invalid len %"Pd"\n", len); | 4976 FATAL1("Fatal error in TokenStream::New: invalid len %"Pd"\n", len); |
| 4966 } | 4977 } |
| 4967 uint8_t* data = reinterpret_cast<uint8_t*>(::malloc(len)); | 4978 uint8_t* data = reinterpret_cast<uint8_t*>(::malloc(len)); |
| 4968 ASSERT(data != NULL); | 4979 ASSERT(data != NULL); |
| 4969 const ExternalUint8Array& stream = ExternalUint8Array::Handle( | 4980 const ExternalUint8Array& stream = ExternalUint8Array::Handle( |
| 4970 ExternalUint8Array::New(data, len, data, DataFinalizer, Heap::kOld)); | 4981 ExternalUint8Array::New(data, len, Heap::kOld)); |
| 4982 stream.AddFinalizer(data, DataFinalizer); |
| 4971 const TokenStream& result = TokenStream::Handle(TokenStream::New()); | 4983 const TokenStream& result = TokenStream::Handle(TokenStream::New()); |
| 4972 result.SetStream(stream); | 4984 result.SetStream(stream); |
| 4973 return result.raw(); | 4985 return result.raw(); |
| 4974 } | 4986 } |
| 4975 | 4987 |
| 4976 | 4988 |
| 4977 // Helper class for creation of compressed token stream data. | 4989 // Helper class for creation of compressed token stream data. |
| 4978 class CompressedTokenStreamData : public ValueObject { | 4990 class CompressedTokenStreamData : public ValueObject { |
| 4979 public: | 4991 public: |
| 4980 static const intptr_t kIncrementSize = 16 * KB; | 4992 static const intptr_t kIncrementSize = 16 * KB; |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5133 data.AddSimpleToken(token.kind); | 5145 data.AddSimpleToken(token.kind); |
| 5134 } | 5146 } |
| 5135 } | 5147 } |
| 5136 if (FLAG_compiler_stats) { | 5148 if (FLAG_compiler_stats) { |
| 5137 CompilerStats::num_tokens_total += len; | 5149 CompilerStats::num_tokens_total += len; |
| 5138 } | 5150 } |
| 5139 data.AddSimpleToken(Token::kEOS); // End of stream. | 5151 data.AddSimpleToken(Token::kEOS); // End of stream. |
| 5140 | 5152 |
| 5141 // Create and setup the token stream object. | 5153 // Create and setup the token stream object. |
| 5142 const ExternalUint8Array& stream = ExternalUint8Array::Handle( | 5154 const ExternalUint8Array& stream = ExternalUint8Array::Handle( |
| 5143 ExternalUint8Array::New(data.GetStream(), | 5155 ExternalUint8Array::New(data.GetStream(), data.Length(), Heap::kOld)); |
| 5144 data.Length(), | 5156 stream.AddFinalizer(data.GetStream(), DataFinalizer); |
| 5145 data.GetStream(), | |
| 5146 DataFinalizer, | |
| 5147 Heap::kOld)); | |
| 5148 const TokenStream& result = TokenStream::Handle(New()); | 5157 const TokenStream& result = TokenStream::Handle(New()); |
| 5149 result.SetPrivateKey(private_key); | 5158 result.SetPrivateKey(private_key); |
| 5150 { | 5159 { |
| 5151 NoGCScope no_gc; | 5160 NoGCScope no_gc; |
| 5152 result.SetStream(stream); | 5161 result.SetStream(stream); |
| 5153 const Array& tokens = Array::Handle(Array::MakeArray(data.TokenObjects())); | 5162 const Array& tokens = Array::Handle(Array::MakeArray(data.TokenObjects())); |
| 5154 result.SetTokenObjects(tokens); | 5163 result.SetTokenObjects(tokens); |
| 5155 } | 5164 } |
| 5156 return result.raw(); | 5165 return result.raw(); |
| 5157 } | 5166 } |
| (...skipping 5837 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10995 return reinterpret_cast<const char*>(result); | 11004 return reinterpret_cast<const char*>(result); |
| 10996 } | 11005 } |
| 10997 | 11006 |
| 10998 | 11007 |
| 10999 void String::ToUTF8(uint8_t* utf8_array, intptr_t array_len) const { | 11008 void String::ToUTF8(uint8_t* utf8_array, intptr_t array_len) const { |
| 11000 ASSERT(array_len >= Utf8::Length(*this)); | 11009 ASSERT(array_len >= Utf8::Length(*this)); |
| 11001 Utf8::Encode(*this, reinterpret_cast<char*>(utf8_array), array_len); | 11010 Utf8::Encode(*this, reinterpret_cast<char*>(utf8_array), array_len); |
| 11002 } | 11011 } |
| 11003 | 11012 |
| 11004 | 11013 |
| 11005 static void AddFinalizer(const Object& referent, | 11014 static FinalizablePersistentHandle* AddFinalizer( |
| 11006 void* peer, | 11015 const Object& referent, |
| 11007 Dart_WeakPersistentHandleFinalizer callback) { | 11016 void* peer, |
| 11008 ASSERT(callback != NULL); | 11017 Dart_WeakPersistentHandleFinalizer callback) { |
| 11018 ASSERT((callback != NULL && peer != NULL) || |
| 11019 (callback == NULL && peer == NULL)); |
| 11009 ApiState* state = Isolate::Current()->api_state(); | 11020 ApiState* state = Isolate::Current()->api_state(); |
| 11010 ASSERT(state != NULL); | 11021 ASSERT(state != NULL); |
| 11011 FinalizablePersistentHandle* weak_ref = | 11022 FinalizablePersistentHandle* weak_ref = |
| 11012 state->weak_persistent_handles().AllocateHandle(); | 11023 state->weak_persistent_handles().AllocateHandle(); |
| 11013 weak_ref->set_raw(referent); | 11024 weak_ref->set_raw(referent); |
| 11014 weak_ref->set_peer(peer); | 11025 weak_ref->set_peer(peer); |
| 11015 weak_ref->set_callback(callback); | 11026 weak_ref->set_callback(callback); |
| 11027 return weak_ref; |
| 11016 } | 11028 } |
| 11017 | 11029 |
| 11018 | 11030 |
| 11019 RawString* String::MakeExternal(void* array, | 11031 RawString* String::MakeExternal(void* array, |
| 11020 intptr_t length, | 11032 intptr_t length, |
| 11021 void* peer, | 11033 void* peer, |
| 11022 Dart_PeerFinalizer cback) const { | 11034 Dart_PeerFinalizer cback) const { |
| 11023 NoGCScope no_gc; | 11035 NoGCScope no_gc; |
| 11024 ASSERT(array != NULL); | 11036 ASSERT(array != NULL); |
| 11025 intptr_t str_length = this->Length(); | 11037 intptr_t str_length = this->Length(); |
| (...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11609 result ^= raw; | 11621 result ^= raw; |
| 11610 result.SetLength(len); | 11622 result.SetLength(len); |
| 11611 result.SetHash(0); | 11623 result.SetHash(0); |
| 11612 SetExternalData(result, external_data); | 11624 SetExternalData(result, external_data); |
| 11613 } | 11625 } |
| 11614 AddFinalizer(result, external_data, ExternalOneByteString::Finalize); | 11626 AddFinalizer(result, external_data, ExternalOneByteString::Finalize); |
| 11615 return ExternalOneByteString::raw(result); | 11627 return ExternalOneByteString::raw(result); |
| 11616 } | 11628 } |
| 11617 | 11629 |
| 11618 | 11630 |
| 11619 static void DeleteWeakPersistentHandle(Dart_Handle handle) { | |
| 11620 ApiState* state = Isolate::Current()->api_state(); | |
| 11621 ASSERT(state != NULL); | |
| 11622 FinalizablePersistentHandle* weak_ref = | |
| 11623 reinterpret_cast<FinalizablePersistentHandle*>(handle); | |
| 11624 ASSERT(state->IsValidWeakPersistentHandle(handle)); | |
| 11625 state->weak_persistent_handles().FreeHandle(weak_ref); | |
| 11626 } | |
| 11627 | |
| 11628 | |
| 11629 void ExternalOneByteString::Finalize(Dart_Handle handle, void* peer) { | 11631 void ExternalOneByteString::Finalize(Dart_Handle handle, void* peer) { |
| 11630 delete reinterpret_cast<ExternalStringData<uint8_t>*>(peer); | 11632 delete reinterpret_cast<ExternalStringData<uint8_t>*>(peer); |
| 11631 DeleteWeakPersistentHandle(handle); | 11633 DeleteWeakPersistentHandle(handle); |
| 11632 } | 11634 } |
| 11633 | 11635 |
| 11634 | 11636 |
| 11635 RawExternalTwoByteString* ExternalTwoByteString::New( | 11637 RawExternalTwoByteString* ExternalTwoByteString::New( |
| 11636 const uint16_t* data, | 11638 const uint16_t* data, |
| 11637 intptr_t len, | 11639 intptr_t len, |
| 11638 void* peer, | 11640 void* peer, |
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11974 ASSERT(Utils::RangeCheck(dst_offset, length, dst.ByteLength())); | 11976 ASSERT(Utils::RangeCheck(dst_offset, length, dst.ByteLength())); |
| 11975 { | 11977 { |
| 11976 NoGCScope no_gc; | 11978 NoGCScope no_gc; |
| 11977 if (length > 0) { | 11979 if (length > 0) { |
| 11978 memmove(dst.ByteAddr(dst_offset), src.ByteAddr(src_offset), length); | 11980 memmove(dst.ByteAddr(dst_offset), src.ByteAddr(src_offset), length); |
| 11979 } | 11981 } |
| 11980 } | 11982 } |
| 11981 } | 11983 } |
| 11982 | 11984 |
| 11983 | 11985 |
| 11984 template<typename T> | |
| 11985 static void ExternalByteArrayFinalize(Dart_Handle handle, void* peer) { | |
| 11986 delete reinterpret_cast<ExternalByteArrayData<T>*>(peer); | |
| 11987 DeleteWeakPersistentHandle(handle); | |
| 11988 } | |
| 11989 | |
| 11990 | |
| 11991 template<typename HandleT, typename RawT, typename ElementT> | 11986 template<typename HandleT, typename RawT, typename ElementT> |
| 11992 RawT* ByteArray::NewExternalImpl(intptr_t class_id, | 11987 RawT* ByteArray::NewExternalImpl(intptr_t class_id, |
| 11993 ElementT* data, | 11988 ElementT* data, |
| 11994 intptr_t len, | 11989 intptr_t len, |
| 11995 void* peer, | |
| 11996 Dart_PeerFinalizer callback, | |
| 11997 Heap::Space space) { | 11990 Heap::Space space) { |
| 11998 if (len < 0 || len > HandleT::kMaxElements) { | 11991 if (len < 0 || len > HandleT::kMaxElements) { |
| 11999 // This should be caught before we reach here. | 11992 // This should be caught before we reach here. |
| 12000 FATAL1("Fatal error in ByteArray::NewExternalImpl: invalid len %"Pd"\n", | 11993 FATAL1("Fatal error in ByteArray::NewExternalImpl: invalid len %"Pd"\n", |
| 12001 len); | 11994 len); |
| 12002 } | 11995 } |
| 12003 HandleT& result = HandleT::Handle(); | 11996 HandleT& result = HandleT::Handle(); |
| 12004 ExternalByteArrayData<ElementT>* external_data = | |
| 12005 new ExternalByteArrayData<ElementT>(data, peer, callback); | |
| 12006 { | 11997 { |
| 12007 RawObject* raw = Object::Allocate(class_id, HandleT::InstanceSize(), space); | 11998 RawObject* raw = Object::Allocate(class_id, HandleT::InstanceSize(), space); |
| 12008 NoGCScope no_gc; | 11999 NoGCScope no_gc; |
| 12009 result ^= raw; | 12000 result ^= raw; |
| 12010 result.SetLength(len); | 12001 result.SetLength(len); |
| 12011 result.SetExternalData(external_data); | 12002 result.SetData(data); |
| 12012 } | 12003 } |
| 12013 AddFinalizer(result, external_data, ExternalByteArrayFinalize<ElementT>); | |
| 12014 return result.raw(); | 12004 return result.raw(); |
| 12015 } | 12005 } |
| 12016 | 12006 |
| 12017 | 12007 |
| 12018 intptr_t ByteArray::ByteLength() const { | 12008 intptr_t ByteArray::ByteLength() const { |
| 12019 // ByteArray is an abstract class. | 12009 // ByteArray is an abstract class. |
| 12020 UNREACHABLE(); | 12010 UNREACHABLE(); |
| 12021 return 0; | 12011 return 0; |
| 12022 } | 12012 } |
| 12023 | 12013 |
| 12024 | 12014 |
| 12015 FinalizablePersistentHandle* ByteArray::AddFinalizer( |
| 12016 void* peer, |
| 12017 Dart_WeakPersistentHandleFinalizer callback) const { |
| 12018 SetPeer(peer); |
| 12019 return dart::AddFinalizer(*this, peer, callback); |
| 12020 } |
| 12021 |
| 12022 |
| 12025 uint8_t* ByteArray::ByteAddr(intptr_t byte_offset) const { | 12023 uint8_t* ByteArray::ByteAddr(intptr_t byte_offset) const { |
| 12026 // ByteArray is an abstract class. | 12024 // ByteArray is an abstract class. |
| 12027 UNREACHABLE(); | 12025 UNREACHABLE(); |
| 12028 return NULL; | 12026 return NULL; |
| 12029 } | 12027 } |
| 12030 | 12028 |
| 12031 | 12029 |
| 12032 const char* ByteArray::ToCString() const { | 12030 const char* ByteArray::ToCString() const { |
| 12033 // ByteArray is an abstract class. | 12031 // ByteArray is an abstract class. |
| 12034 UNREACHABLE(); | 12032 UNREACHABLE(); |
| (...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12310 } | 12308 } |
| 12311 | 12309 |
| 12312 | 12310 |
| 12313 const char* Float64Array::ToCString() const { | 12311 const char* Float64Array::ToCString() const { |
| 12314 return "_Float64Array"; | 12312 return "_Float64Array"; |
| 12315 } | 12313 } |
| 12316 | 12314 |
| 12317 | 12315 |
| 12318 RawExternalInt8Array* ExternalInt8Array::New(int8_t* data, | 12316 RawExternalInt8Array* ExternalInt8Array::New(int8_t* data, |
| 12319 intptr_t len, | 12317 intptr_t len, |
| 12320 void* peer, | |
| 12321 Dart_PeerFinalizer callback, | |
| 12322 Heap::Space space) { | 12318 Heap::Space space) { |
| 12323 ASSERT(Isolate::Current()->object_store()->external_int8_array_class() != | 12319 ASSERT(Isolate::Current()->object_store()->external_int8_array_class() != |
| 12324 Class::null()); | 12320 Class::null()); |
| 12325 return NewExternalImpl<ExternalInt8Array, RawExternalInt8Array>( | 12321 return NewExternalImpl<ExternalInt8Array, |
| 12326 kClassId, data, len, peer, callback, space); | 12322 RawExternalInt8Array>(kClassId, data, len, space); |
| 12327 } | 12323 } |
| 12328 | 12324 |
| 12329 | 12325 |
| 12330 const char* ExternalInt8Array::ToCString() const { | 12326 const char* ExternalInt8Array::ToCString() const { |
| 12331 return "_ExternalInt8Array"; | 12327 return "_ExternalInt8Array"; |
| 12332 } | 12328 } |
| 12333 | 12329 |
| 12334 | 12330 |
| 12335 RawExternalUint8Array* ExternalUint8Array::New(uint8_t* data, | 12331 RawExternalUint8Array* ExternalUint8Array::New(uint8_t* data, |
| 12336 intptr_t len, | 12332 intptr_t len, |
| 12337 void* peer, | |
| 12338 Dart_PeerFinalizer callback, | |
| 12339 Heap::Space space) { | 12333 Heap::Space space) { |
| 12340 ASSERT(Isolate::Current()->object_store()->external_uint8_array_class() != | 12334 ASSERT(Isolate::Current()->object_store()->external_uint8_array_class() != |
| 12341 Class::null()); | 12335 Class::null()); |
| 12342 return NewExternalImpl<ExternalUint8Array, RawExternalUint8Array>( | 12336 return NewExternalImpl<ExternalUint8Array, |
| 12343 kClassId, data, len, peer, callback, space); | 12337 RawExternalUint8Array>(kClassId, data, len, space); |
| 12344 } | 12338 } |
| 12345 | 12339 |
| 12346 | 12340 |
| 12347 const char* ExternalUint8Array::ToCString() const { | 12341 const char* ExternalUint8Array::ToCString() const { |
| 12348 return "_ExternalUint8Array"; | 12342 return "_ExternalUint8Array"; |
| 12349 } | 12343 } |
| 12350 | 12344 |
| 12351 | 12345 |
| 12352 RawExternalUint8ClampedArray* ExternalUint8ClampedArray::New( | 12346 RawExternalUint8ClampedArray* ExternalUint8ClampedArray::New( |
| 12353 uint8_t* data, | 12347 uint8_t* data, |
| 12354 intptr_t len, | 12348 intptr_t len, |
| 12355 void* peer, | |
| 12356 Dart_PeerFinalizer callback, | |
| 12357 Heap::Space space) { | 12349 Heap::Space space) { |
| 12358 ASSERT(Isolate::Current()-> | 12350 ASSERT(Isolate::Current()-> |
| 12359 object_store()->external_uint8_clamped_array_class() != | 12351 object_store()->external_uint8_clamped_array_class() != |
| 12360 Class::null()); | 12352 Class::null()); |
| 12361 return NewExternalImpl<ExternalUint8ClampedArray, | 12353 return NewExternalImpl<ExternalUint8ClampedArray, |
| 12362 RawExternalUint8ClampedArray>(kClassId, data, len, peer, callback, space); | 12354 RawExternalUint8ClampedArray>(kClassId, data, |
| 12355 len, space); |
| 12363 } | 12356 } |
| 12364 | 12357 |
| 12365 | 12358 |
| 12366 const char* ExternalUint8ClampedArray::ToCString() const { | 12359 const char* ExternalUint8ClampedArray::ToCString() const { |
| 12367 return "_ExternalUint8ClampedArray"; | 12360 return "_ExternalUint8ClampedArray"; |
| 12368 } | 12361 } |
| 12369 | 12362 |
| 12370 | 12363 |
| 12371 RawExternalInt16Array* ExternalInt16Array::New(int16_t* data, | 12364 RawExternalInt16Array* ExternalInt16Array::New(int16_t* data, |
| 12372 intptr_t len, | 12365 intptr_t len, |
| 12373 void* peer, | |
| 12374 Dart_PeerFinalizer callback, | |
| 12375 Heap::Space space) { | 12366 Heap::Space space) { |
| 12376 ASSERT(Isolate::Current()->object_store()->external_int16_array_class() != | 12367 ASSERT(Isolate::Current()->object_store()->external_int16_array_class() != |
| 12377 Class::null()); | 12368 Class::null()); |
| 12378 return NewExternalImpl<ExternalInt16Array, RawExternalInt16Array>( | 12369 return NewExternalImpl<ExternalInt16Array, |
| 12379 kClassId, data, len, peer, callback, space); | 12370 RawExternalInt16Array>(kClassId, data, len, space); |
| 12380 } | 12371 } |
| 12381 | 12372 |
| 12382 | 12373 |
| 12383 const char* ExternalInt16Array::ToCString() const { | 12374 const char* ExternalInt16Array::ToCString() const { |
| 12384 return "_ExternalInt16Array"; | 12375 return "_ExternalInt16Array"; |
| 12385 } | 12376 } |
| 12386 | 12377 |
| 12387 | 12378 |
| 12388 RawExternalUint16Array* ExternalUint16Array::New(uint16_t* data, | 12379 RawExternalUint16Array* ExternalUint16Array::New(uint16_t* data, |
| 12389 intptr_t len, | 12380 intptr_t len, |
| 12390 void* peer, | |
| 12391 Dart_PeerFinalizer callback, | |
| 12392 Heap::Space space) { | 12381 Heap::Space space) { |
| 12393 ASSERT(Isolate::Current()->object_store()->external_uint16_array_class() != | 12382 ASSERT(Isolate::Current()->object_store()->external_uint16_array_class() != |
| 12394 Class::null()); | 12383 Class::null()); |
| 12395 return NewExternalImpl<ExternalUint16Array, RawExternalUint16Array>( | 12384 return NewExternalImpl<ExternalUint16Array, |
| 12396 kClassId, data, len, peer, callback, space); | 12385 RawExternalUint16Array>(kClassId, data, len, space); |
| 12397 } | 12386 } |
| 12398 | 12387 |
| 12399 | 12388 |
| 12400 const char* ExternalUint16Array::ToCString() const { | 12389 const char* ExternalUint16Array::ToCString() const { |
| 12401 return "_ExternalUint16Array"; | 12390 return "_ExternalUint16Array"; |
| 12402 } | 12391 } |
| 12403 | 12392 |
| 12404 | 12393 |
| 12405 RawExternalInt32Array* ExternalInt32Array::New(int32_t* data, | 12394 RawExternalInt32Array* ExternalInt32Array::New(int32_t* data, |
| 12406 intptr_t len, | 12395 intptr_t len, |
| 12407 void* peer, | |
| 12408 Dart_PeerFinalizer callback, | |
| 12409 Heap::Space space) { | 12396 Heap::Space space) { |
| 12410 ASSERT(Isolate::Current()->object_store()->external_int32_array_class() != | 12397 ASSERT(Isolate::Current()->object_store()->external_int32_array_class() != |
| 12411 Class::null()); | 12398 Class::null()); |
| 12412 return NewExternalImpl<ExternalInt32Array, RawExternalInt32Array>( | 12399 return NewExternalImpl<ExternalInt32Array, |
| 12413 kClassId, data, len, peer, callback, space); | 12400 RawExternalInt32Array>(kClassId, data, len, space); |
| 12414 } | 12401 } |
| 12415 | 12402 |
| 12416 | 12403 |
| 12417 const char* ExternalInt32Array::ToCString() const { | 12404 const char* ExternalInt32Array::ToCString() const { |
| 12418 return "_ExternalInt32Array"; | 12405 return "_ExternalInt32Array"; |
| 12419 } | 12406 } |
| 12420 | 12407 |
| 12421 | 12408 |
| 12422 RawExternalUint32Array* ExternalUint32Array::New(uint32_t* data, | 12409 RawExternalUint32Array* ExternalUint32Array::New(uint32_t* data, |
| 12423 intptr_t len, | 12410 intptr_t len, |
| 12424 void* peer, | |
| 12425 Dart_PeerFinalizer callback, | |
| 12426 Heap::Space space) { | 12411 Heap::Space space) { |
| 12427 ASSERT(Isolate::Current()->object_store()->external_uint32_array_class() != | 12412 ASSERT(Isolate::Current()->object_store()->external_uint32_array_class() != |
| 12428 Class::null()); | 12413 Class::null()); |
| 12429 return NewExternalImpl<ExternalUint32Array, RawExternalUint32Array>( | 12414 return NewExternalImpl<ExternalUint32Array, |
| 12430 kClassId, data, len, peer, callback, space); | 12415 RawExternalUint32Array>(kClassId, data, len, space); |
| 12431 } | 12416 } |
| 12432 | 12417 |
| 12433 | 12418 |
| 12434 const char* ExternalUint32Array::ToCString() const { | 12419 const char* ExternalUint32Array::ToCString() const { |
| 12435 return "_ExternalUint32Array"; | 12420 return "_ExternalUint32Array"; |
| 12436 } | 12421 } |
| 12437 | 12422 |
| 12438 | 12423 |
| 12439 RawExternalInt64Array* ExternalInt64Array::New(int64_t* data, | 12424 RawExternalInt64Array* ExternalInt64Array::New(int64_t* data, |
| 12440 intptr_t len, | 12425 intptr_t len, |
| 12441 void* peer, | |
| 12442 Dart_PeerFinalizer callback, | |
| 12443 Heap::Space space) { | 12426 Heap::Space space) { |
| 12444 ASSERT(Isolate::Current()->object_store()->external_int64_array_class() != | 12427 ASSERT(Isolate::Current()->object_store()->external_int64_array_class() != |
| 12445 Class::null()); | 12428 Class::null()); |
| 12446 return NewExternalImpl<ExternalInt64Array, RawExternalInt64Array>( | 12429 return NewExternalImpl<ExternalInt64Array, |
| 12447 kClassId, data, len, peer, callback, space); | 12430 RawExternalInt64Array>(kClassId, data, len, space); |
| 12448 } | 12431 } |
| 12449 | 12432 |
| 12450 | 12433 |
| 12451 const char* ExternalInt64Array::ToCString() const { | 12434 const char* ExternalInt64Array::ToCString() const { |
| 12452 return "_ExternalInt64Array"; | 12435 return "_ExternalInt64Array"; |
| 12453 } | 12436 } |
| 12454 | 12437 |
| 12455 | 12438 |
| 12456 RawExternalUint64Array* ExternalUint64Array::New(uint64_t* data, | 12439 RawExternalUint64Array* ExternalUint64Array::New(uint64_t* data, |
| 12457 intptr_t len, | 12440 intptr_t len, |
| 12458 void* peer, | |
| 12459 Dart_PeerFinalizer callback, | |
| 12460 Heap::Space space) { | 12441 Heap::Space space) { |
| 12461 ASSERT(Isolate::Current()->object_store()->external_uint64_array_class() != | 12442 ASSERT(Isolate::Current()->object_store()->external_uint64_array_class() != |
| 12462 Class::null()); | 12443 Class::null()); |
| 12463 return NewExternalImpl<ExternalUint64Array, RawExternalUint64Array>( | 12444 return NewExternalImpl<ExternalUint64Array, |
| 12464 kClassId, data, len, peer, callback, space); | 12445 RawExternalUint64Array>(kClassId, data, len, space); |
| 12465 } | 12446 } |
| 12466 | 12447 |
| 12467 | 12448 |
| 12468 const char* ExternalUint64Array::ToCString() const { | 12449 const char* ExternalUint64Array::ToCString() const { |
| 12469 return "_ExternalUint64Array"; | 12450 return "_ExternalUint64Array"; |
| 12470 } | 12451 } |
| 12471 | 12452 |
| 12472 | 12453 |
| 12473 RawExternalFloat32Array* ExternalFloat32Array::New(float* data, | 12454 RawExternalFloat32Array* ExternalFloat32Array::New(float* data, |
| 12474 intptr_t len, | 12455 intptr_t len, |
| 12475 void* peer, | |
| 12476 Dart_PeerFinalizer callback, | |
| 12477 Heap::Space space) { | 12456 Heap::Space space) { |
| 12478 ASSERT(Isolate::Current()->object_store()->external_float32_array_class() != | 12457 ASSERT(Isolate::Current()->object_store()->external_float32_array_class() != |
| 12479 Class::null()); | 12458 Class::null()); |
| 12480 return NewExternalImpl<ExternalFloat32Array, RawExternalFloat32Array>( | 12459 return NewExternalImpl<ExternalFloat32Array, |
| 12481 kClassId, data, len, peer, callback, space); | 12460 RawExternalFloat32Array>(kClassId, data, len, space); |
| 12482 } | 12461 } |
| 12483 | 12462 |
| 12484 | 12463 |
| 12485 const char* ExternalFloat32Array::ToCString() const { | 12464 const char* ExternalFloat32Array::ToCString() const { |
| 12486 return "_ExternalFloat32Array"; | 12465 return "_ExternalFloat32Array"; |
| 12487 } | 12466 } |
| 12488 | 12467 |
| 12489 | 12468 |
| 12490 RawExternalFloat64Array* ExternalFloat64Array::New(double* data, | 12469 RawExternalFloat64Array* ExternalFloat64Array::New(double* data, |
| 12491 intptr_t len, | 12470 intptr_t len, |
| 12492 void* peer, | |
| 12493 Dart_PeerFinalizer callback, | |
| 12494 Heap::Space space) { | 12471 Heap::Space space) { |
| 12495 ASSERT(Isolate::Current()->object_store()->external_float64_array_class() != | 12472 ASSERT(Isolate::Current()->object_store()->external_float64_array_class() != |
| 12496 Class::null()); | 12473 Class::null()); |
| 12497 return NewExternalImpl<ExternalFloat64Array, RawExternalFloat64Array>( | 12474 return NewExternalImpl<ExternalFloat64Array, |
| 12498 kClassId, data, len, peer, callback, space); | 12475 RawExternalFloat64Array>(kClassId, data, len, space); |
| 12499 } | 12476 } |
| 12500 | 12477 |
| 12501 | 12478 |
| 12502 const char* ExternalFloat64Array::ToCString() const { | 12479 const char* ExternalFloat64Array::ToCString() const { |
| 12503 return "_ExternalFloat64Array"; | 12480 return "_ExternalFloat64Array"; |
| 12504 } | 12481 } |
| 12505 | 12482 |
| 12506 | 12483 |
| 12507 const char* Closure::ToCString(const Instance& closure) { | 12484 const char* Closure::ToCString(const Instance& closure) { |
| 12508 const Function& fun = Function::Handle(Closure::function(closure)); | 12485 const Function& fun = Function::Handle(Closure::function(closure)); |
| (...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12805 } | 12782 } |
| 12806 return result.raw(); | 12783 return result.raw(); |
| 12807 } | 12784 } |
| 12808 | 12785 |
| 12809 | 12786 |
| 12810 const char* WeakProperty::ToCString() const { | 12787 const char* WeakProperty::ToCString() const { |
| 12811 return "_WeakProperty"; | 12788 return "_WeakProperty"; |
| 12812 } | 12789 } |
| 12813 | 12790 |
| 12814 } // namespace dart | 12791 } // namespace dart |
| OLD | NEW |