| 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/cpu.h" | 10 #include "vm/cpu.h" | 
| (...skipping 1158 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1169   cls = object_store->array_class();  // Was allocated above. | 1169   cls = object_store->array_class();  // Was allocated above. | 
| 1170   RegisterPrivateClass(cls, Symbols::_List(), core_lib); | 1170   RegisterPrivateClass(cls, Symbols::_List(), core_lib); | 
| 1171   pending_classes.Add(cls); | 1171   pending_classes.Add(cls); | 
| 1172   // We cannot use NewNonParameterizedType(cls), because Array is parameterized. | 1172   // We cannot use NewNonParameterizedType(cls), because Array is parameterized. | 
| 1173   // Warning: class _List has not been patched yet. Its declared number of type | 1173   // Warning: class _List has not been patched yet. Its declared number of type | 
| 1174   // parameters is still 0. It will become 1 after patching. The array type | 1174   // parameters is still 0. It will become 1 after patching. The array type | 
| 1175   // allocated below represents the raw type _List and not _List<E> as we | 1175   // allocated below represents the raw type _List and not _List<E> as we | 
| 1176   // could expect. Use with caution. | 1176   // could expect. Use with caution. | 
| 1177   type ^= Type::New(Object::Handle(zone, cls.raw()), | 1177   type ^= Type::New(Object::Handle(zone, cls.raw()), | 
| 1178                     TypeArguments::Handle(zone), | 1178                     TypeArguments::Handle(zone), | 
| 1179                     Scanner::kNoSourcePos); | 1179                     Token::kNoSourcePos); | 
| 1180   type.SetIsFinalized(); | 1180   type.SetIsFinalized(); | 
| 1181   type ^= type.Canonicalize(); | 1181   type ^= type.Canonicalize(); | 
| 1182   object_store->set_array_type(type); | 1182   object_store->set_array_type(type); | 
| 1183 | 1183 | 
| 1184   cls = object_store->growable_object_array_class();  // Was allocated above. | 1184   cls = object_store->growable_object_array_class();  // Was allocated above. | 
| 1185   RegisterPrivateClass(cls, Symbols::_GrowableList(), core_lib); | 1185   RegisterPrivateClass(cls, Symbols::_GrowableList(), core_lib); | 
| 1186   pending_classes.Add(cls); | 1186   pending_classes.Add(cls); | 
| 1187 | 1187 | 
| 1188   cls = Class::New<Array>(kImmutableArrayCid); | 1188   cls = Class::New<Array>(kImmutableArrayCid); | 
| 1189   object_store->set_immutable_array_class(cls); | 1189   object_store->set_immutable_array_class(cls); | 
| (...skipping 790 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1980       TypeArguments::Handle(zone, type_parameters()); | 1980       TypeArguments::Handle(zone, type_parameters()); | 
| 1981   // Return the still unfinalized signature type. | 1981   // Return the still unfinalized signature type. | 
| 1982   return Type::New(*this, signature_type_arguments, token_pos()); | 1982   return Type::New(*this, signature_type_arguments, token_pos()); | 
| 1983 } | 1983 } | 
| 1984 | 1984 | 
| 1985 | 1985 | 
| 1986 RawAbstractType* Class::RareType() const { | 1986 RawAbstractType* Class::RareType() const { | 
| 1987   const Type& type = Type::Handle(Type::New( | 1987   const Type& type = Type::Handle(Type::New( | 
| 1988       *this, | 1988       *this, | 
| 1989       Object::null_type_arguments(), | 1989       Object::null_type_arguments(), | 
| 1990       Scanner::kNoSourcePos)); | 1990       Token::kNoSourcePos)); | 
| 1991   return ClassFinalizer::FinalizeType(*this, | 1991   return ClassFinalizer::FinalizeType(*this, | 
| 1992                                       type, | 1992                                       type, | 
| 1993                                       ClassFinalizer::kCanonicalize); | 1993                                       ClassFinalizer::kCanonicalize); | 
| 1994 } | 1994 } | 
| 1995 | 1995 | 
| 1996 | 1996 | 
| 1997 RawAbstractType* Class::DeclarationType() const { | 1997 RawAbstractType* Class::DeclarationType() const { | 
| 1998   const TypeArguments& args = TypeArguments::Handle(type_parameters()); | 1998   const TypeArguments& args = TypeArguments::Handle(type_parameters()); | 
| 1999   const Type& type = Type::Handle(Type::New( | 1999   const Type& type = Type::Handle(Type::New( | 
| 2000       *this, | 2000       *this, | 
| 2001       args, | 2001       args, | 
| 2002       Scanner::kNoSourcePos)); | 2002       Token::kNoSourcePos)); | 
| 2003   return ClassFinalizer::FinalizeType(*this, | 2003   return ClassFinalizer::FinalizeType(*this, | 
| 2004                                       type, | 2004                                       type, | 
| 2005                                       ClassFinalizer::kCanonicalize); | 2005                                       ClassFinalizer::kCanonicalize); | 
| 2006 } | 2006 } | 
| 2007 | 2007 | 
| 2008 | 2008 | 
| 2009 template <class FakeObject> | 2009 template <class FakeObject> | 
| 2010 RawClass* Class::New() { | 2010 RawClass* Class::New() { | 
| 2011   ASSERT(Object::class_class() != Class::null()); | 2011   ASSERT(Object::class_class() != Class::null()); | 
| 2012   Class& result = Class::Handle(); | 2012   Class& result = Class::Handle(); | 
| (...skipping 17 matching lines...) Expand all  Loading... | 
| 2030     result.set_is_finalized(); | 2030     result.set_is_finalized(); | 
| 2031   } else { | 2031   } else { | 
| 2032     // VM backed classes are almost ready: run checks and resolve class | 2032     // VM backed classes are almost ready: run checks and resolve class | 
| 2033     // references, but do not recompute size. | 2033     // references, but do not recompute size. | 
| 2034     result.set_is_prefinalized(); | 2034     result.set_is_prefinalized(); | 
| 2035   } | 2035   } | 
| 2036   result.set_type_arguments_field_offset_in_words(kNoTypeArguments); | 2036   result.set_type_arguments_field_offset_in_words(kNoTypeArguments); | 
| 2037   result.set_num_type_arguments(0); | 2037   result.set_num_type_arguments(0); | 
| 2038   result.set_num_own_type_arguments(0); | 2038   result.set_num_own_type_arguments(0); | 
| 2039   result.set_num_native_fields(0); | 2039   result.set_num_native_fields(0); | 
| 2040   result.set_token_pos(Scanner::kNoSourcePos); | 2040   result.set_token_pos(Token::kNoSourcePos); | 
| 2041   result.InitEmptyFields(); | 2041   result.InitEmptyFields(); | 
| 2042   Isolate::Current()->RegisterClass(result); | 2042   Isolate::Current()->RegisterClass(result); | 
| 2043   return result.raw(); | 2043   return result.raw(); | 
| 2044 } | 2044 } | 
| 2045 | 2045 | 
| 2046 | 2046 | 
| 2047 | 2047 | 
| 2048 static void ReportTooManyTypeArguments(const Class& cls) { | 2048 static void ReportTooManyTypeArguments(const Class& cls) { | 
| 2049   Report::MessageF(Report::kError, | 2049   Report::MessageF(Report::kError, | 
| 2050                    Script::Handle(cls.script()), | 2050                    Script::Handle(cls.script()), | 
| (...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2688   const Class& owner = Class::Handle(closure_function.Owner()); | 2688   const Class& owner = Class::Handle(closure_function.Owner()); | 
| 2689   Function& extractor = Function::Handle( | 2689   Function& extractor = Function::Handle( | 
| 2690     Function::New(String::Handle(Symbols::New(getter_name)), | 2690     Function::New(String::Handle(Symbols::New(getter_name)), | 
| 2691                   RawFunction::kMethodExtractor, | 2691                   RawFunction::kMethodExtractor, | 
| 2692                   false,  // Not static. | 2692                   false,  // Not static. | 
| 2693                   false,  // Not const. | 2693                   false,  // Not const. | 
| 2694                   false,  // Not abstract. | 2694                   false,  // Not abstract. | 
| 2695                   false,  // Not external. | 2695                   false,  // Not external. | 
| 2696                   false,  // Not native. | 2696                   false,  // Not native. | 
| 2697                   owner, | 2697                   owner, | 
| 2698                   0));    // token_pos | 2698                   ClassifyingTokenPositions::kMethodExtractor));  // token_pos | 
| 2699 | 2699 | 
| 2700   // Initialize signature: receiver is a single fixed parameter. | 2700   // Initialize signature: receiver is a single fixed parameter. | 
| 2701   const intptr_t kNumParameters = 1; | 2701   const intptr_t kNumParameters = 1; | 
| 2702   extractor.set_num_fixed_parameters(kNumParameters); | 2702   extractor.set_num_fixed_parameters(kNumParameters); | 
| 2703   extractor.SetNumOptionalParameters(0, 0); | 2703   extractor.SetNumOptionalParameters(0, 0); | 
| 2704   extractor.set_parameter_types(Object::extractor_parameter_types()); | 2704   extractor.set_parameter_types(Object::extractor_parameter_types()); | 
| 2705   extractor.set_parameter_names(Object::extractor_parameter_names()); | 2705   extractor.set_parameter_names(Object::extractor_parameter_names()); | 
| 2706   extractor.set_result_type(Object::dynamic_type()); | 2706   extractor.set_result_type(Object::dynamic_type()); | 
| 2707 | 2707 | 
| 2708   extractor.set_extracted_method_closure(closure_function); | 2708   extractor.set_extracted_method_closure(closure_function); | 
| (...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3103   ASSERT(fake.IsInstance()); | 3103   ASSERT(fake.IsInstance()); | 
| 3104   result.set_handle_vtable(fake.vtable()); | 3104   result.set_handle_vtable(fake.vtable()); | 
| 3105   result.set_instance_size(FakeInstance::InstanceSize()); | 3105   result.set_instance_size(FakeInstance::InstanceSize()); | 
| 3106   result.set_next_field_offset(FakeInstance::NextFieldOffset()); | 3106   result.set_next_field_offset(FakeInstance::NextFieldOffset()); | 
| 3107   result.set_id(index); | 3107   result.set_id(index); | 
| 3108   result.set_state_bits(0); | 3108   result.set_state_bits(0); | 
| 3109   result.set_type_arguments_field_offset_in_words(kNoTypeArguments); | 3109   result.set_type_arguments_field_offset_in_words(kNoTypeArguments); | 
| 3110   result.set_num_type_arguments(kUnknownNumTypeArguments); | 3110   result.set_num_type_arguments(kUnknownNumTypeArguments); | 
| 3111   result.set_num_own_type_arguments(kUnknownNumTypeArguments); | 3111   result.set_num_own_type_arguments(kUnknownNumTypeArguments); | 
| 3112   result.set_num_native_fields(0); | 3112   result.set_num_native_fields(0); | 
| 3113   result.set_token_pos(Scanner::kNoSourcePos); | 3113   result.set_token_pos(Token::kNoSourcePos); | 
| 3114   result.InitEmptyFields(); | 3114   result.InitEmptyFields(); | 
| 3115   Isolate::Current()->RegisterClass(result); | 3115   Isolate::Current()->RegisterClass(result); | 
| 3116   return result.raw(); | 3116   return result.raw(); | 
| 3117 } | 3117 } | 
| 3118 | 3118 | 
| 3119 | 3119 | 
| 3120 RawClass* Class::New(const String& name, | 3120 RawClass* Class::New(const String& name, | 
| 3121                      const Script& script, | 3121                      const Script& script, | 
| 3122                      intptr_t token_pos) { | 3122                      intptr_t token_pos) { | 
| 3123   Class& result = Class::Handle(New<Instance>(kIllegalCid)); | 3123   Class& result = Class::Handle(New<Instance>(kIllegalCid)); | 
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3193   } | 3193   } | 
| 3194   set_is_prefinalized(); | 3194   set_is_prefinalized(); | 
| 3195 } | 3195 } | 
| 3196 | 3196 | 
| 3197 | 3197 | 
| 3198 RawClass* Class::NewNativeWrapper(const Library& library, | 3198 RawClass* Class::NewNativeWrapper(const Library& library, | 
| 3199                                   const String& name, | 3199                                   const String& name, | 
| 3200                                   int field_count) { | 3200                                   int field_count) { | 
| 3201   Class& cls = Class::Handle(library.LookupClass(name)); | 3201   Class& cls = Class::Handle(library.LookupClass(name)); | 
| 3202   if (cls.IsNull()) { | 3202   if (cls.IsNull()) { | 
| 3203     cls = New(name, Script::Handle(), Scanner::kNoSourcePos); | 3203     cls = New(name, Script::Handle(), Token::kNoSourcePos); | 
| 3204     cls.SetFields(Object::empty_array()); | 3204     cls.SetFields(Object::empty_array()); | 
| 3205     cls.SetFunctions(Object::empty_array()); | 3205     cls.SetFunctions(Object::empty_array()); | 
| 3206     // Set super class to Object. | 3206     // Set super class to Object. | 
| 3207     cls.set_super_type(Type::Handle(Type::ObjectType())); | 3207     cls.set_super_type(Type::Handle(Type::ObjectType())); | 
| 3208     // Compute instance size. First word contains a pointer to a properly | 3208     // Compute instance size. First word contains a pointer to a properly | 
| 3209     // sized typed array once the first native field has been set. | 3209     // sized typed array once the first native field has been set. | 
| 3210     intptr_t instance_size = sizeof(RawInstance) + kWordSize; | 3210     intptr_t instance_size = sizeof(RawInstance) + kWordSize; | 
| 3211     cls.set_instance_size(RoundedAllocationSize(instance_size)); | 3211     cls.set_instance_size(RoundedAllocationSize(instance_size)); | 
| 3212     cls.set_next_field_offset(instance_size); | 3212     cls.set_next_field_offset(instance_size); | 
| 3213     cls.set_num_native_fields(field_count); | 3213     cls.set_num_native_fields(field_count); | 
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3445   UNREACHABLE(); | 3445   UNREACHABLE(); | 
| 3446 } | 3446 } | 
| 3447 | 3447 | 
| 3448 | 3448 | 
| 3449 void Class::set_script(const Script& value) const { | 3449 void Class::set_script(const Script& value) const { | 
| 3450   StorePointer(&raw_ptr()->script_, value.raw()); | 3450   StorePointer(&raw_ptr()->script_, value.raw()); | 
| 3451 } | 3451 } | 
| 3452 | 3452 | 
| 3453 | 3453 | 
| 3454 void Class::set_token_pos(intptr_t token_pos) const { | 3454 void Class::set_token_pos(intptr_t token_pos) const { | 
| 3455   ASSERT(Scanner::ValidSourcePosition(token_pos)); | 3455   ASSERT(!Token::IsClassifying(token_pos)); | 
| 3456   StoreNonPointer(&raw_ptr()->token_pos_, token_pos); | 3456   StoreNonPointer(&raw_ptr()->token_pos_, token_pos); | 
| 3457 } | 3457 } | 
| 3458 | 3458 | 
| 3459 | 3459 | 
| 3460 intptr_t Class::ComputeEndTokenPos() const { | 3460 intptr_t Class::ComputeEndTokenPos() const { | 
| 3461   // Return the begin token for synthetic classes. | 3461   // Return the begin token for synthetic classes. | 
| 3462   if (IsSignatureClass() || IsMixinApplication() || IsTopLevel()) { | 3462   if (IsSignatureClass() || IsMixinApplication() || IsTopLevel()) { | 
| 3463     return token_pos(); | 3463     return token_pos(); | 
| 3464   } | 3464   } | 
| 3465   const Script& scr = Script::Handle(script()); | 3465   const Script& scr = Script::Handle(script()); | 
| (...skipping 915 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4381 RawUnresolvedClass* UnresolvedClass::New() { | 4381 RawUnresolvedClass* UnresolvedClass::New() { | 
| 4382   ASSERT(Object::unresolved_class_class() != Class::null()); | 4382   ASSERT(Object::unresolved_class_class() != Class::null()); | 
| 4383   RawObject* raw = Object::Allocate(UnresolvedClass::kClassId, | 4383   RawObject* raw = Object::Allocate(UnresolvedClass::kClassId, | 
| 4384                                     UnresolvedClass::InstanceSize(), | 4384                                     UnresolvedClass::InstanceSize(), | 
| 4385                                     Heap::kOld); | 4385                                     Heap::kOld); | 
| 4386   return reinterpret_cast<RawUnresolvedClass*>(raw); | 4386   return reinterpret_cast<RawUnresolvedClass*>(raw); | 
| 4387 } | 4387 } | 
| 4388 | 4388 | 
| 4389 | 4389 | 
| 4390 void UnresolvedClass::set_token_pos(intptr_t token_pos) const { | 4390 void UnresolvedClass::set_token_pos(intptr_t token_pos) const { | 
| 4391   ASSERT(Scanner::ValidSourcePosition(token_pos)); | 4391   ASSERT(!Token::IsClassifying(token_pos)); | 
| 4392   StoreNonPointer(&raw_ptr()->token_pos_, token_pos); | 4392   StoreNonPointer(&raw_ptr()->token_pos_, token_pos); | 
| 4393 } | 4393 } | 
| 4394 | 4394 | 
| 4395 | 4395 | 
| 4396 void UnresolvedClass::set_ident(const String& ident) const { | 4396 void UnresolvedClass::set_ident(const String& ident) const { | 
| 4397   StorePointer(&raw_ptr()->ident_, ident.raw()); | 4397   StorePointer(&raw_ptr()->ident_, ident.raw()); | 
| 4398 } | 4398 } | 
| 4399 | 4399 | 
| 4400 | 4400 | 
| 4401 void UnresolvedClass::set_library_prefix( | 4401 void UnresolvedClass::set_library_prefix( | 
| (...skipping 1381 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5783 | 5783 | 
| 5784 | 5784 | 
| 5785 void Function::set_recognized_kind(MethodRecognizer::Kind value) const { | 5785 void Function::set_recognized_kind(MethodRecognizer::Kind value) const { | 
| 5786   // Prevent multiple settings of kind. | 5786   // Prevent multiple settings of kind. | 
| 5787   ASSERT((value == MethodRecognizer::kUnknown) || !IsRecognized()); | 5787   ASSERT((value == MethodRecognizer::kUnknown) || !IsRecognized()); | 
| 5788   set_kind_tag(RecognizedBits::update(value, raw_ptr()->kind_tag_)); | 5788   set_kind_tag(RecognizedBits::update(value, raw_ptr()->kind_tag_)); | 
| 5789 } | 5789 } | 
| 5790 | 5790 | 
| 5791 | 5791 | 
| 5792 void Function::set_token_pos(intptr_t token_pos) const { | 5792 void Function::set_token_pos(intptr_t token_pos) const { | 
| 5793   ASSERT(token_pos >= 0); | 5793   ASSERT(!Token::IsClassifying(token_pos) || IsMethodExtractor()); | 
| 5794   StoreNonPointer(&raw_ptr()->token_pos_, token_pos); | 5794   StoreNonPointer(&raw_ptr()->token_pos_, token_pos); | 
| 5795 } | 5795 } | 
| 5796 | 5796 | 
| 5797 | 5797 | 
| 5798 void Function::set_kind_tag(intptr_t value) const { | 5798 void Function::set_kind_tag(intptr_t value) const { | 
| 5799   StoreNonPointer(&raw_ptr()->kind_tag_, static_cast<uint32_t>(value)); | 5799   StoreNonPointer(&raw_ptr()->kind_tag_, static_cast<uint32_t>(value)); | 
| 5800 } | 5800 } | 
| 5801 | 5801 | 
| 5802 | 5802 | 
| 5803 void Function::set_num_fixed_parameters(intptr_t value) const { | 5803 void Function::set_num_fixed_parameters(intptr_t value) const { | 
| (...skipping 2740 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 8544     : tokens_(TokenStream::Handle(tokens.raw())), | 8544     : tokens_(TokenStream::Handle(tokens.raw())), | 
| 8545       data_(ExternalTypedData::Handle(tokens.GetStream())), | 8545       data_(ExternalTypedData::Handle(tokens.GetStream())), | 
| 8546       stream_(reinterpret_cast<uint8_t*>(data_.DataAddr(0)), data_.Length()), | 8546       stream_(reinterpret_cast<uint8_t*>(data_.DataAddr(0)), data_.Length()), | 
| 8547       token_objects_(Array::Handle( | 8547       token_objects_(Array::Handle( | 
| 8548           GrowableObjectArray::Handle(tokens.TokenObjects()).data())), | 8548           GrowableObjectArray::Handle(tokens.TokenObjects()).data())), | 
| 8549       obj_(Object::Handle()), | 8549       obj_(Object::Handle()), | 
| 8550       cur_token_pos_(token_pos), | 8550       cur_token_pos_(token_pos), | 
| 8551       cur_token_kind_(Token::kILLEGAL), | 8551       cur_token_kind_(Token::kILLEGAL), | 
| 8552       cur_token_obj_index_(-1), | 8552       cur_token_obj_index_(-1), | 
| 8553       stream_type_(stream_type) { | 8553       stream_type_(stream_type) { | 
| 8554   SetCurrentPosition(token_pos); | 8554   ASSERT(token_pos != Token::kNoSourcePos); | 
|  | 8555   if (token_pos >= 0) { | 
|  | 8556     SetCurrentPosition(token_pos); | 
|  | 8557   } | 
| 8555 } | 8558 } | 
| 8556 | 8559 | 
| 8557 | 8560 | 
| 8558 void TokenStream::Iterator::SetStream(const TokenStream& tokens, | 8561 void TokenStream::Iterator::SetStream(const TokenStream& tokens, | 
| 8559                                       intptr_t token_pos) { | 8562                                       intptr_t token_pos) { | 
| 8560   tokens_ = tokens.raw(); | 8563   tokens_ = tokens.raw(); | 
| 8561   data_ = tokens.GetStream(); | 8564   data_ = tokens.GetStream(); | 
| 8562   stream_.SetStream(reinterpret_cast<uint8_t*>(data_.DataAddr(0)), | 8565   stream_.SetStream(reinterpret_cast<uint8_t*>(data_.DataAddr(0)), | 
| 8563                     data_.Length()); | 8566                     data_.Length()); | 
| 8564   token_objects_ = GrowableObjectArray::Handle(tokens.TokenObjects()).data(); | 8567   token_objects_ = GrowableObjectArray::Handle(tokens.TokenObjects()).data(); | 
| (...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 9236     next_ix_++; | 9239     next_ix_++; | 
| 9237     obj = array_.At(next_ix_); | 9240     obj = array_.At(next_ix_); | 
| 9238   } | 9241   } | 
| 9239 } | 9242 } | 
| 9240 | 9243 | 
| 9241 | 9244 | 
| 9242 static void ReportTooManyImports(const Library& lib) { | 9245 static void ReportTooManyImports(const Library& lib) { | 
| 9243   const String& url = String::Handle(lib.url()); | 9246   const String& url = String::Handle(lib.url()); | 
| 9244   Report::MessageF(Report::kError, | 9247   Report::MessageF(Report::kError, | 
| 9245                    Script::Handle(lib.LookupScript(url)), | 9248                    Script::Handle(lib.LookupScript(url)), | 
| 9246                    Scanner::kNoSourcePos, | 9249                    Token::kNoSourcePos, | 
| 9247                    Report::AtLocation, | 9250                    Report::AtLocation, | 
| 9248                    "too many imports in library '%s'", | 9251                    "too many imports in library '%s'", | 
| 9249                    url.ToCString()); | 9252                    url.ToCString()); | 
| 9250   UNREACHABLE(); | 9253   UNREACHABLE(); | 
| 9251 } | 9254 } | 
| 9252 | 9255 | 
| 9253 | 9256 | 
| 9254 void Library::set_num_imports(intptr_t value) const { | 9257 void Library::set_num_imports(intptr_t value) const { | 
| 9255   if (!Utils::IsUint(16, value)) { | 9258   if (!Utils::IsUint(16, value)) { | 
| 9256     ReportTooManyImports(*this); | 9259     ReportTooManyImports(*this); | 
| (...skipping 2000 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 11257     return; | 11260     return; | 
| 11258   } | 11261   } | 
| 11259 } | 11262 } | 
| 11260 | 11263 | 
| 11261 | 11264 | 
| 11262 // Encode integer in SLEB128 format. | 11265 // Encode integer in SLEB128 format. | 
| 11263 void PcDescriptors::EncodeInteger(GrowableArray<uint8_t>* data, | 11266 void PcDescriptors::EncodeInteger(GrowableArray<uint8_t>* data, | 
| 11264                                   intptr_t value) { | 11267                                   intptr_t value) { | 
| 11265   bool is_last_part = false; | 11268   bool is_last_part = false; | 
| 11266   while (!is_last_part) { | 11269   while (!is_last_part) { | 
| 11267     intptr_t part = value & 0x7f; | 11270     uint8_t part = value & 0x7f; | 
| 11268     value >>= 7; | 11271     value >>= 7; | 
| 11269     if ((value == 0 && (part & 0x40) == 0) || | 11272     if ((value == 0 && (part & 0x40) == 0) || | 
| 11270         (value == -1 && (part & 0x40) != 0)) { | 11273         (value == static_cast<intptr_t>(-1) && (part & 0x40) != 0)) { | 
| 11271       is_last_part = true; | 11274       is_last_part = true; | 
| 11272     } else { | 11275     } else { | 
| 11273       part |= 0x80; | 11276       part |= 0x80; | 
| 11274     } | 11277     } | 
| 11275     data->Add(part); | 11278     data->Add(part); | 
| 11276   } | 11279   } | 
| 11277 } | 11280 } | 
| 11278 | 11281 | 
| 11279 | 11282 | 
| 11280 // Decode SLEB128 encoded integer. Update byte_index to the next integer. | 11283 // Decode SLEB128 encoded integer. Update byte_index to the next integer. | 
| 11281 intptr_t PcDescriptors::DecodeInteger(intptr_t* byte_index) const { | 11284 intptr_t PcDescriptors::DecodeInteger(intptr_t* byte_index) const { | 
| 11282   NoSafepointScope no_safepoint; | 11285   NoSafepointScope no_safepoint; | 
| 11283   const uint8_t* data = raw_ptr()->data(); | 11286   const uint8_t* data = raw_ptr()->data(); | 
| 11284   ASSERT(*byte_index < Length()); | 11287   ASSERT(*byte_index < Length()); | 
| 11285   uword shift = 0; | 11288   uword shift = 0; | 
| 11286   intptr_t value = 0; | 11289   intptr_t value = 0; | 
| 11287   intptr_t part = 0; | 11290   uint8_t part = 0; | 
| 11288   do { | 11291   do { | 
| 11289     part = data[(*byte_index)++]; | 11292     part = data[(*byte_index)++]; | 
| 11290     value |= (part & 0x7f) << shift; | 11293     value |= static_cast<intptr_t>(part & 0x7f) << shift; | 
| 11291     shift += 7; | 11294     shift += 7; | 
| 11292   } while ((part & 0x80) != 0); | 11295   } while ((part & 0x80) != 0); | 
| 11293 | 11296 | 
| 11294   if (shift < sizeof(value) * 8 && (part & 0x40) != 0) { | 11297   if ((shift < (sizeof(value) * 8)) && ((part & 0x40) != 0)) { | 
| 11295     value |= -(1 << shift); | 11298     value |= static_cast<intptr_t>(-1) << shift; | 
| 11296   } | 11299   } | 
| 11297   return value; | 11300   return value; | 
| 11298 } | 11301 } | 
| 11299 | 11302 | 
| 11300 | 11303 | 
| 11301 RawObjectPool* ObjectPool::New(intptr_t len) { | 11304 RawObjectPool* ObjectPool::New(intptr_t len) { | 
| 11302   ASSERT(Object::object_pool_class() != Class::null()); | 11305   ASSERT(Object::object_pool_class() != Class::null()); | 
| 11303   if (len < 0 || len > kMaxElements) { | 11306   if (len < 0 || len > kMaxElements) { | 
| 11304     // This should be caught before we reach here. | 11307     // This should be caught before we reach here. | 
| 11305     FATAL1("Fatal error in ObjectPool::New: invalid length %" Pd "\n", len); | 11308     FATAL1("Fatal error in ObjectPool::New: invalid length %" Pd "\n", len); | 
| (...skipping 3275 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 14581   StorePointer(&raw_ptr()->previous_error_, value.raw()); | 14584   StorePointer(&raw_ptr()->previous_error_, value.raw()); | 
| 14582 } | 14585 } | 
| 14583 | 14586 | 
| 14584 | 14587 | 
| 14585 void LanguageError::set_script(const Script& value) const { | 14588 void LanguageError::set_script(const Script& value) const { | 
| 14586   StorePointer(&raw_ptr()->script_, value.raw()); | 14589   StorePointer(&raw_ptr()->script_, value.raw()); | 
| 14587 } | 14590 } | 
| 14588 | 14591 | 
| 14589 | 14592 | 
| 14590 void LanguageError::set_token_pos(intptr_t token_pos) const { | 14593 void LanguageError::set_token_pos(intptr_t token_pos) const { | 
| 14591   ASSERT(Scanner::ValidSourcePosition(token_pos)); | 14594   ASSERT(!Token::IsClassifying(token_pos)); | 
| 14592   StoreNonPointer(&raw_ptr()->token_pos_, token_pos); | 14595   StoreNonPointer(&raw_ptr()->token_pos_, token_pos); | 
| 14593 } | 14596 } | 
| 14594 | 14597 | 
| 14595 | 14598 | 
| 14596 void LanguageError::set_report_after_token(bool value) { | 14599 void LanguageError::set_report_after_token(bool value) { | 
| 14597   StoreNonPointer(&raw_ptr()->report_after_token_, value); | 14600   StoreNonPointer(&raw_ptr()->report_after_token_, value); | 
| 14598 } | 14601 } | 
| 14599 | 14602 | 
| 14600 | 14603 | 
| 14601 void LanguageError::set_kind(uint8_t value) const { | 14604 void LanguageError::set_kind(uint8_t value) const { | 
| (...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 14985   const Class& cls = Class::Handle(clazz()); | 14988   const Class& cls = Class::Handle(clazz()); | 
| 14986   Type& type = Type::Handle(); | 14989   Type& type = Type::Handle(); | 
| 14987   if (!cls.IsGeneric()) { | 14990   if (!cls.IsGeneric()) { | 
| 14988     type = cls.CanonicalType(); | 14991     type = cls.CanonicalType(); | 
| 14989   } | 14992   } | 
| 14990   if (type.IsNull()) { | 14993   if (type.IsNull()) { | 
| 14991     TypeArguments& type_arguments = TypeArguments::Handle(); | 14994     TypeArguments& type_arguments = TypeArguments::Handle(); | 
| 14992     if (cls.NumTypeArguments() > 0) { | 14995     if (cls.NumTypeArguments() > 0) { | 
| 14993       type_arguments = GetTypeArguments(); | 14996       type_arguments = GetTypeArguments(); | 
| 14994     } | 14997     } | 
| 14995     type = Type::New(cls, type_arguments, Scanner::kNoSourcePos); | 14998     type = Type::New(cls, type_arguments, Token::kNoSourcePos); | 
| 14996     type.SetIsFinalized(); | 14999     type.SetIsFinalized(); | 
| 14997     type ^= type.Canonicalize(); | 15000     type ^= type.Canonicalize(); | 
| 14998   } | 15001   } | 
| 14999   return type.raw(); | 15002   return type.raw(); | 
| 15000 } | 15003 } | 
| 15001 | 15004 | 
| 15002 | 15005 | 
| 15003 RawTypeArguments* Instance::GetTypeArguments() const { | 15006 RawTypeArguments* Instance::GetTypeArguments() const { | 
| 15004   const Class& cls = Class::Handle(clazz()); | 15007   const Class& cls = Class::Handle(clazz()); | 
| 15005   intptr_t field_offset = cls.type_arguments_field_offset(); | 15008   intptr_t field_offset = cls.type_arguments_field_offset(); | 
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 15244     if (IsClosure()) { | 15247     if (IsClosure()) { | 
| 15245       return Closure::ToCString(*this); | 15248       return Closure::ToCString(*this); | 
| 15246     } | 15249     } | 
| 15247     const Class& cls = Class::Handle(clazz()); | 15250     const Class& cls = Class::Handle(clazz()); | 
| 15248     TypeArguments& type_arguments = TypeArguments::Handle(); | 15251     TypeArguments& type_arguments = TypeArguments::Handle(); | 
| 15249     const intptr_t num_type_arguments = cls.NumTypeArguments(); | 15252     const intptr_t num_type_arguments = cls.NumTypeArguments(); | 
| 15250     if (num_type_arguments > 0) { | 15253     if (num_type_arguments > 0) { | 
| 15251       type_arguments = GetTypeArguments(); | 15254       type_arguments = GetTypeArguments(); | 
| 15252     } | 15255     } | 
| 15253     const Type& type = | 15256     const Type& type = | 
| 15254         Type::Handle(Type::New(cls, type_arguments, Scanner::kNoSourcePos)); | 15257         Type::Handle(Type::New(cls, type_arguments, Token::kNoSourcePos)); | 
| 15255     const String& type_name = String::Handle(type.UserVisibleName()); | 15258     const String& type_name = String::Handle(type.UserVisibleName()); | 
| 15256     return OS::SCreate(Thread::Current()->zone(), | 15259     return OS::SCreate(Thread::Current()->zone(), | 
| 15257         "Instance of '%s'", type_name.ToCString()); | 15260         "Instance of '%s'", type_name.ToCString()); | 
| 15258   } | 15261   } | 
| 15259 } | 15262 } | 
| 15260 | 15263 | 
| 15261 | 15264 | 
| 15262 void Instance::PrintSharedInstanceJSON(JSONObject* jsobj, | 15265 void Instance::PrintSharedInstanceJSON(JSONObject* jsobj, | 
| 15263                                        bool ref) const { | 15266                                        bool ref) const { | 
| 15264   AddCommonObjectProperties(jsobj, "Instance", ref); | 15267   AddCommonObjectProperties(jsobj, "Instance", ref); | 
| (...skipping 641 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 15906 } | 15909 } | 
| 15907 | 15910 | 
| 15908 | 15911 | 
| 15909 RawType* Type::NewNonParameterizedType(const Class& type_class) { | 15912 RawType* Type::NewNonParameterizedType(const Class& type_class) { | 
| 15910   ASSERT(type_class.NumTypeArguments() == 0); | 15913   ASSERT(type_class.NumTypeArguments() == 0); | 
| 15911   Type& type = Type::Handle(type_class.CanonicalType()); | 15914   Type& type = Type::Handle(type_class.CanonicalType()); | 
| 15912   if (type.IsNull()) { | 15915   if (type.IsNull()) { | 
| 15913     const TypeArguments& no_type_arguments = TypeArguments::Handle(); | 15916     const TypeArguments& no_type_arguments = TypeArguments::Handle(); | 
| 15914     type ^= Type::New(Object::Handle(type_class.raw()), | 15917     type ^= Type::New(Object::Handle(type_class.raw()), | 
| 15915                       no_type_arguments, | 15918                       no_type_arguments, | 
| 15916                       Scanner::kNoSourcePos); | 15919                       Token::kNoSourcePos); | 
| 15917     type.SetIsFinalized(); | 15920     type.SetIsFinalized(); | 
| 15918     type ^= type.Canonicalize(); | 15921     type ^= type.Canonicalize(); | 
| 15919   } | 15922   } | 
| 15920   ASSERT(type.IsFinalized()); | 15923   ASSERT(type.IsFinalized()); | 
| 15921   return type.raw(); | 15924   return type.raw(); | 
| 15922 } | 15925 } | 
| 15923 | 15926 | 
| 15924 | 15927 | 
| 15925 void Type::SetIsFinalized() const { | 15928 void Type::SetIsFinalized() const { | 
| 15926   ASSERT(!IsFinalized()); | 15929   ASSERT(!IsFinalized()); | 
| (...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 16415   const Type& result = Type::Handle(Type::New(space)); | 16418   const Type& result = Type::Handle(Type::New(space)); | 
| 16416   result.set_type_class(clazz); | 16419   result.set_type_class(clazz); | 
| 16417   result.set_arguments(arguments); | 16420   result.set_arguments(arguments); | 
| 16418   result.set_token_pos(token_pos); | 16421   result.set_token_pos(token_pos); | 
| 16419   result.StoreNonPointer(&result.raw_ptr()->type_state_, RawType::kAllocated); | 16422   result.StoreNonPointer(&result.raw_ptr()->type_state_, RawType::kAllocated); | 
| 16420   return result.raw(); | 16423   return result.raw(); | 
| 16421 } | 16424 } | 
| 16422 | 16425 | 
| 16423 | 16426 | 
| 16424 void Type::set_token_pos(intptr_t token_pos) const { | 16427 void Type::set_token_pos(intptr_t token_pos) const { | 
| 16425   ASSERT(Scanner::ValidSourcePosition(token_pos)); | 16428   ASSERT(!Token::IsClassifying(token_pos)); | 
| 16426   StoreNonPointer(&raw_ptr()->token_pos_, token_pos); | 16429   StoreNonPointer(&raw_ptr()->token_pos_, token_pos); | 
| 16427 } | 16430 } | 
| 16428 | 16431 | 
| 16429 | 16432 | 
| 16430 void Type::set_type_state(int8_t state) const { | 16433 void Type::set_type_state(int8_t state) const { | 
| 16431   ASSERT((state >= RawType::kAllocated) && | 16434   ASSERT((state >= RawType::kAllocated) && | 
| 16432          (state <= RawType::kFinalizedUninstantiated)); | 16435          (state <= RawType::kFinalizedUninstantiated)); | 
| 16433   StoreNonPointer(&raw_ptr()->type_state_, state); | 16436   StoreNonPointer(&raw_ptr()->type_state_, state); | 
| 16434 } | 16437 } | 
| 16435 | 16438 | 
| (...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 16847   result.set_name(name); | 16850   result.set_name(name); | 
| 16848   result.set_bound(bound); | 16851   result.set_bound(bound); | 
| 16849   result.set_token_pos(token_pos); | 16852   result.set_token_pos(token_pos); | 
| 16850   result.StoreNonPointer(&result.raw_ptr()->type_state_, | 16853   result.StoreNonPointer(&result.raw_ptr()->type_state_, | 
| 16851                          RawTypeParameter::kAllocated); | 16854                          RawTypeParameter::kAllocated); | 
| 16852   return result.raw(); | 16855   return result.raw(); | 
| 16853 } | 16856 } | 
| 16854 | 16857 | 
| 16855 | 16858 | 
| 16856 void TypeParameter::set_token_pos(intptr_t token_pos) const { | 16859 void TypeParameter::set_token_pos(intptr_t token_pos) const { | 
| 16857   ASSERT(Scanner::ValidSourcePosition(token_pos)); | 16860   ASSERT(!Token::IsClassifying(token_pos)); | 
| 16858   StoreNonPointer(&raw_ptr()->token_pos_, token_pos); | 16861   StoreNonPointer(&raw_ptr()->token_pos_, token_pos); | 
| 16859 } | 16862 } | 
| 16860 | 16863 | 
| 16861 | 16864 | 
| 16862 void TypeParameter::set_type_state(int8_t state) const { | 16865 void TypeParameter::set_type_state(int8_t state) const { | 
| 16863   ASSERT((state == RawTypeParameter::kAllocated) || | 16866   ASSERT((state == RawTypeParameter::kAllocated) || | 
| 16864          (state == RawTypeParameter::kBeingFinalized) || | 16867          (state == RawTypeParameter::kBeingFinalized) || | 
| 16865          (state == RawTypeParameter::kFinalizedUninstantiated)); | 16868          (state == RawTypeParameter::kFinalizedUninstantiated)); | 
| 16866   StoreNonPointer(&raw_ptr()->type_state_, state); | 16869   StoreNonPointer(&raw_ptr()->type_state_, state); | 
| 16867 } | 16870 } | 
| (...skipping 5256 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 22124   return tag_label.ToCString(); | 22127   return tag_label.ToCString(); | 
| 22125 } | 22128 } | 
| 22126 | 22129 | 
| 22127 | 22130 | 
| 22128 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { | 22131 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 22129   Instance::PrintJSONImpl(stream, ref); | 22132   Instance::PrintJSONImpl(stream, ref); | 
| 22130 } | 22133 } | 
| 22131 | 22134 | 
| 22132 | 22135 | 
| 22133 }  // namespace dart | 22136 }  // namespace dart | 
| OLD | NEW | 
|---|