| 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 1492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1503 if (lib.IsNull()) { | 1503 if (lib.IsNull()) { |
| 1504 lib = Library::NewLibraryHelper(Symbols::DartTypedData(), true); | 1504 lib = Library::NewLibraryHelper(Symbols::DartTypedData(), true); |
| 1505 lib.SetLoadRequested(); | 1505 lib.SetLoadRequested(); |
| 1506 lib.Register(thread); | 1506 lib.Register(thread); |
| 1507 } | 1507 } |
| 1508 object_store->set_bootstrap_library(ObjectStore::kTypedData, lib); | 1508 object_store->set_bootstrap_library(ObjectStore::kTypedData, lib); |
| 1509 ASSERT(!lib.IsNull()); | 1509 ASSERT(!lib.IsNull()); |
| 1510 ASSERT(lib.raw() == Library::TypedDataLibrary()); | 1510 ASSERT(lib.raw() == Library::TypedDataLibrary()); |
| 1511 #define REGISTER_TYPED_DATA_CLASS(clazz) \ | 1511 #define REGISTER_TYPED_DATA_CLASS(clazz) \ |
| 1512 cls = Class::NewTypedDataClass(kTypedData##clazz##ArrayCid); \ | 1512 cls = Class::NewTypedDataClass(kTypedData##clazz##ArrayCid); \ |
| 1513 RegisterPrivateClass(cls, Symbols::clazz##List(), lib); | 1513 RegisterClass(cls, Symbols::clazz##List(), lib); |
| 1514 | 1514 |
| 1515 DART_CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_CLASS); | 1515 DART_CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_CLASS); |
| 1516 #undef REGISTER_TYPED_DATA_CLASS | 1516 #undef REGISTER_TYPED_DATA_CLASS |
| 1517 #define REGISTER_TYPED_DATA_VIEW_CLASS(clazz) \ | 1517 #define REGISTER_TYPED_DATA_VIEW_CLASS(clazz) \ |
| 1518 cls = Class::NewTypedDataViewClass(kTypedData##clazz##ViewCid); \ | 1518 cls = Class::NewTypedDataViewClass(kTypedData##clazz##ViewCid); \ |
| 1519 RegisterPrivateClass(cls, Symbols::_##clazz##View(), lib); \ | 1519 RegisterPrivateClass(cls, Symbols::_##clazz##View(), lib); \ |
| 1520 pending_classes.Add(cls); | 1520 pending_classes.Add(cls); |
| 1521 | 1521 |
| 1522 CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_VIEW_CLASS); | 1522 CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_VIEW_CLASS); |
| 1523 cls = Class::NewTypedDataViewClass(kByteDataViewCid); | 1523 cls = Class::NewTypedDataViewClass(kByteDataViewCid); |
| 1524 RegisterPrivateClass(cls, Symbols::_ByteDataView(), lib); | 1524 RegisterPrivateClass(cls, Symbols::_ByteDataView(), lib); |
| 1525 pending_classes.Add(cls); | 1525 pending_classes.Add(cls); |
| 1526 #undef REGISTER_TYPED_DATA_VIEW_CLASS | 1526 #undef REGISTER_TYPED_DATA_VIEW_CLASS |
| 1527 #define REGISTER_EXT_TYPED_DATA_CLASS(clazz) \ | 1527 #define REGISTER_EXT_TYPED_DATA_CLASS(clazz) \ |
| 1528 cls = Class::NewExternalTypedDataClass(kExternalTypedData##clazz##Cid); \ | 1528 cls = Class::NewExternalTypedDataClass(kExternalTypedData##clazz##Cid); \ |
| 1529 RegisterPrivateClass(cls, Symbols::_External##clazz(), lib); | 1529 RegisterPrivateClass(cls, Symbols::_External##clazz(), lib); |
| 1530 | 1530 |
| 1531 cls = Class::New<Instance>(kByteBufferCid); | 1531 cls = Class::New<Instance>(kByteBufferCid); |
| 1532 cls.set_instance_size(0); | 1532 cls.set_instance_size(0); |
| 1533 cls.set_next_field_offset(-kWordSize); | 1533 cls.set_next_field_offset(-kWordSize); |
| 1534 RegisterPrivateClass(cls, Symbols::_ByteBuffer(), lib); | 1534 RegisterClass(cls, Symbols::ByteBuffer(), lib); |
| 1535 pending_classes.Add(cls); | 1535 pending_classes.Add(cls); |
| 1536 | 1536 |
| 1537 CLASS_LIST_TYPED_DATA(REGISTER_EXT_TYPED_DATA_CLASS); | 1537 CLASS_LIST_TYPED_DATA(REGISTER_EXT_TYPED_DATA_CLASS); |
| 1538 #undef REGISTER_EXT_TYPED_DATA_CLASS | 1538 #undef REGISTER_EXT_TYPED_DATA_CLASS |
| 1539 // Register Float32x4 and Int32x4 in the object store. | 1539 // Register Float32x4 and Int32x4 in the object store. |
| 1540 cls = Class::New<Float32x4>(); | 1540 cls = Class::New<Float32x4>(); |
| 1541 RegisterPrivateClass(cls, Symbols::Float32x4(), lib); | 1541 RegisterClass(cls, Symbols::Float32x4(), lib); |
| 1542 cls.set_num_type_arguments(0); | 1542 cls.set_num_type_arguments(0); |
| 1543 cls.set_num_own_type_arguments(0); | 1543 cls.set_num_own_type_arguments(0); |
| 1544 cls.set_is_prefinalized(); | 1544 cls.set_is_prefinalized(); |
| 1545 pending_classes.Add(cls); | 1545 pending_classes.Add(cls); |
| 1546 object_store->set_float32x4_class(cls); | 1546 object_store->set_float32x4_class(cls); |
| 1547 type = Type::NewNonParameterizedType(cls); | 1547 type = Type::NewNonParameterizedType(cls); |
| 1548 object_store->set_float32x4_type(type); | 1548 object_store->set_float32x4_type(type); |
| 1549 | 1549 |
| 1550 cls = Class::New<Int32x4>(); | 1550 cls = Class::New<Int32x4>(); |
| 1551 RegisterPrivateClass(cls, Symbols::Int32x4(), lib); | 1551 RegisterClass(cls, Symbols::Int32x4(), lib); |
| 1552 cls.set_num_type_arguments(0); | 1552 cls.set_num_type_arguments(0); |
| 1553 cls.set_num_own_type_arguments(0); | 1553 cls.set_num_own_type_arguments(0); |
| 1554 cls.set_is_prefinalized(); | 1554 cls.set_is_prefinalized(); |
| 1555 pending_classes.Add(cls); | 1555 pending_classes.Add(cls); |
| 1556 object_store->set_int32x4_class(cls); | 1556 object_store->set_int32x4_class(cls); |
| 1557 type = Type::NewNonParameterizedType(cls); | 1557 type = Type::NewNonParameterizedType(cls); |
| 1558 object_store->set_int32x4_type(type); | 1558 object_store->set_int32x4_type(type); |
| 1559 | 1559 |
| 1560 cls = Class::New<Float64x2>(); | 1560 cls = Class::New<Float64x2>(); |
| 1561 RegisterPrivateClass(cls, Symbols::Float64x2(), lib); | 1561 RegisterClass(cls, Symbols::Float64x2(), lib); |
| 1562 cls.set_num_type_arguments(0); | 1562 cls.set_num_type_arguments(0); |
| 1563 cls.set_num_own_type_arguments(0); | 1563 cls.set_num_own_type_arguments(0); |
| 1564 cls.set_is_prefinalized(); | 1564 cls.set_is_prefinalized(); |
| 1565 pending_classes.Add(cls); | 1565 pending_classes.Add(cls); |
| 1566 object_store->set_float64x2_class(cls); | 1566 object_store->set_float64x2_class(cls); |
| 1567 type = Type::NewNonParameterizedType(cls); | 1567 type = Type::NewNonParameterizedType(cls); |
| 1568 object_store->set_float64x2_type(type); | 1568 object_store->set_float64x2_type(type); |
| 1569 | 1569 |
| 1570 // Set the super type of class StackTrace to Object type so that the | 1570 // Set the super type of class StackTrace to Object type so that the |
| 1571 // 'toString' method is implemented. | 1571 // 'toString' method is implemented. |
| (...skipping 9996 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11568 MATH_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS2); | 11568 MATH_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS2); |
| 11569 | 11569 |
| 11570 all_libs.Clear(); | 11570 all_libs.Clear(); |
| 11571 all_libs.Add(&Library::ZoneHandle(Library::TypedDataLibrary())); | 11571 all_libs.Add(&Library::ZoneHandle(Library::TypedDataLibrary())); |
| 11572 TYPED_DATA_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS2); | 11572 TYPED_DATA_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS2); |
| 11573 | 11573 |
| 11574 #undef CHECK_FINGERPRINTS | 11574 #undef CHECK_FINGERPRINTS |
| 11575 #undef CHECK_FINGERPRINTS2 | 11575 #undef CHECK_FINGERPRINTS2 |
| 11576 | 11576 |
| 11577 | 11577 |
| 11578 #define CHECK_FACTORY_FINGERPRINTS(symbol, class_name, factory_name, cid, fp) \ | 11578 Class& cls = Class::Handle(); |
| 11579 func = GetFunction(all_libs, #class_name, #factory_name); \ | 11579 |
| 11580 #define CHECK_FACTORY_FINGERPRINTS(factory_symbol, cid, fp) \ |
| 11581 cls = Isolate::Current()->class_table()->At(cid); \ |
| 11582 func = cls.LookupFunctionAllowPrivate(Symbols::factory_symbol()); \ |
| 11580 if (func.IsNull()) { \ | 11583 if (func.IsNull()) { \ |
| 11581 has_errors = true; \ | 11584 has_errors = true; \ |
| 11582 OS::Print("Function not found %s.%s\n", #class_name, #factory_name); \ | 11585 OS::Print("Function not found %s.%s\n", cls.ToCString(), \ |
| 11586 Symbols::factory_symbol().ToCString()); \ |
| 11583 } else { \ | 11587 } else { \ |
| 11584 CHECK_FINGERPRINT2(func, symbol, cid, fp); \ | 11588 CHECK_FINGERPRINT2(func, factory_symbol, cid, fp); \ |
| 11585 } | 11589 } |
| 11586 | 11590 |
| 11587 all_libs.Add(&Library::ZoneHandle(Library::CoreLibrary())); | |
| 11588 RECOGNIZED_LIST_FACTORY_LIST(CHECK_FACTORY_FINGERPRINTS); | 11591 RECOGNIZED_LIST_FACTORY_LIST(CHECK_FACTORY_FINGERPRINTS); |
| 11589 | 11592 |
| 11590 #undef CHECK_FACTORY_FINGERPRINTS | 11593 #undef CHECK_FACTORY_FINGERPRINTS |
| 11591 | 11594 |
| 11592 if (has_errors) { | 11595 if (has_errors) { |
| 11593 FATAL("Fingerprint mismatch."); | 11596 FATAL("Fingerprint mismatch."); |
| 11594 } | 11597 } |
| 11595 } | 11598 } |
| 11596 #endif // defined(DART_NO_SNAPSHOT) && !defined(PRODUCT). | 11599 #endif // defined(DART_NO_SNAPSHOT) && !defined(PRODUCT). |
| 11597 | 11600 |
| (...skipping 11271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 22869 return UserTag::null(); | 22872 return UserTag::null(); |
| 22870 } | 22873 } |
| 22871 | 22874 |
| 22872 | 22875 |
| 22873 const char* UserTag::ToCString() const { | 22876 const char* UserTag::ToCString() const { |
| 22874 const String& tag_label = String::Handle(label()); | 22877 const String& tag_label = String::Handle(label()); |
| 22875 return tag_label.ToCString(); | 22878 return tag_label.ToCString(); |
| 22876 } | 22879 } |
| 22877 | 22880 |
| 22878 } // namespace dart | 22881 } // namespace dart |
| OLD | NEW |