| 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 |