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 RegisterClass(cls, Symbols::clazz##List(), lib); | 1513 RegisterPrivateClass(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 RegisterClass(cls, Symbols::ByteBuffer(), lib); | 1534 RegisterPrivateClass(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, Int32x4, and Float64x2 in the object store. |
1540 cls = Class::New<Float32x4>(); | 1540 cls = Class::New<Float32x4>(); |
| 1541 RegisterPrivateClass(cls, Symbols::_Float32x4(), lib); |
| 1542 pending_classes.Add(cls); |
| 1543 object_store->set_float32x4_class(cls); |
| 1544 |
| 1545 cls = Class::New<Instance>(kIllegalCid); |
1541 RegisterClass(cls, Symbols::Float32x4(), lib); | 1546 RegisterClass(cls, Symbols::Float32x4(), lib); |
1542 cls.set_num_type_arguments(0); | 1547 cls.set_num_type_arguments(0); |
1543 cls.set_num_own_type_arguments(0); | 1548 cls.set_num_own_type_arguments(0); |
1544 cls.set_is_prefinalized(); | 1549 cls.set_is_prefinalized(); |
1545 pending_classes.Add(cls); | |
1546 object_store->set_float32x4_class(cls); | |
1547 type = Type::NewNonParameterizedType(cls); | 1550 type = Type::NewNonParameterizedType(cls); |
1548 object_store->set_float32x4_type(type); | 1551 object_store->set_float32x4_type(type); |
1549 | 1552 |
1550 cls = Class::New<Int32x4>(); | 1553 cls = Class::New<Int32x4>(); |
| 1554 RegisterPrivateClass(cls, Symbols::_Int32x4(), lib); |
| 1555 pending_classes.Add(cls); |
| 1556 object_store->set_int32x4_class(cls); |
| 1557 |
| 1558 cls = Class::New<Instance>(kIllegalCid); |
1551 RegisterClass(cls, Symbols::Int32x4(), lib); | 1559 RegisterClass(cls, Symbols::Int32x4(), lib); |
1552 cls.set_num_type_arguments(0); | 1560 cls.set_num_type_arguments(0); |
1553 cls.set_num_own_type_arguments(0); | 1561 cls.set_num_own_type_arguments(0); |
1554 cls.set_is_prefinalized(); | 1562 cls.set_is_prefinalized(); |
1555 pending_classes.Add(cls); | |
1556 object_store->set_int32x4_class(cls); | |
1557 type = Type::NewNonParameterizedType(cls); | 1563 type = Type::NewNonParameterizedType(cls); |
1558 object_store->set_int32x4_type(type); | 1564 object_store->set_int32x4_type(type); |
1559 | 1565 |
1560 cls = Class::New<Float64x2>(); | 1566 cls = Class::New<Float64x2>(); |
| 1567 RegisterPrivateClass(cls, Symbols::_Float64x2(), lib); |
| 1568 pending_classes.Add(cls); |
| 1569 object_store->set_float64x2_class(cls); |
| 1570 |
| 1571 cls = Class::New<Instance>(kIllegalCid); |
1561 RegisterClass(cls, Symbols::Float64x2(), lib); | 1572 RegisterClass(cls, Symbols::Float64x2(), lib); |
1562 cls.set_num_type_arguments(0); | 1573 cls.set_num_type_arguments(0); |
1563 cls.set_num_own_type_arguments(0); | 1574 cls.set_num_own_type_arguments(0); |
1564 cls.set_is_prefinalized(); | 1575 cls.set_is_prefinalized(); |
1565 pending_classes.Add(cls); | |
1566 object_store->set_float64x2_class(cls); | |
1567 type = Type::NewNonParameterizedType(cls); | 1576 type = Type::NewNonParameterizedType(cls); |
1568 object_store->set_float64x2_type(type); | 1577 object_store->set_float64x2_type(type); |
1569 | 1578 |
1570 // Set the super type of class StackTrace to Object type so that the | 1579 // Set the super type of class StackTrace to Object type so that the |
1571 // 'toString' method is implemented. | 1580 // 'toString' method is implemented. |
1572 type = object_store->object_type(); | 1581 type = object_store->object_type(); |
1573 stacktrace_cls.set_super_type(type); | 1582 stacktrace_cls.set_super_type(type); |
1574 | 1583 |
1575 // Abstract class that represents the Dart class Function. | 1584 // Abstract class that represents the Dart class Function. |
1576 cls = Class::New<Instance>(kIllegalCid); | 1585 cls = Class::New<Instance>(kIllegalCid); |
(...skipping 9991 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11568 MATH_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS2); | 11577 MATH_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS2); |
11569 | 11578 |
11570 all_libs.Clear(); | 11579 all_libs.Clear(); |
11571 all_libs.Add(&Library::ZoneHandle(Library::TypedDataLibrary())); | 11580 all_libs.Add(&Library::ZoneHandle(Library::TypedDataLibrary())); |
11572 TYPED_DATA_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS2); | 11581 TYPED_DATA_LIB_INTRINSIC_LIST(CHECK_FINGERPRINTS2); |
11573 | 11582 |
11574 #undef CHECK_FINGERPRINTS | 11583 #undef CHECK_FINGERPRINTS |
11575 #undef CHECK_FINGERPRINTS2 | 11584 #undef CHECK_FINGERPRINTS2 |
11576 | 11585 |
11577 | 11586 |
11578 Class& cls = Class::Handle(); | 11587 #define CHECK_FACTORY_FINGERPRINTS(symbol, class_name, factory_name, cid, fp) \ |
11579 | 11588 func = GetFunction(all_libs, #class_name, #factory_name); \ |
11580 #define CHECK_FACTORY_FINGERPRINTS(factory_symbol, cid, fp) \ | |
11581 cls = Isolate::Current()->class_table()->At(cid); \ | |
11582 func = cls.LookupFunctionAllowPrivate(Symbols::factory_symbol()); \ | |
11583 if (func.IsNull()) { \ | 11589 if (func.IsNull()) { \ |
11584 has_errors = true; \ | 11590 has_errors = true; \ |
11585 OS::Print("Function not found %s.%s\n", cls.ToCString(), \ | 11591 OS::Print("Function not found %s.%s\n", #class_name, #factory_name); \ |
11586 Symbols::factory_symbol().ToCString()); \ | |
11587 } else { \ | 11592 } else { \ |
11588 CHECK_FINGERPRINT2(func, factory_symbol, cid, fp); \ | 11593 CHECK_FINGERPRINT2(func, symbol, cid, fp); \ |
11589 } | 11594 } |
11590 | 11595 |
| 11596 all_libs.Add(&Library::ZoneHandle(Library::CoreLibrary())); |
11591 RECOGNIZED_LIST_FACTORY_LIST(CHECK_FACTORY_FINGERPRINTS); | 11597 RECOGNIZED_LIST_FACTORY_LIST(CHECK_FACTORY_FINGERPRINTS); |
11592 | 11598 |
11593 #undef CHECK_FACTORY_FINGERPRINTS | 11599 #undef CHECK_FACTORY_FINGERPRINTS |
11594 | 11600 |
11595 if (has_errors) { | 11601 if (has_errors) { |
11596 FATAL("Fingerprint mismatch."); | 11602 FATAL("Fingerprint mismatch."); |
11597 } | 11603 } |
11598 } | 11604 } |
11599 #endif // defined(DART_NO_SNAPSHOT) && !defined(PRODUCT). | 11605 #endif // defined(DART_NO_SNAPSHOT) && !defined(PRODUCT). |
11600 | 11606 |
(...skipping 11271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
22872 return UserTag::null(); | 22878 return UserTag::null(); |
22873 } | 22879 } |
22874 | 22880 |
22875 | 22881 |
22876 const char* UserTag::ToCString() const { | 22882 const char* UserTag::ToCString() const { |
22877 const String& tag_label = String::Handle(label()); | 22883 const String& tag_label = String::Handle(label()); |
22878 return tag_label.ToCString(); | 22884 return tag_label.ToCString(); |
22879 } | 22885 } |
22880 | 22886 |
22881 } // namespace dart | 22887 } // namespace dart |
OLD | NEW |