| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 "vm/assembler.h" | 7 #include "vm/assembler.h" |
| 8 #include "vm/assert.h" | 8 #include "vm/assert.h" |
| 9 #include "vm/bigint_operations.h" | 9 #include "vm/bigint_operations.h" |
| 10 #include "vm/bootstrap.h" | 10 #include "vm/bootstrap.h" |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 #endif | 43 #endif |
| 44 #define RAW_NULL kHeapObjectTag | 44 #define RAW_NULL kHeapObjectTag |
| 45 RawObject* Object::null_ = reinterpret_cast<RawInstance*>(RAW_NULL); | 45 RawObject* Object::null_ = reinterpret_cast<RawInstance*>(RAW_NULL); |
| 46 RawInstance* Object::sentinel_ = reinterpret_cast<RawInstance*>(RAW_NULL); | 46 RawInstance* Object::sentinel_ = reinterpret_cast<RawInstance*>(RAW_NULL); |
| 47 RawInstance* Object::transition_sentinel_ = | 47 RawInstance* Object::transition_sentinel_ = |
| 48 reinterpret_cast<RawInstance*>(RAW_NULL); | 48 reinterpret_cast<RawInstance*>(RAW_NULL); |
| 49 RawClass* Object::class_class_ = reinterpret_cast<RawClass*>(RAW_NULL); | 49 RawClass* Object::class_class_ = reinterpret_cast<RawClass*>(RAW_NULL); |
| 50 RawClass* Object::null_class_ = reinterpret_cast<RawClass*>(RAW_NULL); | 50 RawClass* Object::null_class_ = reinterpret_cast<RawClass*>(RAW_NULL); |
| 51 RawClass* Object::var_class_ = reinterpret_cast<RawClass*>(RAW_NULL); | 51 RawClass* Object::var_class_ = reinterpret_cast<RawClass*>(RAW_NULL); |
| 52 RawClass* Object::void_class_ = reinterpret_cast<RawClass*>(RAW_NULL); | 52 RawClass* Object::void_class_ = reinterpret_cast<RawClass*>(RAW_NULL); |
| 53 RawClass* Object::unresolved_class_class_ = |
| 54 reinterpret_cast<RawClass*>(RAW_NULL); |
| 53 RawClass* Object::parameterized_type_class_ = | 55 RawClass* Object::parameterized_type_class_ = |
| 54 reinterpret_cast<RawClass*>(RAW_NULL); | 56 reinterpret_cast<RawClass*>(RAW_NULL); |
| 55 RawClass* Object::type_parameter_class_ = reinterpret_cast<RawClass*>(RAW_NULL); | 57 RawClass* Object::type_parameter_class_ = reinterpret_cast<RawClass*>(RAW_NULL); |
| 56 RawClass* Object::instantiated_type_class_ = | 58 RawClass* Object::instantiated_type_class_ = |
| 57 reinterpret_cast<RawClass*>(RAW_NULL); | 59 reinterpret_cast<RawClass*>(RAW_NULL); |
| 58 RawClass* Object::type_arguments_class_ = reinterpret_cast<RawClass*>(RAW_NULL); | 60 RawClass* Object::type_arguments_class_ = reinterpret_cast<RawClass*>(RAW_NULL); |
| 59 RawClass* Object::type_array_class_ = reinterpret_cast<RawClass*>(RAW_NULL); | 61 RawClass* Object::type_array_class_ = reinterpret_cast<RawClass*>(RAW_NULL); |
| 60 RawClass* Object::instantiated_type_arguments_class_ = | 62 RawClass* Object::instantiated_type_arguments_class_ = |
| 61 reinterpret_cast<RawClass*>(RAW_NULL); | 63 reinterpret_cast<RawClass*>(RAW_NULL); |
| 62 RawClass* Object::function_class_ = reinterpret_cast<RawClass*>(RAW_NULL); | 64 RawClass* Object::function_class_ = reinterpret_cast<RawClass*>(RAW_NULL); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 77 int Object::GetSingletonClassIndex(const RawClass* raw_class) { | 79 int Object::GetSingletonClassIndex(const RawClass* raw_class) { |
| 78 ASSERT(raw_class->IsHeapObject()); | 80 ASSERT(raw_class->IsHeapObject()); |
| 79 if (raw_class == class_class()) { | 81 if (raw_class == class_class()) { |
| 80 return kClassClass; | 82 return kClassClass; |
| 81 } else if (raw_class == null_class()) { | 83 } else if (raw_class == null_class()) { |
| 82 return kNullClass; | 84 return kNullClass; |
| 83 } else if (raw_class == var_class()) { | 85 } else if (raw_class == var_class()) { |
| 84 return kVarClass; | 86 return kVarClass; |
| 85 } else if (raw_class == void_class()) { | 87 } else if (raw_class == void_class()) { |
| 86 return kVoidClass; | 88 return kVoidClass; |
| 89 } else if (raw_class == unresolved_class_class()) { |
| 90 return kUnresolvedClassClass; |
| 87 } else if (raw_class == parameterized_type_class()) { | 91 } else if (raw_class == parameterized_type_class()) { |
| 88 return kParameterizedTypeClass; | 92 return kParameterizedTypeClass; |
| 89 } else if (raw_class == type_parameter_class()) { | 93 } else if (raw_class == type_parameter_class()) { |
| 90 return kTypeParameterClass; | 94 return kTypeParameterClass; |
| 91 } else if (raw_class == instantiated_type_class()) { | 95 } else if (raw_class == instantiated_type_class()) { |
| 92 return kInstantiatedTypeClass; | 96 return kInstantiatedTypeClass; |
| 93 } else if (raw_class == type_arguments_class()) { | 97 } else if (raw_class == type_arguments_class()) { |
| 94 return kTypeArgumentsClass; | 98 return kTypeArgumentsClass; |
| 95 } else if (raw_class == type_array_class()) { | 99 } else if (raw_class == type_array_class()) { |
| 96 return kTypeArrayClass; | 100 return kTypeArrayClass; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 124 return kInvalidIndex; | 128 return kInvalidIndex; |
| 125 } | 129 } |
| 126 | 130 |
| 127 | 131 |
| 128 RawClass* Object::GetSingletonClass(int index) { | 132 RawClass* Object::GetSingletonClass(int index) { |
| 129 switch (index) { | 133 switch (index) { |
| 130 case kClassClass: return class_class(); | 134 case kClassClass: return class_class(); |
| 131 case kNullClass: return null_class(); | 135 case kNullClass: return null_class(); |
| 132 case kVarClass: return var_class(); | 136 case kVarClass: return var_class(); |
| 133 case kVoidClass: return void_class(); | 137 case kVoidClass: return void_class(); |
| 138 case kUnresolvedClassClass: return unresolved_class_class(); |
| 134 case kParameterizedTypeClass: return parameterized_type_class(); | 139 case kParameterizedTypeClass: return parameterized_type_class(); |
| 135 case kTypeParameterClass: return type_parameter_class(); | 140 case kTypeParameterClass: return type_parameter_class(); |
| 136 case kInstantiatedTypeClass: return instantiated_type_class(); | 141 case kInstantiatedTypeClass: return instantiated_type_class(); |
| 137 case kTypeArgumentsClass: return type_arguments_class(); | 142 case kTypeArgumentsClass: return type_arguments_class(); |
| 138 case kTypeArrayClass: return type_array_class(); | 143 case kTypeArrayClass: return type_array_class(); |
| 139 case kInstantiatedTypeArgumentsClass: | 144 case kInstantiatedTypeArgumentsClass: |
| 140 return instantiated_type_arguments_class(); | 145 return instantiated_type_arguments_class(); |
| 141 case kFunctionClass: return function_class(); | 146 case kFunctionClass: return function_class(); |
| 142 case kFieldClass: return field_class(); | 147 case kFieldClass: return field_class(); |
| 143 case kTokenStreamClass: return token_stream_class(); | 148 case kTokenStreamClass: return token_stream_class(); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 156 return reinterpret_cast<RawClass*>(kHeapObjectTag); // return RAW_NULL. | 161 return reinterpret_cast<RawClass*>(kHeapObjectTag); // return RAW_NULL. |
| 157 } | 162 } |
| 158 | 163 |
| 159 | 164 |
| 160 const char* Object::GetSingletonClassName(int index) { | 165 const char* Object::GetSingletonClassName(int index) { |
| 161 switch (index) { | 166 switch (index) { |
| 162 case kClassClass: return "Class"; | 167 case kClassClass: return "Class"; |
| 163 case kNullClass: return "Null"; | 168 case kNullClass: return "Null"; |
| 164 case kVarClass: return "var"; | 169 case kVarClass: return "var"; |
| 165 case kVoidClass: return "void"; | 170 case kVoidClass: return "void"; |
| 171 case kUnresolvedClassClass: return "UnresolvedClass"; |
| 166 case kParameterizedTypeClass: return "ParameterizedType"; | 172 case kParameterizedTypeClass: return "ParameterizedType"; |
| 167 case kTypeParameterClass: return "TypeParameter"; | 173 case kTypeParameterClass: return "TypeParameter"; |
| 168 case kInstantiatedTypeClass: return "InstantiatedType"; | 174 case kInstantiatedTypeClass: return "InstantiatedType"; |
| 169 case kTypeArgumentsClass: return "TypeArguments"; | 175 case kTypeArgumentsClass: return "TypeArguments"; |
| 170 case kTypeArrayClass: return "TypeArray"; | 176 case kTypeArrayClass: return "TypeArray"; |
| 171 case kInstantiatedTypeArgumentsClass: return "InstantiatedTypeArguments"; | 177 case kInstantiatedTypeArgumentsClass: return "InstantiatedTypeArguments"; |
| 172 case kFunctionClass: return "Function"; | 178 case kFunctionClass: return "Function"; |
| 173 case kFieldClass: return "Field"; | 179 case kFieldClass: return "Field"; |
| 174 case kTokenStreamClass: return "TokenStream"; | 180 case kTokenStreamClass: return "TokenStream"; |
| 175 case kScriptClass: return "Script"; | 181 case kScriptClass: return "Script"; |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 sentinel ^= Object::Allocate(cls, Instance::InstanceSize(), Heap::kOld); | 247 sentinel ^= Object::Allocate(cls, Instance::InstanceSize(), Heap::kOld); |
| 242 sentinel_ = sentinel.raw(); | 248 sentinel_ = sentinel.raw(); |
| 243 | 249 |
| 244 Instance& transition_sentinel = Instance::Handle(); | 250 Instance& transition_sentinel = Instance::Handle(); |
| 245 transition_sentinel ^= | 251 transition_sentinel ^= |
| 246 Object::Allocate(cls, Instance::InstanceSize(), Heap::kOld); | 252 Object::Allocate(cls, Instance::InstanceSize(), Heap::kOld); |
| 247 transition_sentinel_ = transition_sentinel.raw(); | 253 transition_sentinel_ = transition_sentinel.raw(); |
| 248 } | 254 } |
| 249 | 255 |
| 250 // Allocate the remaining VM internal classes. | 256 // Allocate the remaining VM internal classes. |
| 257 cls = Class::New<UnresolvedClass>(); |
| 258 unresolved_class_class_ = cls.raw(); |
| 259 |
| 251 cls = Class::New<Instance>(); | 260 cls = Class::New<Instance>(); |
| 252 var_class_ = cls.raw(); | 261 var_class_ = cls.raw(); |
| 253 | 262 |
| 254 cls = Class::New<Instance>(); | 263 cls = Class::New<Instance>(); |
| 255 void_class_ = cls.raw(); | 264 void_class_ = cls.raw(); |
| 256 | 265 |
| 257 cls = Class::New<ParameterizedType>(); | 266 cls = Class::New<ParameterizedType>(); |
| 258 parameterized_type_class_ = cls.raw(); | 267 parameterized_type_class_ = cls.raw(); |
| 259 | 268 |
| 260 cls = Class::New<TypeParameter>(); | 269 cls = Class::New<TypeParameter>(); |
| (...skipping 1206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1467 const char* library_name = lib.IsNull() ? "" : lib.ToCString(); | 1476 const char* library_name = lib.IsNull() ? "" : lib.ToCString(); |
| 1468 const char* class_name = String::Handle(Name()).ToCString(); | 1477 const char* class_name = String::Handle(Name()).ToCString(); |
| 1469 intptr_t len = OS::SNPrint(NULL, 0, format, library_name, class_name) + 1; | 1478 intptr_t len = OS::SNPrint(NULL, 0, format, library_name, class_name) + 1; |
| 1470 char* chars = reinterpret_cast<char*>( | 1479 char* chars = reinterpret_cast<char*>( |
| 1471 Isolate::Current()->current_zone()->Allocate(len)); | 1480 Isolate::Current()->current_zone()->Allocate(len)); |
| 1472 OS::SNPrint(chars, len, format, library_name, class_name); | 1481 OS::SNPrint(chars, len, format, library_name, class_name); |
| 1473 return chars; | 1482 return chars; |
| 1474 } | 1483 } |
| 1475 | 1484 |
| 1476 | 1485 |
| 1486 RawUnresolvedClass* UnresolvedClass::New(intptr_t token_index, |
| 1487 const String& qualifier, |
| 1488 const String& ident) { |
| 1489 const UnresolvedClass& type = UnresolvedClass::Handle(UnresolvedClass::New()); |
| 1490 type.set_token_index(token_index); |
| 1491 type.set_qualifier(qualifier); |
| 1492 type.set_ident(ident); |
| 1493 return type.raw(); |
| 1494 } |
| 1495 |
| 1496 |
| 1497 RawUnresolvedClass* UnresolvedClass::New() { |
| 1498 const Class& unresolved_class_class = |
| 1499 Class::Handle(Object::unresolved_class_class()); |
| 1500 RawObject* raw = Object::Allocate(unresolved_class_class, |
| 1501 UnresolvedClass::InstanceSize(), |
| 1502 Heap::kNew); |
| 1503 return reinterpret_cast<RawUnresolvedClass*>(raw); |
| 1504 } |
| 1505 |
| 1506 |
| 1507 void UnresolvedClass::set_token_index(intptr_t token_index) const { |
| 1508 raw_ptr()->token_index_ = token_index; |
| 1509 } |
| 1510 |
| 1511 |
| 1512 void UnresolvedClass::set_ident(const String& ident) const { |
| 1513 StorePointer(&raw_ptr()->ident_, ident.raw()); |
| 1514 } |
| 1515 |
| 1516 |
| 1517 void UnresolvedClass::set_qualifier(const String& qualifier) const { |
| 1518 StorePointer(&raw_ptr()->qualifier_, qualifier.raw()); |
| 1519 } |
| 1520 |
| 1521 |
| 1522 RawString* UnresolvedClass::Name() const { |
| 1523 if (qualifier() != String::null()) { |
| 1524 String& name = String::Handle(); |
| 1525 name = qualifier(); |
| 1526 String& str = String::Handle(); |
| 1527 str = String::New("."); |
| 1528 name = String::Concat(name, str); |
| 1529 str = ident(); |
| 1530 name = String::Concat(name, str); |
| 1531 return name.raw(); |
| 1532 } else { |
| 1533 return ident(); |
| 1534 } |
| 1535 } |
| 1536 |
| 1537 |
| 1538 const char* UnresolvedClass::ToCString() const { |
| 1539 return "UnresolvedClass"; |
| 1540 } |
| 1541 |
| 1542 |
| 1477 bool Type::IsResolved() const { | 1543 bool Type::IsResolved() const { |
| 1478 // Type is an abstract class. | 1544 // Type is an abstract class. |
| 1479 UNREACHABLE(); | 1545 UNREACHABLE(); |
| 1480 return false; | 1546 return false; |
| 1481 } | 1547 } |
| 1482 | 1548 |
| 1483 | 1549 |
| 1484 bool Type::HasResolvedTypeClass() const { | 1550 bool Type::HasResolvedTypeClass() const { |
| 1485 // Type is an abstract class. | 1551 // Type is an abstract class. |
| 1486 UNREACHABLE(); | 1552 UNREACHABLE(); |
| 1487 return false; | 1553 return false; |
| 1488 } | 1554 } |
| 1489 | 1555 |
| 1490 | 1556 |
| 1491 RawClass* Type::type_class() const { | 1557 RawClass* Type::type_class() const { |
| 1492 // Type is an abstract class. | 1558 // Type is an abstract class. |
| 1493 UNREACHABLE(); | 1559 UNREACHABLE(); |
| 1494 return Class::null(); | 1560 return Class::null(); |
| 1495 } | 1561 } |
| 1496 | 1562 |
| 1497 | 1563 |
| 1498 RawString* Type::unresolved_type_class() const { | 1564 RawUnresolvedClass* Type::unresolved_class() const { |
| 1499 // Type is an abstract class. | 1565 // Type is an abstract class. |
| 1500 UNREACHABLE(); | 1566 UNREACHABLE(); |
| 1501 return String::null(); | 1567 return UnresolvedClass::null(); |
| 1502 } | 1568 } |
| 1503 | 1569 |
| 1504 | 1570 |
| 1505 RawTypeArguments* Type::arguments() const { | 1571 RawTypeArguments* Type::arguments() const { |
| 1506 // Type is an abstract class. | 1572 // Type is an abstract class. |
| 1507 UNREACHABLE(); | 1573 UNREACHABLE(); |
| 1508 return TypeArguments::null(); | 1574 return TypeArguments::null(); |
| 1509 } | 1575 } |
| 1510 | 1576 |
| 1511 | 1577 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1543 class_name = cls.Name(); | 1609 class_name = cls.Name(); |
| 1544 num_type_params = cls.NumTypeParameters(); // Do not print the full vector. | 1610 num_type_params = cls.NumTypeParameters(); // Do not print the full vector. |
| 1545 if (num_type_params > num_args) { | 1611 if (num_type_params > num_args) { |
| 1546 ASSERT(!IsFinalized()); | 1612 ASSERT(!IsFinalized()); |
| 1547 // We fill up with "var". | 1613 // We fill up with "var". |
| 1548 first_type_param_index = 0; | 1614 first_type_param_index = 0; |
| 1549 } else { | 1615 } else { |
| 1550 first_type_param_index = num_args - num_type_params; | 1616 first_type_param_index = num_args - num_type_params; |
| 1551 } | 1617 } |
| 1552 } else { | 1618 } else { |
| 1553 class_name = unresolved_type_class(); | 1619 const UnresolvedClass& type = UnresolvedClass::Handle(unresolved_class()); |
| 1620 class_name = type.Name(); |
| 1554 num_type_params = num_args; | 1621 num_type_params = num_args; |
| 1555 first_type_param_index = 0; | 1622 first_type_param_index = 0; |
| 1556 } | 1623 } |
| 1557 String& type_name = String::Handle(); | 1624 String& type_name = String::Handle(); |
| 1558 if (num_type_params == 0) { | 1625 if (num_type_params == 0) { |
| 1559 type_name = class_name.raw(); | 1626 type_name = class_name.raw(); |
| 1560 } else { | 1627 } else { |
| 1561 const intptr_t num_strings = 2*num_type_params + 2; // "C""<""T"", ""T"">". | 1628 const intptr_t num_strings = 2*num_type_params + 2; // "C""<""T"", ""T"">". |
| 1562 const Array& strings = Array::Handle(Array::New(num_strings)); | 1629 const Array& strings = Array::Handle(Array::New(num_strings)); |
| 1563 intptr_t s = 0; | 1630 intptr_t s = 0; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1592 // Type is an abstract class. | 1659 // Type is an abstract class. |
| 1593 UNREACHABLE(); | 1660 UNREACHABLE(); |
| 1594 return -1; | 1661 return -1; |
| 1595 } | 1662 } |
| 1596 | 1663 |
| 1597 | 1664 |
| 1598 RawString* Type::ClassName() const { | 1665 RawString* Type::ClassName() const { |
| 1599 if (HasResolvedTypeClass()) { | 1666 if (HasResolvedTypeClass()) { |
| 1600 return Class::Handle(type_class()).Name(); | 1667 return Class::Handle(type_class()).Name(); |
| 1601 } else { | 1668 } else { |
| 1602 return unresolved_type_class(); | 1669 return UnresolvedClass::Handle(unresolved_class()).Name(); |
| 1603 } | 1670 } |
| 1604 } | 1671 } |
| 1605 | 1672 |
| 1606 | 1673 |
| 1607 bool Type::IsBoolInterface() const { | 1674 bool Type::IsBoolInterface() const { |
| 1608 return HasResolvedTypeClass() && | 1675 return HasResolvedTypeClass() && |
| 1609 (type_class() == Type::Handle(Type::BoolInterface()).type_class()); | 1676 (type_class() == Type::Handle(Type::BoolInterface()).type_class()); |
| 1610 } | 1677 } |
| 1611 | 1678 |
| 1612 | 1679 |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1799 | 1866 |
| 1800 | 1867 |
| 1801 RawClass* ParameterizedType::type_class() const { | 1868 RawClass* ParameterizedType::type_class() const { |
| 1802 ASSERT(HasResolvedTypeClass()); | 1869 ASSERT(HasResolvedTypeClass()); |
| 1803 Class& type_class = Class::Handle(); | 1870 Class& type_class = Class::Handle(); |
| 1804 type_class ^= raw_ptr()->type_class_; | 1871 type_class ^= raw_ptr()->type_class_; |
| 1805 return type_class.raw(); | 1872 return type_class.raw(); |
| 1806 } | 1873 } |
| 1807 | 1874 |
| 1808 | 1875 |
| 1809 RawString* ParameterizedType::unresolved_type_class() const { | 1876 RawUnresolvedClass* ParameterizedType::unresolved_class() const { |
| 1810 ASSERT(!HasResolvedTypeClass()); | 1877 ASSERT(!HasResolvedTypeClass()); |
| 1811 String& unresolved_type_class = String::Handle(); | 1878 UnresolvedClass& unresolved_class = UnresolvedClass::Handle(); |
| 1812 unresolved_type_class ^= raw_ptr()->type_class_; | 1879 unresolved_class ^= raw_ptr()->type_class_; |
| 1813 return unresolved_type_class.raw(); | 1880 ASSERT(!unresolved_class.IsNull()); |
| 1881 return unresolved_class.raw(); |
| 1814 } | 1882 } |
| 1815 | 1883 |
| 1816 | 1884 |
| 1817 RawTypeArguments* ParameterizedType::arguments() const { | 1885 RawTypeArguments* ParameterizedType::arguments() const { |
| 1818 return raw_ptr()->arguments_; | 1886 return raw_ptr()->arguments_; |
| 1819 } | 1887 } |
| 1820 | 1888 |
| 1821 | 1889 |
| 1822 bool ParameterizedType::IsInstantiated() const { | 1890 bool ParameterizedType::IsInstantiated() const { |
| 1823 const TypeArguments& args = TypeArguments::Handle(arguments()); | 1891 const TypeArguments& args = TypeArguments::Handle(arguments()); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1837 offset); | 1905 offset); |
| 1838 } | 1906 } |
| 1839 ParameterizedType& instantiated_type = ParameterizedType::Handle( | 1907 ParameterizedType& instantiated_type = ParameterizedType::Handle( |
| 1840 ParameterizedType::New(Object::Handle(type_class()), type_arguments)); | 1908 ParameterizedType::New(Object::Handle(type_class()), type_arguments)); |
| 1841 instantiated_type.set_is_finalized(); | 1909 instantiated_type.set_is_finalized(); |
| 1842 return instantiated_type.raw(); | 1910 return instantiated_type.raw(); |
| 1843 } | 1911 } |
| 1844 | 1912 |
| 1845 | 1913 |
| 1846 void ParameterizedType::set_type_class(const Object& value) const { | 1914 void ParameterizedType::set_type_class(const Object& value) const { |
| 1847 ASSERT(!value.IsNull() && (value.IsClass() || value.IsString())); | 1915 ASSERT(!value.IsNull() && (value.IsClass() || value.IsUnresolvedClass())); |
| 1848 StorePointer(&raw_ptr()->type_class_, value.raw()); | 1916 StorePointer(&raw_ptr()->type_class_, value.raw()); |
| 1849 } | 1917 } |
| 1850 | 1918 |
| 1851 | 1919 |
| 1852 void ParameterizedType::set_arguments(const TypeArguments& value) const { | 1920 void ParameterizedType::set_arguments(const TypeArguments& value) const { |
| 1853 StorePointer(&raw_ptr()->arguments_, value.raw()); | 1921 StorePointer(&raw_ptr()->arguments_, value.raw()); |
| 1854 } | 1922 } |
| 1855 | 1923 |
| 1856 | 1924 |
| 1857 RawParameterizedType* ParameterizedType::New() { | 1925 RawParameterizedType* ParameterizedType::New() { |
| (...skipping 4427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6285 const String& str = String::Handle(pattern()); | 6353 const String& str = String::Handle(pattern()); |
| 6286 const char* format = "JSRegExp: pattern=%s flags=%s"; | 6354 const char* format = "JSRegExp: pattern=%s flags=%s"; |
| 6287 intptr_t len = OS::SNPrint(NULL, 0, format, str.ToCString(), Flags()); | 6355 intptr_t len = OS::SNPrint(NULL, 0, format, str.ToCString(), Flags()); |
| 6288 char* chars = reinterpret_cast<char*>( | 6356 char* chars = reinterpret_cast<char*>( |
| 6289 Isolate::Current()->current_zone()->Allocate(len + 1)); | 6357 Isolate::Current()->current_zone()->Allocate(len + 1)); |
| 6290 OS::SNPrint(chars, (len + 1), format, str.ToCString(), Flags()); | 6358 OS::SNPrint(chars, (len + 1), format, str.ToCString(), Flags()); |
| 6291 return chars; | 6359 return chars; |
| 6292 } | 6360 } |
| 6293 | 6361 |
| 6294 } // namespace dart | 6362 } // namespace dart |
| OLD | NEW |