| 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/bigint_operations.h" |     10 #include "vm/bigint_operations.h" | 
| (...skipping 2187 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   2198 } |   2198 } | 
|   2199  |   2199  | 
|   2200  |   2200  | 
|   2201 const char* Class::ToCString() const { |   2201 const char* Class::ToCString() const { | 
|   2202   const char* format = is_interface() |   2202   const char* format = is_interface() | 
|   2203       ? "%s Interface: %s" : "%s Class: %s"; |   2203       ? "%s Interface: %s" : "%s Class: %s"; | 
|   2204   const Library& lib = Library::Handle(library()); |   2204   const Library& lib = Library::Handle(library()); | 
|   2205   const char* library_name = lib.IsNull() ? "" : lib.ToCString(); |   2205   const char* library_name = lib.IsNull() ? "" : lib.ToCString(); | 
|   2206   const char* class_name = String::Handle(Name()).ToCString(); |   2206   const char* class_name = String::Handle(Name()).ToCString(); | 
|   2207   intptr_t len = OS::SNPrint(NULL, 0, format, library_name, class_name) + 1; |   2207   intptr_t len = OS::SNPrint(NULL, 0, format, library_name, class_name) + 1; | 
|   2208   char* chars = reinterpret_cast<char*>( |   2208   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
|   2209       Isolate::Current()->current_zone()->Allocate(len)); |  | 
|   2210   OS::SNPrint(chars, len, format, library_name, class_name); |   2209   OS::SNPrint(chars, len, format, library_name, class_name); | 
|   2211   return chars; |   2210   return chars; | 
|   2212 } |   2211 } | 
|   2213  |   2212  | 
|   2214  |   2213  | 
|   2215 void Class::InsertCanonicalConstant(intptr_t index, |   2214 void Class::InsertCanonicalConstant(intptr_t index, | 
|   2216                                     const Instance& constant) const { |   2215                                     const Instance& constant) const { | 
|   2217   // The constant needs to be added to the list. Grow the list if it is full. |   2216   // The constant needs to be added to the list. Grow the list if it is full. | 
|   2218   Array& canonical_list = Array::Handle(constants()); |   2217   Array& canonical_list = Array::Handle(constants()); | 
|   2219   const intptr_t list_len = canonical_list.Length(); |   2218   const intptr_t list_len = canonical_list.Length(); | 
| (...skipping 708 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   2928  |   2927  | 
|   2929 const char* Type::ToCString() const { |   2928 const char* Type::ToCString() const { | 
|   2930   if (IsResolved()) { |   2929   if (IsResolved()) { | 
|   2931     const AbstractTypeArguments& type_arguments = |   2930     const AbstractTypeArguments& type_arguments = | 
|   2932         AbstractTypeArguments::Handle(arguments()); |   2931         AbstractTypeArguments::Handle(arguments()); | 
|   2933     if (type_arguments.IsNull()) { |   2932     if (type_arguments.IsNull()) { | 
|   2934       const char* format = "Type: class '%s'"; |   2933       const char* format = "Type: class '%s'"; | 
|   2935       const char* class_name = |   2934       const char* class_name = | 
|   2936           String::Handle(Class::Handle(type_class()).Name()).ToCString(); |   2935           String::Handle(Class::Handle(type_class()).Name()).ToCString(); | 
|   2937       intptr_t len = OS::SNPrint(NULL, 0, format, class_name) + 1; |   2936       intptr_t len = OS::SNPrint(NULL, 0, format, class_name) + 1; | 
|   2938       char* chars = reinterpret_cast<char*>( |   2937       char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
|   2939           Isolate::Current()->current_zone()->Allocate(len)); |  | 
|   2940       OS::SNPrint(chars, len, format, class_name); |   2938       OS::SNPrint(chars, len, format, class_name); | 
|   2941       return chars; |   2939       return chars; | 
|   2942     } else { |   2940     } else { | 
|   2943       const char* format = "Type: class '%s', args:[%s]"; |   2941       const char* format = "Type: class '%s', args:[%s]"; | 
|   2944       const char* class_name = |   2942       const char* class_name = | 
|   2945           String::Handle(Class::Handle(type_class()).Name()).ToCString(); |   2943           String::Handle(Class::Handle(type_class()).Name()).ToCString(); | 
|   2946       const char* args_cstr = |   2944       const char* args_cstr = | 
|   2947           AbstractTypeArguments::Handle(arguments()).ToCString(); |   2945           AbstractTypeArguments::Handle(arguments()).ToCString(); | 
|   2948       intptr_t len = OS::SNPrint(NULL, 0, format, class_name, args_cstr) + 1; |   2946       intptr_t len = OS::SNPrint(NULL, 0, format, class_name, args_cstr) + 1; | 
|   2949       char* chars = reinterpret_cast<char*>( |   2947       char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
|   2950           Isolate::Current()->current_zone()->Allocate(len)); |  | 
|   2951       OS::SNPrint(chars, len, format, class_name, args_cstr); |   2948       OS::SNPrint(chars, len, format, class_name, args_cstr); | 
|   2952       return chars; |   2949       return chars; | 
|   2953     } |   2950     } | 
|   2954   } else { |   2951   } else { | 
|   2955     return "Unresolved Type"; |   2952     return "Unresolved Type"; | 
|   2956   } |   2953   } | 
|   2957 } |   2954 } | 
|   2958  |   2955  | 
|   2959  |   2956  | 
|   2960 void TypeParameter::set_is_finalized() const { |   2957 void TypeParameter::set_is_finalized() const { | 
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   3086          (state == RawTypeParameter::kBeingFinalized) || |   3083          (state == RawTypeParameter::kBeingFinalized) || | 
|   3087          (state == RawTypeParameter::kFinalizedUninstantiated)); |   3084          (state == RawTypeParameter::kFinalizedUninstantiated)); | 
|   3088   raw_ptr()->type_state_ = state; |   3085   raw_ptr()->type_state_ = state; | 
|   3089 } |   3086 } | 
|   3090  |   3087  | 
|   3091  |   3088  | 
|   3092 const char* TypeParameter::ToCString() const { |   3089 const char* TypeParameter::ToCString() const { | 
|   3093   const char* format = "TypeParameter: name %s; index: %d"; |   3090   const char* format = "TypeParameter: name %s; index: %d"; | 
|   3094   const char* name_cstr = String::Handle(Name()).ToCString(); |   3091   const char* name_cstr = String::Handle(Name()).ToCString(); | 
|   3095   intptr_t len = OS::SNPrint(NULL, 0, format, name_cstr, index()) + 1; |   3092   intptr_t len = OS::SNPrint(NULL, 0, format, name_cstr, index()) + 1; | 
|   3096   char* chars = reinterpret_cast<char*>( |   3093   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
|   3097       Isolate::Current()->current_zone()->Allocate(len)); |  | 
|   3098   OS::SNPrint(chars, len, format, name_cstr, index()); |   3094   OS::SNPrint(chars, len, format, name_cstr, index()); | 
|   3099   return chars; |   3095   return chars; | 
|   3100 } |   3096 } | 
|   3101  |   3097  | 
|   3102  |   3098  | 
|   3103 intptr_t AbstractTypeArguments::Length() const  { |   3099 intptr_t AbstractTypeArguments::Length() const  { | 
|   3104   // AbstractTypeArguments is an abstract class. |   3100   // AbstractTypeArguments is an abstract class. | 
|   3105   UNREACHABLE(); |   3101   UNREACHABLE(); | 
|   3106   return -1; |   3102   return -1; | 
|   3107 } |   3103 } | 
| (...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   3540 const char* TypeArguments::ToCString() const { |   3536 const char* TypeArguments::ToCString() const { | 
|   3541   if (IsNull()) { |   3537   if (IsNull()) { | 
|   3542     return "NULL TypeArguments"; |   3538     return "NULL TypeArguments"; | 
|   3543   } |   3539   } | 
|   3544   const char* format = "%s [%s]"; |   3540   const char* format = "%s [%s]"; | 
|   3545   const char* prev_cstr = "TypeArguments:"; |   3541   const char* prev_cstr = "TypeArguments:"; | 
|   3546   for (int i = 0; i < Length(); i++) { |   3542   for (int i = 0; i < Length(); i++) { | 
|   3547     const AbstractType& type_at = AbstractType::Handle(TypeAt(i)); |   3543     const AbstractType& type_at = AbstractType::Handle(TypeAt(i)); | 
|   3548     const char* type_cstr = type_at.IsNull() ? "null" : type_at.ToCString(); |   3544     const char* type_cstr = type_at.IsNull() ? "null" : type_at.ToCString(); | 
|   3549     intptr_t len = OS::SNPrint(NULL, 0, format, prev_cstr, type_cstr) + 1; |   3545     intptr_t len = OS::SNPrint(NULL, 0, format, prev_cstr, type_cstr) + 1; | 
|   3550     char* chars = reinterpret_cast<char*>( |   3546     char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
|   3551         Isolate::Current()->current_zone()->Allocate(len)); |  | 
|   3552     OS::SNPrint(chars, len, format, prev_cstr, type_cstr); |   3547     OS::SNPrint(chars, len, format, prev_cstr, type_cstr); | 
|   3553     prev_cstr = chars; |   3548     prev_cstr = chars; | 
|   3554   } |   3549   } | 
|   3555   return prev_cstr; |   3550   return prev_cstr; | 
|   3556 } |   3551 } | 
|   3557  |   3552  | 
|   3558  |   3553  | 
|   3559 intptr_t InstantiatedTypeArguments::Length() const { |   3554 intptr_t InstantiatedTypeArguments::Length() const { | 
|   3560   return AbstractTypeArguments::Handle( |   3555   return AbstractTypeArguments::Handle( | 
|   3561       uninstantiated_type_arguments()).Length(); |   3556       uninstantiated_type_arguments()).Length(); | 
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   3620     return "NULL InstantiatedTypeArguments"; |   3615     return "NULL InstantiatedTypeArguments"; | 
|   3621   } |   3616   } | 
|   3622   const char* format = "InstantiatedTypeArguments: [%s] instantiator: [%s]"; |   3617   const char* format = "InstantiatedTypeArguments: [%s] instantiator: [%s]"; | 
|   3623   const char* arg_cstr = |   3618   const char* arg_cstr = | 
|   3624       AbstractTypeArguments::Handle( |   3619       AbstractTypeArguments::Handle( | 
|   3625           uninstantiated_type_arguments()).ToCString(); |   3620           uninstantiated_type_arguments()).ToCString(); | 
|   3626   const char* instantiator_cstr = |   3621   const char* instantiator_cstr = | 
|   3627       AbstractTypeArguments::Handle(instantiator_type_arguments()).ToCString(); |   3622       AbstractTypeArguments::Handle(instantiator_type_arguments()).ToCString(); | 
|   3628   intptr_t len = |   3623   intptr_t len = | 
|   3629       OS::SNPrint(NULL, 0, format, arg_cstr, instantiator_cstr) + 1; |   3624       OS::SNPrint(NULL, 0, format, arg_cstr, instantiator_cstr) + 1; | 
|   3630   char* chars = reinterpret_cast<char*>( |   3625   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
|   3631       Isolate::Current()->current_zone()->Allocate(len)); |  | 
|   3632   OS::SNPrint(chars, len, format, arg_cstr, instantiator_cstr); |   3626   OS::SNPrint(chars, len, format, arg_cstr, instantiator_cstr); | 
|   3633   return chars; |   3627   return chars; | 
|   3634 } |   3628 } | 
|   3635  |   3629  | 
|   3636  |   3630  | 
|   3637 void Function::SetCode(const Code& value) const { |   3631 void Function::SetCode(const Code& value) const { | 
|   3638   StorePointer(&raw_ptr()->code_, value.raw()); |   3632   StorePointer(&raw_ptr()->code_, value.raw()); | 
|   3639   ASSERT(Function::Handle(value.function()).IsNull() || |   3633   ASSERT(Function::Handle(value.function()).IsNull() || | 
|   3640     (value.function() == this->raw())); |   3634     (value.function() == this->raw())); | 
|   3641   value.set_function(*this); |   3635   value.set_function(*this); | 
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   3933     ASSERT(class_name != NULL); |   3927     ASSERT(class_name != NULL); | 
|   3934     const Library& library = Library::Handle(function_class.library()); |   3928     const Library& library = Library::Handle(function_class.library()); | 
|   3935     ASSERT(!library.IsNull()); |   3929     ASSERT(!library.IsNull()); | 
|   3936     const char* library_name = String::Handle(library.url()).ToCString(); |   3930     const char* library_name = String::Handle(library.url()).ToCString(); | 
|   3937     ASSERT(library_name != NULL); |   3931     ASSERT(library_name != NULL); | 
|   3938     const char* lib_class_format = |   3932     const char* lib_class_format = | 
|   3939         (library_name[0] == '\0') ? "%s%s_" : "%s_%s_"; |   3933         (library_name[0] == '\0') ? "%s%s_" : "%s_%s_"; | 
|   3940     reserve_len += |   3934     reserve_len += | 
|   3941         OS::SNPrint(NULL, 0, lib_class_format, library_name, class_name); |   3935         OS::SNPrint(NULL, 0, lib_class_format, library_name, class_name); | 
|   3942     ASSERT(chars != NULL); |   3936     ASSERT(chars != NULL); | 
|   3943     *chars = reinterpret_cast<char*>( |   3937     *chars = Isolate::Current()->current_zone()->Alloc<char>(reserve_len + 1); | 
|   3944         Isolate::Current()->current_zone()->Allocate(reserve_len + 1)); |  | 
|   3945     written = OS::SNPrint( |   3938     written = OS::SNPrint( | 
|   3946         *chars, reserve_len, lib_class_format, library_name, class_name); |   3939         *chars, reserve_len, lib_class_format, library_name, class_name); | 
|   3947   } else { |   3940   } else { | 
|   3948     written = ConstructFunctionFullyQualifiedCString(parent, |   3941     written = ConstructFunctionFullyQualifiedCString(parent, | 
|   3949                                                      chars, |   3942                                                      chars, | 
|   3950                                                      reserve_len); |   3943                                                      reserve_len); | 
|   3951   } |   3944   } | 
|   3952   ASSERT(*chars != NULL); |   3945   ASSERT(*chars != NULL); | 
|   3953   char* next = *chars + written; |   3946   char* next = *chars + written; | 
|   3954   written += OS::SNPrint(next, reserve_len + 1, function_format, name); |   3947   written += OS::SNPrint(next, reserve_len + 1, function_format, name); | 
| (...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   4399     case RawFunction::kConstImplicitGetter: |   4392     case RawFunction::kConstImplicitGetter: | 
|   4400       kind_str = " const-getter"; |   4393       kind_str = " const-getter"; | 
|   4401       break; |   4394       break; | 
|   4402     default: |   4395     default: | 
|   4403       UNREACHABLE(); |   4396       UNREACHABLE(); | 
|   4404   } |   4397   } | 
|   4405   const char* kFormat = "Function '%s':%s%s%s%s."; |   4398   const char* kFormat = "Function '%s':%s%s%s%s."; | 
|   4406   const char* function_name = String::Handle(name()).ToCString(); |   4399   const char* function_name = String::Handle(name()).ToCString(); | 
|   4407   intptr_t len = OS::SNPrint(NULL, 0, kFormat, function_name, |   4400   intptr_t len = OS::SNPrint(NULL, 0, kFormat, function_name, | 
|   4408                              static_str, abstract_str, kind_str, const_str) + 1; |   4401                              static_str, abstract_str, kind_str, const_str) + 1; | 
|   4409   char* chars = reinterpret_cast<char*>( |   4402   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
|   4410       Isolate::Current()->current_zone()->Allocate(len)); |  | 
|   4411   OS::SNPrint(chars, len, kFormat, function_name, |   4403   OS::SNPrint(chars, len, kFormat, function_name, | 
|   4412               static_str, abstract_str, kind_str, const_str); |   4404               static_str, abstract_str, kind_str, const_str); | 
|   4413   return chars; |   4405   return chars; | 
|   4414 } |   4406 } | 
|   4415  |   4407  | 
|   4416  |   4408  | 
|   4417 RawString* Field::GetterName(const String& field_name) { |   4409 RawString* Field::GetterName(const String& field_name) { | 
|   4418   String& str = String::Handle(); |   4410   String& str = String::Handle(); | 
|   4419   str = String::New(kGetterPrefix); |   4411   str = String::New(kGetterPrefix); | 
|   4420   str = String::Concat(str, field_name); |   4412   str = String::Concat(str, field_name); | 
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   4529 const char* Field::ToCString() const { |   4521 const char* Field::ToCString() const { | 
|   4530   const char* kF0 = is_static() ? " static" : ""; |   4522   const char* kF0 = is_static() ? " static" : ""; | 
|   4531   const char* kF1 = is_final() ? " final" : ""; |   4523   const char* kF1 = is_final() ? " final" : ""; | 
|   4532   const char* kF2 = is_const() ? " const" : ""; |   4524   const char* kF2 = is_const() ? " const" : ""; | 
|   4533   const char* kFormat = "Field <%s.%s>:%s%s%s"; |   4525   const char* kFormat = "Field <%s.%s>:%s%s%s"; | 
|   4534   const char* field_name = String::Handle(name()).ToCString(); |   4526   const char* field_name = String::Handle(name()).ToCString(); | 
|   4535   const Class& cls = Class::Handle(owner()); |   4527   const Class& cls = Class::Handle(owner()); | 
|   4536   const char* cls_name = String::Handle(cls.Name()).ToCString(); |   4528   const char* cls_name = String::Handle(cls.Name()).ToCString(); | 
|   4537   intptr_t len = |   4529   intptr_t len = | 
|   4538       OS::SNPrint(NULL, 0, kFormat, cls_name, field_name, kF0, kF1, kF2) + 1; |   4530       OS::SNPrint(NULL, 0, kFormat, cls_name, field_name, kF0, kF1, kF2) + 1; | 
|   4539   char* chars = reinterpret_cast<char*>( |   4531   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
|   4540       Isolate::Current()->current_zone()->Allocate(len)); |  | 
|   4541   OS::SNPrint(chars, len, kFormat, cls_name, field_name, kF0, kF1, kF2); |   4532   OS::SNPrint(chars, len, kFormat, cls_name, field_name, kF0, kF1, kF2); | 
|   4542   return chars; |   4533   return chars; | 
|   4543 } |   4534 } | 
|   4544  |   4535  | 
|   4545  |   4536  | 
|   4546 void LiteralToken::set_literal(const String& literal) const { |   4537 void LiteralToken::set_literal(const String& literal) const { | 
|   4547   StorePointer(&raw_ptr()->literal_, literal.raw()); |   4538   StorePointer(&raw_ptr()->literal_, literal.raw()); | 
|   4548 } |   4539 } | 
|   4549  |   4540  | 
|   4550  |   4541  | 
| (...skipping 1734 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   6285  |   6276  | 
|   6286 RawLibrary* Library::NativeWrappersLibrary() { |   6277 RawLibrary* Library::NativeWrappersLibrary() { | 
|   6287   return Isolate::Current()->object_store()->native_wrappers_library(); |   6278   return Isolate::Current()->object_store()->native_wrappers_library(); | 
|   6288 } |   6279 } | 
|   6289  |   6280  | 
|   6290  |   6281  | 
|   6291 const char* Library::ToCString() const { |   6282 const char* Library::ToCString() const { | 
|   6292   const char* kFormat = "Library:'%s'"; |   6283   const char* kFormat = "Library:'%s'"; | 
|   6293   const String& name = String::Handle(url()); |   6284   const String& name = String::Handle(url()); | 
|   6294   intptr_t len = OS::SNPrint(NULL, 0, kFormat, name.ToCString()) + 1; |   6285   intptr_t len = OS::SNPrint(NULL, 0, kFormat, name.ToCString()) + 1; | 
|   6295   char* chars = reinterpret_cast<char*>( |   6286   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
|   6296       Isolate::Current()->current_zone()->Allocate(len)); |  | 
|   6297   OS::SNPrint(chars, len, kFormat, name.ToCString()); |   6287   OS::SNPrint(chars, len, kFormat, name.ToCString()); | 
|   6298   return chars; |   6288   return chars; | 
|   6299 } |   6289 } | 
|   6300  |   6290  | 
|   6301  |   6291  | 
|   6302 RawLibrary* LibraryPrefix::GetLibrary(int index) const { |   6292 RawLibrary* LibraryPrefix::GetLibrary(int index) const { | 
|   6303   Library& lib = Library::Handle(); |   6293   Library& lib = Library::Handle(); | 
|   6304   if ((index >= 0) || (index < num_libs())) { |   6294   if ((index >= 0) || (index < num_libs())) { | 
|   6305     Array& libs = Array::Handle(libraries()); |   6295     Array& libs = Array::Handle(libraries()); | 
|   6306     lib ^= libs.At(index); |   6296     lib ^= libs.At(index); | 
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   6380   result.set_num_libs(0); |   6370   result.set_num_libs(0); | 
|   6381   result.AddLibrary(lib); |   6371   result.AddLibrary(lib); | 
|   6382   return result.raw(); |   6372   return result.raw(); | 
|   6383 } |   6373 } | 
|   6384  |   6374  | 
|   6385  |   6375  | 
|   6386 const char* LibraryPrefix::ToCString() const { |   6376 const char* LibraryPrefix::ToCString() const { | 
|   6387   const char* kFormat = "LibraryPrefix:'%s'"; |   6377   const char* kFormat = "LibraryPrefix:'%s'"; | 
|   6388   const String& prefix = String::Handle(name()); |   6378   const String& prefix = String::Handle(name()); | 
|   6389   intptr_t len = OS::SNPrint(NULL, 0, kFormat, prefix.ToCString()) + 1; |   6379   intptr_t len = OS::SNPrint(NULL, 0, kFormat, prefix.ToCString()) + 1; | 
|   6390   char* chars = reinterpret_cast<char*>( |   6380   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
|   6391       Isolate::Current()->current_zone()->Allocate(len)); |  | 
|   6392   OS::SNPrint(chars, len, kFormat, prefix.ToCString()); |   6381   OS::SNPrint(chars, len, kFormat, prefix.ToCString()); | 
|   6393   return chars; |   6382   return chars; | 
|   6394 } |   6383 } | 
|   6395  |   6384  | 
|   6396  |   6385  | 
|   6397 RawString* LibraryPrefix::CheckForDuplicateDefinition() const { |   6386 RawString* LibraryPrefix::CheckForDuplicateDefinition() const { | 
|   6398   Library& lib = Library::Handle(); |   6387   Library& lib = Library::Handle(); | 
|   6399   Library& conflicting_lib = Library::Handle(); |   6388   Library& conflicting_lib = Library::Handle(); | 
|   6400   Object& obj = Object::Handle(); |   6389   Object& obj = Object::Handle(); | 
|   6401   Class& cls = Class::Handle(); |   6390   Class& cls = Class::Handle(); | 
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   6630   const char* kFormat = "0x%x\t%s\t%ld\t%ld\t%ld\n"; |   6619   const char* kFormat = "0x%x\t%s\t%ld\t%ld\t%ld\n"; | 
|   6631   // First compute the buffer size required. |   6620   // First compute the buffer size required. | 
|   6632   intptr_t len = 0; |   6621   intptr_t len = 0; | 
|   6633   for (intptr_t i = 0; i < Length(); i++) { |   6622   for (intptr_t i = 0; i < Length(); i++) { | 
|   6634     const intptr_t multi_purpose_index = DescriptorKind(i) == kDeoptIndex ? |   6623     const intptr_t multi_purpose_index = DescriptorKind(i) == kDeoptIndex ? | 
|   6635         DeoptIndex(i) : TryIndex(i); |   6624         DeoptIndex(i) : TryIndex(i); | 
|   6636     len += OS::SNPrint(NULL, 0, kFormat, |   6625     len += OS::SNPrint(NULL, 0, kFormat, | 
|   6637         PC(i), KindAsStr(i), NodeId(i), TokenIndex(i), multi_purpose_index); |   6626         PC(i), KindAsStr(i), NodeId(i), TokenIndex(i), multi_purpose_index); | 
|   6638   } |   6627   } | 
|   6639   // Allocate the buffer. |   6628   // Allocate the buffer. | 
|   6640   char* buffer = reinterpret_cast<char*>( |   6629   char* buffer = Isolate::Current()->current_zone()->Alloc<char>(len + 1); | 
|   6641       Isolate::Current()->current_zone()->Allocate(len + 1)); |  | 
|   6642   // Layout the fields in the buffer. |   6630   // Layout the fields in the buffer. | 
|   6643   intptr_t index = 0; |   6631   intptr_t index = 0; | 
|   6644   for (intptr_t i = 0; i < Length(); i++) { |   6632   for (intptr_t i = 0; i < Length(); i++) { | 
|   6645     const intptr_t multi_purpose_index = DescriptorKind(i) == kDeoptIndex ? |   6633     const intptr_t multi_purpose_index = DescriptorKind(i) == kDeoptIndex ? | 
|   6646         DeoptIndex(i) : TryIndex(i); |   6634         DeoptIndex(i) : TryIndex(i); | 
|   6647     index += OS::SNPrint((buffer + index), (len - index), kFormat, |   6635     index += OS::SNPrint((buffer + index), (len - index), kFormat, | 
|   6648         PC(i), KindAsStr(i), NodeId(i), TokenIndex(i), multi_purpose_index); |   6636         PC(i), KindAsStr(i), NodeId(i), TokenIndex(i), multi_purpose_index); | 
|   6649   } |   6637   } | 
|   6650   return buffer; |   6638   return buffer; | 
|   6651 } |   6639 } | 
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   6754   // This is only safe because we create a new Smi, which does not cause |   6742   // This is only safe because we create a new Smi, which does not cause | 
|   6755   // heap allocation. |   6743   // heap allocation. | 
|   6756   raw_ptr()->bitmap_size_in_bytes_ = Smi::New(value); |   6744   raw_ptr()->bitmap_size_in_bytes_ = Smi::New(value); | 
|   6757 } |   6745 } | 
|   6758  |   6746  | 
|   6759  |   6747  | 
|   6760 const char* Stackmap::ToCString() const { |   6748 const char* Stackmap::ToCString() const { | 
|   6761   if (IsNull()) { |   6749   if (IsNull()) { | 
|   6762     return "{null}"; |   6750     return "{null}"; | 
|   6763   } else { |   6751   } else { | 
 |   6752     // Guard against integer overflow, though it is highly unlikely. | 
 |   6753     if (MaximumBitIndex() > kIntptrMax / 4) { | 
 |   6754       FATAL1("MaximumBitIndex() is unexpectedly large (%ld)", | 
 |   6755              MaximumBitIndex()); | 
 |   6756     } | 
|   6764     intptr_t index = OS::SNPrint(NULL, 0, "0x%lx { ", PC()); |   6757     intptr_t index = OS::SNPrint(NULL, 0, "0x%lx { ", PC()); | 
|   6765     intptr_t alloc_size = |   6758     intptr_t alloc_size = | 
|   6766         index + ((MaximumBitIndex() + 1) * 2) + 2;  // "{ 1 0 .... }". |   6759         index + ((MaximumBitIndex() + 1) * 2) + 2;  // "{ 1 0 .... }". | 
|   6767     Isolate* isolate = Isolate::Current(); |   6760     Isolate* isolate = Isolate::Current(); | 
|   6768     char* chars = reinterpret_cast<char*>( |   6761     char* chars = isolate->current_zone()->Alloc<char>(alloc_size); | 
|   6769         isolate->current_zone()->Allocate(alloc_size)); |  | 
|   6770     index = OS::SNPrint(chars, alloc_size, "0x%lx { ", PC()); |   6762     index = OS::SNPrint(chars, alloc_size, "0x%lx { ", PC()); | 
|   6771     for (intptr_t i = 0; i <= MaximumBitIndex(); i++) { |   6763     for (intptr_t i = 0; i <= MaximumBitIndex(); i++) { | 
|   6772       index += OS::SNPrint((chars + index), |   6764       index += OS::SNPrint((chars + index), | 
|   6773                            (alloc_size - index), |   6765                            (alloc_size - index), | 
|   6774                            "%d ", |   6766                            "%d ", | 
|   6775                            IsObject(i) ? 1 : 0); |   6767                            IsObject(i) ? 1 : 0); | 
|   6776     } |   6768     } | 
|   6777     OS::SNPrint((chars + index), (alloc_size - index), "}"); |   6769     OS::SNPrint((chars + index), (alloc_size - index), "}"); | 
|   6778     return chars; |   6770     return chars; | 
|   6779   } |   6771   } | 
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   6899   if (Length() == 0) { |   6891   if (Length() == 0) { | 
|   6900     return "No exception handlers\n"; |   6892     return "No exception handlers\n"; | 
|   6901   } |   6893   } | 
|   6902   // First compute the buffer size required. |   6894   // First compute the buffer size required. | 
|   6903   intptr_t len = 0; |   6895   intptr_t len = 0; | 
|   6904   for (intptr_t i = 0; i < Length(); i++) { |   6896   for (intptr_t i = 0; i < Length(); i++) { | 
|   6905     len += OS::SNPrint(NULL, 0, "%ld => 0x%x\n", |   6897     len += OS::SNPrint(NULL, 0, "%ld => 0x%x\n", | 
|   6906                        TryIndex(i), HandlerPC(i)); |   6898                        TryIndex(i), HandlerPC(i)); | 
|   6907   } |   6899   } | 
|   6908   // Allocate the buffer. |   6900   // Allocate the buffer. | 
|   6909   char* buffer = reinterpret_cast<char*>( |   6901   char* buffer = Isolate::Current()->current_zone()->Alloc<char>(len + 1); | 
|   6910       Isolate::Current()->current_zone()->Allocate(len + 1)); |  | 
|   6911   // Layout the fields in the buffer. |   6902   // Layout the fields in the buffer. | 
|   6912   intptr_t index = 0; |   6903   intptr_t index = 0; | 
|   6913   for (intptr_t i = 0; i < Length(); i++) { |   6904   for (intptr_t i = 0; i < Length(); i++) { | 
|   6914     index += OS::SNPrint((buffer + index), |   6905     index += OS::SNPrint((buffer + index), | 
|   6915                          (len - index), |   6906                          (len - index), | 
|   6916                          "%ld => 0x%x\n", |   6907                          "%ld => 0x%x\n", | 
|   6917                          TryIndex(i), |   6908                          TryIndex(i), | 
|   6918                          HandlerPC(i)); |   6909                          HandlerPC(i)); | 
|   6919   } |   6910   } | 
|   6920   return buffer; |   6911   return buffer; | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
|   6940   if (Length() == 0) { |   6931   if (Length() == 0) { | 
|   6941     return "No DeoptInfo"; |   6932     return "No DeoptInfo"; | 
|   6942   } |   6933   } | 
|   6943   // First compute the buffer size required. |   6934   // First compute the buffer size required. | 
|   6944   intptr_t len = 0; |   6935   intptr_t len = 0; | 
|   6945   for (intptr_t i = 0; i < Length(); i++) { |   6936   for (intptr_t i = 0; i < Length(); i++) { | 
|   6946     len += OS::SNPrint(NULL, 0, "[%d(%d):%d]", |   6937     len += OS::SNPrint(NULL, 0, "[%d(%d):%d]", | 
|   6947         Instruction(i), FromIndex(i), i); |   6938         Instruction(i), FromIndex(i), i); | 
|   6948   } |   6939   } | 
|   6949   // Allocate the buffer. |   6940   // Allocate the buffer. | 
|   6950   char* buffer = reinterpret_cast<char*>( |   6941   char* buffer = Isolate::Current()->current_zone()->Alloc<char>(len + 1); | 
|   6951       Isolate::Current()->current_zone()->Allocate(len + 1)); |  | 
|   6952   // Layout the fields in the buffer. |   6942   // Layout the fields in the buffer. | 
|   6953   intptr_t index = 0; |   6943   intptr_t index = 0; | 
|   6954   for (intptr_t i = 0; i < Length(); i++) { |   6944   for (intptr_t i = 0; i < Length(); i++) { | 
|   6955     index += OS::SNPrint((buffer + index), |   6945     index += OS::SNPrint((buffer + index), | 
|   6956                          (len - index), |   6946                          (len - index), | 
|   6957                          "[%d(%d):%d]", |   6947                          "[%d(%d):%d]", | 
|   6958                          Instruction(i), |   6948                          Instruction(i), | 
|   6959                          FromIndex(i), |   6949                          FromIndex(i), | 
|   6960                          i); |   6950                          i); | 
|   6961   } |   6951   } | 
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   7103   // Embedded pointers are still in handles at this point. |   7093   // Embedded pointers are still in handles at this point. | 
|   7104   MemoryRegion region(reinterpret_cast<void*>(instrs.EntryPoint()), |   7094   MemoryRegion region(reinterpret_cast<void*>(instrs.EntryPoint()), | 
|   7105                       instrs.size()); |   7095                       instrs.size()); | 
|   7106   assembler->FinalizeInstructions(region); |   7096   assembler->FinalizeInstructions(region); | 
|   7107   Dart_FileWriterFunction perf_events_writer = Dart::perf_events_writer(); |   7097   Dart_FileWriterFunction perf_events_writer = Dart::perf_events_writer(); | 
|   7108   if (perf_events_writer != NULL) { |   7098   if (perf_events_writer != NULL) { | 
|   7109     const char* format = "%x %x %s\n"; |   7099     const char* format = "%x %x %s\n"; | 
|   7110     uword addr = instrs.EntryPoint(); |   7100     uword addr = instrs.EntryPoint(); | 
|   7111     uword size = instrs.size(); |   7101     uword size = instrs.size(); | 
|   7112     intptr_t len = OS::SNPrint(NULL, 0, format, addr, size, name); |   7102     intptr_t len = OS::SNPrint(NULL, 0, format, addr, size, name); | 
|   7113     char* buffer = reinterpret_cast<char*>( |   7103     char* buffer = Isolate::Current()->current_zone()->Alloc<char>(len + 1); | 
|   7114         Isolate::Current()->current_zone()->Allocate(len + 1)); |  | 
|   7115     OS::SNPrint(buffer, len + 1, format, addr, size, name); |   7104     OS::SNPrint(buffer, len + 1, format, addr, size, name); | 
|   7116     (*perf_events_writer)(buffer, len); |   7105     (*perf_events_writer)(buffer, len); | 
|   7117   } |   7106   } | 
|   7118   DebugInfo* pprof_symbol_generator = Dart::pprof_symbol_generator(); |   7107   DebugInfo* pprof_symbol_generator = Dart::pprof_symbol_generator(); | 
|   7119   if (pprof_symbol_generator != NULL) { |   7108   if (pprof_symbol_generator != NULL) { | 
|   7120     ASSERT(strlen(name) != 0); |   7109     ASSERT(strlen(name) != 0); | 
|   7121     pprof_symbol_generator->AddCode(instrs.EntryPoint(), instrs.size()); |   7110     pprof_symbol_generator->AddCode(instrs.EntryPoint(), instrs.size()); | 
|   7122     pprof_symbol_generator->AddCodeRegion(name, |   7111     pprof_symbol_generator->AddCodeRegion(name, | 
|   7123                                           instrs.EntryPoint(), |   7112                                           instrs.EntryPoint(), | 
|   7124                                           instrs.size()); |   7113                                           instrs.size()); | 
|   7125   } |   7114   } | 
|   7126   if (FLAG_generate_gdb_symbols) { |   7115   if (FLAG_generate_gdb_symbols) { | 
|   7127     ASSERT(strlen(name) != 0); |   7116     ASSERT(strlen(name) != 0); | 
|   7128     intptr_t prolog_offset = assembler->prolog_offset(); |   7117     intptr_t prolog_offset = assembler->prolog_offset(); | 
|   7129     if (prolog_offset > 0) { |   7118     if (prolog_offset > 0) { | 
|   7130       // In order to ensure that gdb sees the first instruction of a function |   7119       // In order to ensure that gdb sees the first instruction of a function | 
|   7131       // as the prolog sequence we register two symbols for the cases when |   7120       // as the prolog sequence we register two symbols for the cases when | 
|   7132       // the prolog sequence is not the first instruction: |   7121       // the prolog sequence is not the first instruction: | 
|   7133       // <name>_entry is used for code preceding the prolog sequence. |   7122       // <name>_entry is used for code preceding the prolog sequence. | 
|   7134       // <name> for rest of the code (first instruction is prolog sequence). |   7123       // <name> for rest of the code (first instruction is prolog sequence). | 
|   7135       const char* kFormat = "%s_%s"; |   7124       const char* kFormat = "%s_%s"; | 
|   7136       intptr_t len = OS::SNPrint(NULL, 0, kFormat, name, "entry"); |   7125       intptr_t len = OS::SNPrint(NULL, 0, kFormat, name, "entry"); | 
|   7137       char* pname = reinterpret_cast<char*>( |   7126       char* pname = Isolate::Current()->current_zone()->Alloc<char>(len + 1); | 
|   7138           Isolate::Current()->current_zone()->Allocate(len + 1)); |  | 
|   7139       OS::SNPrint(pname, (len + 1), kFormat, name, "entry"); |   7127       OS::SNPrint(pname, (len + 1), kFormat, name, "entry"); | 
|   7140       DebugInfo::RegisterSection(pname, instrs.EntryPoint(), prolog_offset); |   7128       DebugInfo::RegisterSection(pname, instrs.EntryPoint(), prolog_offset); | 
|   7141       DebugInfo::RegisterSection(name, |   7129       DebugInfo::RegisterSection(name, | 
|   7142                                  (instrs.EntryPoint() + prolog_offset), |   7130                                  (instrs.EntryPoint() + prolog_offset), | 
|   7143                                  (instrs.size() - prolog_offset)); |   7131                                  (instrs.size() - prolog_offset)); | 
|   7144     } else { |   7132     } else { | 
|   7145       DebugInfo::RegisterSection(name, instrs.EntryPoint(), instrs.size()); |   7133       DebugInfo::RegisterSection(name, instrs.EntryPoint(), instrs.size()); | 
|   7146     } |   7134     } | 
|   7147   } |   7135   } | 
|   7148  |   7136  | 
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   7224       return descriptors.PC(i); |   7212       return descriptors.PC(i); | 
|   7225     } |   7213     } | 
|   7226   } |   7214   } | 
|   7227   return 0; |   7215   return 0; | 
|   7228 } |   7216 } | 
|   7229  |   7217  | 
|   7230  |   7218  | 
|   7231 const char* Code::ToCString() const { |   7219 const char* Code::ToCString() const { | 
|   7232   const char* kFormat = "Code entry:0x%d"; |   7220   const char* kFormat = "Code entry:0x%d"; | 
|   7233   intptr_t len = OS::SNPrint(NULL, 0, kFormat, EntryPoint()); |   7221   intptr_t len = OS::SNPrint(NULL, 0, kFormat, EntryPoint()); | 
|   7234   char* chars = reinterpret_cast<char*>( |   7222   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
|   7235       Isolate::Current()->current_zone()->Allocate(len)); |  | 
|   7236   OS::SNPrint(chars, len, kFormat, EntryPoint()); |   7223   OS::SNPrint(chars, len, kFormat, EntryPoint()); | 
|   7237   return chars; |   7224   return chars; | 
|   7238 } |   7225 } | 
|   7239  |   7226  | 
|   7240  |   7227  | 
|   7241 uword Code::GetPatchCodePc() const { |   7228 uword Code::GetPatchCodePc() const { | 
|   7242   const PcDescriptors& descriptors = PcDescriptors::Handle(pc_descriptors()); |   7229   const PcDescriptors& descriptors = PcDescriptors::Handle(pc_descriptors()); | 
|   7243   for (intptr_t i = 0; i < descriptors.Length(); i++) { |   7230   for (intptr_t i = 0; i < descriptors.Length(); i++) { | 
|   7244     if (descriptors.DescriptorKind(i) == PcDescriptors::kPatchCode) { |   7231     if (descriptors.DescriptorKind(i) == PcDescriptors::kPatchCode) { | 
|   7245       return descriptors.PC(i); |   7232       return descriptors.PC(i); | 
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   7426  |   7413  | 
|   7427 const char* ContextScope::ToCString() const { |   7414 const char* ContextScope::ToCString() const { | 
|   7428   return "ContextScope"; |   7415   return "ContextScope"; | 
|   7429 } |   7416 } | 
|   7430  |   7417  | 
|   7431  |   7418  | 
|   7432 const char* ICData::ToCString() const { |   7419 const char* ICData::ToCString() const { | 
|   7433   const char* kFormat = "ICData target:%s"; |   7420   const char* kFormat = "ICData target:%s"; | 
|   7434   const String& name = String::Handle(target_name()); |   7421   const String& name = String::Handle(target_name()); | 
|   7435   intptr_t len = OS::SNPrint(NULL, 0, kFormat, name.ToCString()) + 1; |   7422   intptr_t len = OS::SNPrint(NULL, 0, kFormat, name.ToCString()) + 1; | 
|   7436   char* chars = reinterpret_cast<char*>( |   7423   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
|   7437       Isolate::Current()->current_zone()->Allocate(len)); |  | 
|   7438   OS::SNPrint(chars, len, kFormat, name.ToCString()); |   7424   OS::SNPrint(chars, len, kFormat, name.ToCString()); | 
|   7439   return chars; |   7425   return chars; | 
|   7440 } |   7426 } | 
|   7441  |   7427  | 
|   7442  |   7428  | 
|   7443 void ICData::set_function(const Function& value) const { |   7429 void ICData::set_function(const Function& value) const { | 
|   7444   StorePointer(&raw_ptr()->function_, value.raw()); |   7430   StorePointer(&raw_ptr()->function_, value.raw()); | 
|   7445 } |   7431 } | 
|   7446  |   7432  | 
|   7447  |   7433  | 
| (...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   7847   const char* stack_str = |   7833   const char* stack_str = | 
|   7848       "<Received error while converting stack trace to string>"; |   7834       "<Received error while converting stack trace to string>"; | 
|   7849   if (!strtmp.IsError()) { |   7835   if (!strtmp.IsError()) { | 
|   7850     stack_str = strtmp.ToCString(); |   7836     stack_str = strtmp.ToCString(); | 
|   7851   } |   7837   } | 
|   7852  |   7838  | 
|   7853   const char* format = "Unhandled exception:\n%s\n%s"; |   7839   const char* format = "Unhandled exception:\n%s\n%s"; | 
|   7854   int len = (strlen(exc_str) + strlen(stack_str) + strlen(format) |   7840   int len = (strlen(exc_str) + strlen(stack_str) + strlen(format) | 
|   7855              - 4    // Two '%s' |   7841              - 4    // Two '%s' | 
|   7856              + 1);  // '\0' |   7842              + 1);  // '\0' | 
|   7857   char* chars = reinterpret_cast<char*>(isolate->current_zone()->Allocate(len)); |   7843   char* chars = isolate->current_zone()->Alloc<char>(len); | 
|   7858   OS::SNPrint(chars, len, format, exc_str, stack_str); |   7844   OS::SNPrint(chars, len, format, exc_str, stack_str); | 
|   7859   return chars; |   7845   return chars; | 
|   7860 } |   7846 } | 
|   7861  |   7847  | 
|   7862  |   7848  | 
|   7863 const char* UnhandledException::ToCString() const { |   7849 const char* UnhandledException::ToCString() const { | 
|   7864   return "UnhandledException"; |   7850   return "UnhandledException"; | 
|   7865 } |   7851 } | 
|   7866  |   7852  | 
|   7867  |   7853  | 
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   8131     AbstractTypeArguments& type_arguments = AbstractTypeArguments::Handle(); |   8117     AbstractTypeArguments& type_arguments = AbstractTypeArguments::Handle(); | 
|   8132     const intptr_t num_type_arguments = cls.NumTypeArguments(); |   8118     const intptr_t num_type_arguments = cls.NumTypeArguments(); | 
|   8133     if (num_type_arguments > 0) { |   8119     if (num_type_arguments > 0) { | 
|   8134       type_arguments = GetTypeArguments(); |   8120       type_arguments = GetTypeArguments(); | 
|   8135     } |   8121     } | 
|   8136     const Type& type = |   8122     const Type& type = | 
|   8137         Type::Handle(Type::New(cls, type_arguments, Scanner::kDummyTokenIndex)); |   8123         Type::Handle(Type::New(cls, type_arguments, Scanner::kDummyTokenIndex)); | 
|   8138     const String& type_name = String::Handle(type.Name()); |   8124     const String& type_name = String::Handle(type.Name()); | 
|   8139     // Calculate the size of the string. |   8125     // Calculate the size of the string. | 
|   8140     intptr_t len = OS::SNPrint(NULL, 0, kFormat, type_name.ToCString()) + 1; |   8126     intptr_t len = OS::SNPrint(NULL, 0, kFormat, type_name.ToCString()) + 1; | 
|   8141     char* chars = reinterpret_cast<char*>( |   8127     char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
|   8142         Isolate::Current()->current_zone()->Allocate(len)); |  | 
|   8143     OS::SNPrint(chars, len, kFormat, type_name.ToCString()); |   8128     OS::SNPrint(chars, len, kFormat, type_name.ToCString()); | 
|   8144     return chars; |   8129     return chars; | 
|   8145   } |   8130   } | 
|   8146 } |   8131 } | 
|   8147  |   8132  | 
|   8148  |   8133  | 
|   8149 const char* Number::ToCString() const { |   8134 const char* Number::ToCString() const { | 
|   8150   // Number is an interface. No instances of Number should exist. |   8135   // Number is an interface. No instances of Number should exist. | 
|   8151   UNREACHABLE(); |   8136   UNREACHABLE(); | 
|   8152   return "Number"; |   8137   return "Number"; | 
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   8256   } |   8241   } | 
|   8257   UNREACHABLE(); |   8242   UNREACHABLE(); | 
|   8258   return 0; |   8243   return 0; | 
|   8259 } |   8244 } | 
|   8260  |   8245  | 
|   8261  |   8246  | 
|   8262 const char* Smi::ToCString() const { |   8247 const char* Smi::ToCString() const { | 
|   8263   const char* kFormat = "%ld"; |   8248   const char* kFormat = "%ld"; | 
|   8264   // Calculate the size of the string. |   8249   // Calculate the size of the string. | 
|   8265   intptr_t len = OS::SNPrint(NULL, 0, kFormat, Value()) + 1; |   8250   intptr_t len = OS::SNPrint(NULL, 0, kFormat, Value()) + 1; | 
|   8266   char* chars = reinterpret_cast<char*>( |   8251   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
|   8267       Isolate::Current()->current_zone()->Allocate(len)); |  | 
|   8268   OS::SNPrint(chars, len, kFormat, Value()); |   8252   OS::SNPrint(chars, len, kFormat, Value()); | 
|   8269   return chars; |   8253   return chars; | 
|   8270 } |   8254 } | 
|   8271  |   8255  | 
|   8272  |   8256  | 
|   8273 RawClass* Smi::Class() { |   8257 RawClass* Smi::Class() { | 
|   8274   return Isolate::Current()->object_store()->smi_class(); |   8258   return Isolate::Current()->object_store()->smi_class(); | 
|   8275 } |   8259 } | 
|   8276  |   8260  | 
|   8277  |   8261  | 
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   8371   } |   8355   } | 
|   8372   UNREACHABLE(); |   8356   UNREACHABLE(); | 
|   8373   return 0; |   8357   return 0; | 
|   8374 } |   8358 } | 
|   8375  |   8359  | 
|   8376  |   8360  | 
|   8377 const char* Mint::ToCString() const { |   8361 const char* Mint::ToCString() const { | 
|   8378   const char* kFormat = "%lld"; |   8362   const char* kFormat = "%lld"; | 
|   8379   // Calculate the size of the string. |   8363   // Calculate the size of the string. | 
|   8380   intptr_t len = OS::SNPrint(NULL, 0, kFormat, value()) + 1; |   8364   intptr_t len = OS::SNPrint(NULL, 0, kFormat, value()) + 1; | 
|   8381   char* chars = reinterpret_cast<char*>( |   8365   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
|   8382       Isolate::Current()->current_zone()->Allocate(len)); |  | 
|   8383   OS::SNPrint(chars, len, kFormat, value()); |   8366   OS::SNPrint(chars, len, kFormat, value()); | 
|   8384   return chars; |   8367   return chars; | 
|   8385 } |   8368 } | 
|   8386  |   8369  | 
|   8387  |   8370  | 
|   8388 void Double::set_value(double value) const { |   8371 void Double::set_value(double value) const { | 
|   8389   raw_ptr()->value_ = value; |   8372   raw_ptr()->value_ = value; | 
|   8390 } |   8373 } | 
|   8391  |   8374  | 
|   8392  |   8375  | 
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   8492  |   8475  | 
|   8493  |   8476  | 
|   8494 const char* Double::ToCString() const { |   8477 const char* Double::ToCString() const { | 
|   8495   if (isnan(value())) { |   8478   if (isnan(value())) { | 
|   8496     return "NaN"; |   8479     return "NaN"; | 
|   8497   } |   8480   } | 
|   8498   if (isinf(value())) { |   8481   if (isinf(value())) { | 
|   8499     return value() < 0 ? "-Infinity" : "Infinity"; |   8482     return value() < 0 ? "-Infinity" : "Infinity"; | 
|   8500   } |   8483   } | 
|   8501   const int kBufferSize = 128; |   8484   const int kBufferSize = 128; | 
|   8502   char* buffer = reinterpret_cast<char*>( |   8485   char* buffer = Isolate::Current()->current_zone()->Alloc<char>(kBufferSize); | 
|   8503       Isolate::Current()->current_zone()->Allocate(kBufferSize)); |  | 
|   8504   buffer[kBufferSize - 1] = '\0'; |   8486   buffer[kBufferSize - 1] = '\0'; | 
|   8505   DoubleToCString(value(), buffer, kBufferSize); |   8487   DoubleToCString(value(), buffer, kBufferSize); | 
|   8506   return buffer; |   8488   return buffer; | 
|   8507 } |   8489 } | 
|   8508  |   8490  | 
|   8509  |   8491  | 
|   8510 bool Bigint::Equals(const Instance& other) const { |   8492 bool Bigint::Equals(const Instance& other) const { | 
|   8511   if (this->raw() == other.raw()) { |   8493   if (this->raw() == other.raw()) { | 
|   8512     // Both handles point to the same raw instance. |   8494     // Both handles point to the same raw instance. | 
|   8513     return true; |   8495     return true; | 
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   8583                                       space); |   8565                                       space); | 
|   8584     NoGCScope no_gc; |   8566     NoGCScope no_gc; | 
|   8585     result ^= raw; |   8567     result ^= raw; | 
|   8586     result.raw_ptr()->allocated_length_ = length;  // Chunk length allocated. |   8568     result.raw_ptr()->allocated_length_ = length;  // Chunk length allocated. | 
|   8587     result.raw_ptr()->signed_length_ = length;  // Chunk length in use. |   8569     result.raw_ptr()->signed_length_ = length;  // Chunk length in use. | 
|   8588   } |   8570   } | 
|   8589   return result.raw(); |   8571   return result.raw(); | 
|   8590 } |   8572 } | 
|   8591  |   8573  | 
|   8592  |   8574  | 
|   8593 static uword ZoneAllocator(intptr_t size) { |   8575 static uword BigintAllocator(intptr_t size) { | 
|   8594   Zone* zone = Isolate::Current()->current_zone(); |   8576   Zone* zone = Isolate::Current()->current_zone(); | 
|   8595   return zone->Allocate(size); |   8577   return zone->AllocUnsafe(size); | 
|   8596 } |   8578 } | 
|   8597  |   8579  | 
|   8598  |   8580  | 
|   8599 const char* Bigint::ToCString() const { |   8581 const char* Bigint::ToCString() const { | 
|   8600   return BigintOperations::ToDecimalCString(*this, &ZoneAllocator); |   8582   return BigintOperations::ToDecimalCString(*this, &BigintAllocator); | 
|   8601 } |   8583 } | 
|   8602  |   8584  | 
|   8603  |   8585  | 
|   8604 class StringHasher : ValueObject { |   8586 class StringHasher : ValueObject { | 
|   8605  public: |   8587  public: | 
|   8606   StringHasher() : hash_(0) {} |   8588   StringHasher() : hash_(0) {} | 
|   8607   void Add(int32_t ch) { |   8589   void Add(int32_t ch) { | 
|   8608     hash_ += ch; |   8590     hash_ += ch; | 
|   8609     hash_ += hash_ << 10; |   8591     hash_ += hash_ << 10; | 
|   8610     hash_ ^= hash_ >> 6; |   8592     hash_ ^= hash_ >> 6; | 
| (...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   9087 } |   9069 } | 
|   9088  |   9070  | 
|   9089  |   9071  | 
|   9090 RawString* String::NewFormatted(const char* format, ...) { |   9072 RawString* String::NewFormatted(const char* format, ...) { | 
|   9091   va_list args; |   9073   va_list args; | 
|   9092   va_start(args, format); |   9074   va_start(args, format); | 
|   9093   intptr_t len = OS::VSNPrint(NULL, 0, format, args); |   9075   intptr_t len = OS::VSNPrint(NULL, 0, format, args); | 
|   9094   va_end(args); |   9076   va_end(args); | 
|   9095  |   9077  | 
|   9096   Zone* zone = Isolate::Current()->current_zone(); |   9078   Zone* zone = Isolate::Current()->current_zone(); | 
|   9097   char* buffer = reinterpret_cast<char*>(zone->Allocate(len + 1)); |   9079   char* buffer = zone->Alloc<char>(len + 1); | 
|   9098   va_list args2; |   9080   va_list args2; | 
|   9099   va_start(args2, format); |   9081   va_start(args2, format); | 
|   9100   OS::VSNPrint(buffer, (len + 1), format, args2); |   9082   OS::VSNPrint(buffer, (len + 1), format, args2); | 
|   9101   va_end(args2); |   9083   va_end(args2); | 
|   9102  |   9084  | 
|   9103   return String::New(buffer); |   9085   return String::New(buffer); | 
|   9104 } |   9086 } | 
|   9105  |   9087  | 
|   9106  |   9088  | 
|   9107 RawString* String::Concat(const String& str1, |   9089 RawString* String::Concat(const String& str1, | 
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   9192     result ^= FourByteString::New(length, space); |   9174     result ^= FourByteString::New(length, space); | 
|   9193   } |   9175   } | 
|   9194   String::Copy(result, 0, str, begin_index, length); |   9176   String::Copy(result, 0, str, begin_index, length); | 
|   9195   return result.raw(); |   9177   return result.raw(); | 
|   9196 } |   9178 } | 
|   9197  |   9179  | 
|   9198  |   9180  | 
|   9199 const char* String::ToCString() const { |   9181 const char* String::ToCString() const { | 
|   9200   intptr_t len = Utf8::Length(*this); |   9182   intptr_t len = Utf8::Length(*this); | 
|   9201   Zone* zone = Isolate::Current()->current_zone(); |   9183   Zone* zone = Isolate::Current()->current_zone(); | 
|   9202   char* result = reinterpret_cast<char*>(zone->Allocate(len + 1)); |   9184   char* result = zone->Alloc<char>(len + 1); | 
|   9203   Utf8::Encode(*this, result, len); |   9185   Utf8::Encode(*this, result, len); | 
|   9204   result[len] = 0; |   9186   result[len] = 0; | 
|   9205   return result; |   9187   return result; | 
|   9206 } |   9188 } | 
|   9207  |   9189  | 
|   9208  |   9190  | 
|   9209 RawString* String::Transform(int32_t (*mapping)(int32_t ch), |   9191 RawString* String::Transform(int32_t (*mapping)(int32_t ch), | 
|   9210                              const String& str, |   9192                              const String& str, | 
|   9211                              Heap::Space space) { |   9193                              Heap::Space space) { | 
|   9212   ASSERT(!str.IsNull()); |   9194   ASSERT(!str.IsNull()); | 
| (...skipping 1578 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  10791  |  10773  | 
|  10792  |  10774  | 
|  10793 const char* Closure::ToCString() const { |  10775 const char* Closure::ToCString() const { | 
|  10794   const Function& fun = Function::Handle(function()); |  10776   const Function& fun = Function::Handle(function()); | 
|  10795   const bool is_implicit_closure = fun.IsImplicitClosureFunction(); |  10777   const bool is_implicit_closure = fun.IsImplicitClosureFunction(); | 
|  10796   const char* fun_sig = String::Handle(fun.Signature()).ToCString(); |  10778   const char* fun_sig = String::Handle(fun.Signature()).ToCString(); | 
|  10797   const char* from = is_implicit_closure ? " from " : ""; |  10779   const char* from = is_implicit_closure ? " from " : ""; | 
|  10798   const char* fun_desc = is_implicit_closure ? fun.ToCString() : ""; |  10780   const char* fun_desc = is_implicit_closure ? fun.ToCString() : ""; | 
|  10799   const char* format = "Closure: %s%s%s"; |  10781   const char* format = "Closure: %s%s%s"; | 
|  10800   intptr_t len = OS::SNPrint(NULL, 0, format, fun_sig, from, fun_desc) + 1; |  10782   intptr_t len = OS::SNPrint(NULL, 0, format, fun_sig, from, fun_desc) + 1; | 
|  10801   char* chars = reinterpret_cast<char*>( |  10783   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
|  10802       Isolate::Current()->current_zone()->Allocate(len)); |  | 
|  10803   OS::SNPrint(chars, len, format, fun_sig, from, fun_desc); |  10784   OS::SNPrint(chars, len, format, fun_sig, from, fun_desc); | 
|  10804   return chars; |  10785   return chars; | 
|  10805 } |  10786 } | 
|  10806  |  10787  | 
|  10807  |  10788  | 
|  10808 intptr_t Stacktrace::Length() const { |  10789 intptr_t Stacktrace::Length() const { | 
|  10809   const Array& code_array = Array::Handle(raw_ptr()->code_array_); |  10790   const Array& code_array = Array::Handle(raw_ptr()->code_array_); | 
|  10810   return code_array.Length(); |  10791   return code_array.Length(); | 
|  10811 } |  10792 } | 
|  10812  |  10793  | 
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  10954     } |  10935     } | 
|  10955     intptr_t len = OS::SNPrint(NULL, 0, kFormat, |  10936     intptr_t len = OS::SNPrint(NULL, 0, kFormat, | 
|  10956                                i, |  10937                                i, | 
|  10957                                class_name.ToCString(), |  10938                                class_name.ToCString(), | 
|  10958                                function_class.IsTopLevel() ? "" : ".", |  10939                                function_class.IsTopLevel() ? "" : ".", | 
|  10959                                function_name.ToCString(), |  10940                                function_name.ToCString(), | 
|  10960                                url.ToCString(), |  10941                                url.ToCString(), | 
|  10961                                line, column, |  10942                                line, column, | 
|  10962                                code.EntryPoint()); |  10943                                code.EntryPoint()); | 
|  10963     total_len += len; |  10944     total_len += len; | 
|  10964     char* chars = reinterpret_cast<char*>( |  10945     char* chars = Isolate::Current()->current_zone()->Alloc<char>(len + 1); | 
|  10965         Isolate::Current()->current_zone()->Allocate(len + 1)); |  | 
|  10966     OS::SNPrint(chars, (len + 1), kFormat, |  10946     OS::SNPrint(chars, (len + 1), kFormat, | 
|  10967                 i, |  10947                 i, | 
|  10968                 class_name.ToCString(), |  10948                 class_name.ToCString(), | 
|  10969                 function_class.IsTopLevel() ? "" : ".", |  10949                 function_class.IsTopLevel() ? "" : ".", | 
|  10970                 function_name.ToCString(), |  10950                 function_name.ToCString(), | 
|  10971                 url.ToCString(), |  10951                 url.ToCString(), | 
|  10972                 line, column, |  10952                 line, column, | 
|  10973                 code.EntryPoint()); |  10953                 code.EntryPoint()); | 
|  10974     frame_strings.Add(chars); |  10954     frame_strings.Add(chars); | 
|  10975   } |  10955   } | 
|  10976  |  10956  | 
|  10977   // Now concatentate the frame descriptions into a single C string. |  10957   // Now concatentate the frame descriptions into a single C string. | 
|  10978   char* chars = reinterpret_cast<char*>( |  10958   char* chars = Isolate::Current()->current_zone()->Alloc<char>(total_len + 1); | 
|  10979       Isolate::Current()->current_zone()->Allocate(total_len + 1)); |  | 
|  10980   intptr_t index = 0; |  10959   intptr_t index = 0; | 
|  10981   for (intptr_t i = 0; i < frame_strings.length(); i++) { |  10960   for (intptr_t i = 0; i < frame_strings.length(); i++) { | 
|  10982     index += OS::SNPrint((chars + index), |  10961     index += OS::SNPrint((chars + index), | 
|  10983                          (total_len + 1 - index), |  10962                          (total_len + 1 - index), | 
|  10984                          "%s", |  10963                          "%s", | 
|  10985                          frame_strings[i]); |  10964                          frame_strings[i]); | 
|  10986   } |  10965   } | 
|  10987   return chars; |  10966   return chars; | 
|  10988 } |  10967 } | 
|  10989  |  10968  | 
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  11078     return false; |  11057     return false; | 
|  11079   } |  11058   } | 
|  11080   return true; |  11059   return true; | 
|  11081 } |  11060 } | 
|  11082  |  11061  | 
|  11083  |  11062  | 
|  11084 const char* JSRegExp::ToCString() const { |  11063 const char* JSRegExp::ToCString() const { | 
|  11085   const String& str = String::Handle(pattern()); |  11064   const String& str = String::Handle(pattern()); | 
|  11086   const char* format = "JSRegExp: pattern=%s flags=%s"; |  11065   const char* format = "JSRegExp: pattern=%s flags=%s"; | 
|  11087   intptr_t len = OS::SNPrint(NULL, 0, format, str.ToCString(), Flags()); |  11066   intptr_t len = OS::SNPrint(NULL, 0, format, str.ToCString(), Flags()); | 
|  11088   char* chars = reinterpret_cast<char*>( |  11067   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len + 1); | 
|  11089       Isolate::Current()->current_zone()->Allocate(len + 1)); |  | 
|  11090   OS::SNPrint(chars, (len + 1), format, str.ToCString(), Flags()); |  11068   OS::SNPrint(chars, (len + 1), format, str.ToCString(), Flags()); | 
|  11091   return chars; |  11069   return chars; | 
|  11092 } |  11070 } | 
|  11093  |  11071  | 
|  11094 }  // namespace dart |  11072 }  // namespace dart | 
| OLD | NEW |