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

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

Issue 2571563005: Turn the VM's dart:typed_data into a patch (Closed)
Patch Set: Created 4 years 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
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/become.h" 10 #include "vm/become.h"
(...skipping 1465 matching lines...) Expand 10 before | Expand all | Expand 10 after
1476 if (lib.IsNull()) { 1476 if (lib.IsNull()) {
1477 lib = Library::NewLibraryHelper(Symbols::DartTypedData(), true); 1477 lib = Library::NewLibraryHelper(Symbols::DartTypedData(), true);
1478 lib.SetLoadRequested(); 1478 lib.SetLoadRequested();
1479 lib.Register(thread); 1479 lib.Register(thread);
1480 } 1480 }
1481 object_store->set_bootstrap_library(ObjectStore::kTypedData, lib); 1481 object_store->set_bootstrap_library(ObjectStore::kTypedData, lib);
1482 ASSERT(!lib.IsNull()); 1482 ASSERT(!lib.IsNull());
1483 ASSERT(lib.raw() == Library::TypedDataLibrary()); 1483 ASSERT(lib.raw() == Library::TypedDataLibrary());
1484 #define REGISTER_TYPED_DATA_CLASS(clazz) \ 1484 #define REGISTER_TYPED_DATA_CLASS(clazz) \
1485 cls = Class::NewTypedDataClass(kTypedData##clazz##ArrayCid); \ 1485 cls = Class::NewTypedDataClass(kTypedData##clazz##ArrayCid); \
1486 RegisterClass(cls, Symbols::clazz##List(), lib); 1486 RegisterPrivateClass(cls, Symbols::clazz##List(), lib);
1487 1487
1488 DART_CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_CLASS); 1488 DART_CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_CLASS);
1489 #undef REGISTER_TYPED_DATA_CLASS 1489 #undef REGISTER_TYPED_DATA_CLASS
1490 #define REGISTER_TYPED_DATA_VIEW_CLASS(clazz) \ 1490 #define REGISTER_TYPED_DATA_VIEW_CLASS(clazz) \
1491 cls = Class::NewTypedDataViewClass(kTypedData##clazz##ViewCid); \ 1491 cls = Class::NewTypedDataViewClass(kTypedData##clazz##ViewCid); \
1492 RegisterPrivateClass(cls, Symbols::_##clazz##View(), lib); \ 1492 RegisterPrivateClass(cls, Symbols::_##clazz##View(), lib); \
1493 pending_classes.Add(cls); 1493 pending_classes.Add(cls);
1494 1494
1495 CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_VIEW_CLASS); 1495 CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_VIEW_CLASS);
1496 cls = Class::NewTypedDataViewClass(kByteDataViewCid); 1496 cls = Class::NewTypedDataViewClass(kByteDataViewCid);
1497 RegisterPrivateClass(cls, Symbols::_ByteDataView(), lib); 1497 RegisterPrivateClass(cls, Symbols::_ByteDataView(), lib);
1498 pending_classes.Add(cls); 1498 pending_classes.Add(cls);
1499 #undef REGISTER_TYPED_DATA_VIEW_CLASS 1499 #undef REGISTER_TYPED_DATA_VIEW_CLASS
1500 #define REGISTER_EXT_TYPED_DATA_CLASS(clazz) \ 1500 #define REGISTER_EXT_TYPED_DATA_CLASS(clazz) \
1501 cls = Class::NewExternalTypedDataClass(kExternalTypedData##clazz##Cid); \ 1501 cls = Class::NewExternalTypedDataClass(kExternalTypedData##clazz##Cid); \
1502 RegisterPrivateClass(cls, Symbols::_External##clazz(), lib); 1502 RegisterPrivateClass(cls, Symbols::_External##clazz(), lib);
1503 1503
1504 cls = Class::New<Instance>(kByteBufferCid); 1504 cls = Class::New<Instance>(kByteBufferCid);
1505 cls.set_instance_size(0); 1505 cls.set_instance_size(0);
1506 cls.set_next_field_offset(-kWordSize); 1506 cls.set_next_field_offset(-kWordSize);
1507 RegisterClass(cls, Symbols::ByteBuffer(), lib); 1507 RegisterPrivateClass(cls, Symbols::_ByteBuffer(), lib);
1508 pending_classes.Add(cls); 1508 pending_classes.Add(cls);
1509 1509
1510 CLASS_LIST_TYPED_DATA(REGISTER_EXT_TYPED_DATA_CLASS); 1510 CLASS_LIST_TYPED_DATA(REGISTER_EXT_TYPED_DATA_CLASS);
1511 #undef REGISTER_EXT_TYPED_DATA_CLASS 1511 #undef REGISTER_EXT_TYPED_DATA_CLASS
1512 // Register Float32x4 and Int32x4 in the object store. 1512 // Register Float32x4 and Int32x4 in the object store.
1513 cls = Class::New<Float32x4>(); 1513 cls = Class::New<Float32x4>();
1514 RegisterClass(cls, Symbols::Float32x4(), lib); 1514 RegisterPrivateClass(cls, Symbols::Float32x4(), lib);
1515 cls.set_num_type_arguments(0); 1515 cls.set_num_type_arguments(0);
1516 cls.set_num_own_type_arguments(0); 1516 cls.set_num_own_type_arguments(0);
1517 cls.set_is_prefinalized(); 1517 cls.set_is_prefinalized();
1518 pending_classes.Add(cls); 1518 pending_classes.Add(cls);
1519 object_store->set_float32x4_class(cls); 1519 object_store->set_float32x4_class(cls);
1520 type = Type::NewNonParameterizedType(cls); 1520 type = Type::NewNonParameterizedType(cls);
1521 object_store->set_float32x4_type(type); 1521 object_store->set_float32x4_type(type);
1522 1522
1523 cls = Class::New<Int32x4>(); 1523 cls = Class::New<Int32x4>();
1524 RegisterClass(cls, Symbols::Int32x4(), lib); 1524 RegisterPrivateClass(cls, Symbols::Int32x4(), lib);
1525 cls.set_num_type_arguments(0); 1525 cls.set_num_type_arguments(0);
1526 cls.set_num_own_type_arguments(0); 1526 cls.set_num_own_type_arguments(0);
1527 cls.set_is_prefinalized(); 1527 cls.set_is_prefinalized();
1528 pending_classes.Add(cls); 1528 pending_classes.Add(cls);
1529 object_store->set_int32x4_class(cls); 1529 object_store->set_int32x4_class(cls);
1530 type = Type::NewNonParameterizedType(cls); 1530 type = Type::NewNonParameterizedType(cls);
1531 object_store->set_int32x4_type(type); 1531 object_store->set_int32x4_type(type);
1532 1532
1533 cls = Class::New<Float64x2>(); 1533 cls = Class::New<Float64x2>();
1534 RegisterClass(cls, Symbols::Float64x2(), lib); 1534 RegisterPrivateClass(cls, Symbols::Float64x2(), lib);
1535 cls.set_num_type_arguments(0); 1535 cls.set_num_type_arguments(0);
1536 cls.set_num_own_type_arguments(0); 1536 cls.set_num_own_type_arguments(0);
1537 cls.set_is_prefinalized(); 1537 cls.set_is_prefinalized();
1538 pending_classes.Add(cls); 1538 pending_classes.Add(cls);
1539 object_store->set_float64x2_class(cls); 1539 object_store->set_float64x2_class(cls);
1540 type = Type::NewNonParameterizedType(cls); 1540 type = Type::NewNonParameterizedType(cls);
1541 object_store->set_float64x2_type(type); 1541 object_store->set_float64x2_type(type);
1542 1542
1543 // Set the super type of class StackTrace to Object type so that the 1543 // Set the super type of class StackTrace to Object type so that the
1544 // 'toString' method is implemented. 1544 // 'toString' method is implemented.
(...skipping 9917 matching lines...) Expand 10 before | Expand all | Expand 10 after
11462 MATH_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS2); 11462 MATH_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS2);
11463 11463
11464 all_libs.Clear(); 11464 all_libs.Clear();
11465 all_libs.Add(&Library::ZoneHandle(Library::TypedDataLibrary())); 11465 all_libs.Add(&Library::ZoneHandle(Library::TypedDataLibrary()));
11466 TYPED_DATA_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS2); 11466 TYPED_DATA_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS2);
11467 11467
11468 #undef CHECK_FINGERPRINTS 11468 #undef CHECK_FINGERPRINTS
11469 #undef CHECK_FINGERPRINTS2 11469 #undef CHECK_FINGERPRINTS2
11470 11470
11471 11471
11472 Class& cls = Class::Handle(); 11472 #define CHECK_FACTORY_FINGERPRINTS(symbol, class_name, factory_name, cid, fp) \
11473 11473 func = GetFunction(all_libs, #class_name, #factory_name); \
11474 #define CHECK_FACTORY_FINGERPRINTS(factory_symbol, cid, fp) \
11475 cls = Isolate::Current()->class_table()->At(cid); \
11476 func = cls.LookupFunctionAllowPrivate(Symbols::factory_symbol()); \
11477 if (func.IsNull()) { \ 11474 if (func.IsNull()) { \
11478 has_errors = true; \ 11475 has_errors = true; \
11479 OS::Print("Function not found %s.%s\n", cls.ToCString(), \ 11476 OS::Print("Function not found %s.%s\n", #class_name, #factory_name); \
11480 Symbols::factory_symbol().ToCString()); \
11481 } else { \ 11477 } else { \
11482 CHECK_FINGERPRINT2(func, factory_symbol, cid, fp); \ 11478 CHECK_FINGERPRINT2(func, symbol, cid, fp); \
11483 } 11479 }
11484 11480
11481 all_libs.Add(&Library::ZoneHandle(Library::CoreLibrary()));
11485 RECOGNIZED_LIST_FACTORY_LIST(CHECK_FACTORY_FINGERPRINTS); 11482 RECOGNIZED_LIST_FACTORY_LIST(CHECK_FACTORY_FINGERPRINTS);
11486 11483
11487 #undef CHECK_FACTORY_FINGERPRINTS 11484 #undef CHECK_FACTORY_FINGERPRINTS
11488 11485
11489 if (has_errors) { 11486 if (has_errors) {
11490 FATAL("Fingerprint mismatch."); 11487 FATAL("Fingerprint mismatch.");
11491 } 11488 }
11492 } 11489 }
11493 #endif // defined(DART_NO_SNAPSHOT) && !defined(PRODUCT). 11490 #endif // defined(DART_NO_SNAPSHOT) && !defined(PRODUCT).
11494 11491
(...skipping 11270 matching lines...) Expand 10 before | Expand all | Expand 10 after
22765 return UserTag::null(); 22762 return UserTag::null();
22766 } 22763 }
22767 22764
22768 22765
22769 const char* UserTag::ToCString() const { 22766 const char* UserTag::ToCString() const {
22770 const String& tag_label = String::Handle(label()); 22767 const String& tag_label = String::Handle(label());
22771 return tag_label.ToCString(); 22768 return tag_label.ToCString();
22772 } 22769 }
22773 22770
22774 } // namespace dart 22771 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698