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/become.h" | 10 #include "vm/become.h" |
(...skipping 1465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |