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

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

Issue 12093071: - Change the layout of external typed array objects to avoid the extra indirection when accessing e… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/object_test.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 #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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/object_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698