| 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 19339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 19350 old_tags); | 19350 old_tags); |
| 19351 tags = CompareAndSwapTags(old_tags, new_tags); | 19351 tags = CompareAndSwapTags(old_tags, new_tags); |
| 19352 } while (tags != old_tags); | 19352 } while (tags != old_tags); |
| 19353 } | 19353 } |
| 19354 | 19354 |
| 19355 | 19355 |
| 19356 const char* Array::ToCString() const { | 19356 const char* Array::ToCString() const { |
| 19357 if (IsNull()) { | 19357 if (IsNull()) { |
| 19358 return IsImmutable() ? "_ImmutableList NULL" : "_List NULL"; | 19358 return IsImmutable() ? "_ImmutableList NULL" : "_List NULL"; |
| 19359 } | 19359 } |
| 19360 const char* format = IsImmutable() ? | 19360 Zone* zone = Isolate::Current()->current_zone(); |
| 19361 "_ImmutableList len:%" Pd : "_List len:%" Pd; | 19361 const char* format = IsImmutable() ? "_ImmutableList len:%" Pd |
| 19362 intptr_t len = OS::SNPrint(NULL, 0, format, Length()) + 1; | 19362 : "_List len:%" Pd; |
| 19363 char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 19363 return zone->PrintToString(format, Length()); |
| 19364 OS::SNPrint(chars, len, format, Length()); | |
| 19365 return chars; | |
| 19366 } | 19364 } |
| 19367 | 19365 |
| 19368 | 19366 |
| 19369 void Array::PrintJSONImpl(JSONStream* stream, bool ref) const { | 19367 void Array::PrintJSONImpl(JSONStream* stream, bool ref) const { |
| 19370 JSONObject jsobj(stream); | 19368 JSONObject jsobj(stream); |
| 19371 PrintSharedInstanceJSON(&jsobj, ref); | 19369 PrintSharedInstanceJSON(&jsobj, ref); |
| 19372 jsobj.AddProperty("kind", "List"); | 19370 jsobj.AddProperty("kind", "List"); |
| 19373 jsobj.AddServiceId(*this); | 19371 jsobj.AddServiceId(*this); |
| 19374 jsobj.AddProperty("length", Length()); | 19372 jsobj.AddProperty("length", Length()); |
| 19375 if (ref) { | 19373 if (ref) { |
| 19376 return; | 19374 return; |
| 19377 } | 19375 } |
| 19378 { | 19376 { |
| 19379 JSONArray jsarr(&jsobj, "elements"); | 19377 JSONArray jsarr(&jsobj, "elements"); |
| 19378 Object& element = Object::Handle(); |
| 19380 for (intptr_t index = 0; index < Length(); index++) { | 19379 for (intptr_t index = 0; index < Length(); index++) { |
| 19381 JSONObject jselement(&jsarr); | 19380 JSONObject jselement(&jsarr); |
| 19382 jselement.AddProperty("index", index); | 19381 jselement.AddProperty("index", index); |
| 19383 | 19382 |
| 19384 Object& element = Object::Handle(At(index)); | 19383 element = At(index); |
| 19385 jselement.AddProperty("value", element); | 19384 jselement.AddProperty("value", element); |
| 19386 } | 19385 } |
| 19387 } | 19386 } |
| 19388 } | 19387 } |
| 19389 | 19388 |
| 19390 | 19389 |
| 19391 RawArray* Array::Grow(const Array& source, | 19390 RawArray* Array::Grow(const Array& source, |
| 19392 intptr_t new_length, | 19391 intptr_t new_length, |
| 19393 Heap::Space space) { | 19392 Heap::Space space) { |
| 19394 Isolate* isolate = Isolate::Current(); | 19393 Isolate* isolate = Isolate::Current(); |
| (...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 19616 JSONObject jsobj(stream); | 19615 JSONObject jsobj(stream); |
| 19617 PrintSharedInstanceJSON(&jsobj, ref); | 19616 PrintSharedInstanceJSON(&jsobj, ref); |
| 19618 jsobj.AddProperty("kind", "List"); | 19617 jsobj.AddProperty("kind", "List"); |
| 19619 jsobj.AddServiceId(*this); | 19618 jsobj.AddServiceId(*this); |
| 19620 jsobj.AddProperty("length", Length()); | 19619 jsobj.AddProperty("length", Length()); |
| 19621 if (ref) { | 19620 if (ref) { |
| 19622 return; | 19621 return; |
| 19623 } | 19622 } |
| 19624 { | 19623 { |
| 19625 JSONArray jsarr(&jsobj, "elements"); | 19624 JSONArray jsarr(&jsobj, "elements"); |
| 19625 Object& element = Object::Handle(); |
| 19626 for (intptr_t index = 0; index < Length(); index++) { | 19626 for (intptr_t index = 0; index < Length(); index++) { |
| 19627 JSONObject jselement(&jsarr); | 19627 JSONObject jselement(&jsarr); |
| 19628 jselement.AddProperty("index", index); | 19628 jselement.AddProperty("index", index); |
| 19629 | 19629 |
| 19630 Object& element = Object::Handle(At(index)); | 19630 element = At(index); |
| 19631 jselement.AddProperty("value", element); | 19631 jselement.AddProperty("value", element); |
| 19632 } | 19632 } |
| 19633 } | 19633 } |
| 19634 } | 19634 } |
| 19635 | 19635 |
| 19636 | 19636 |
| 19637 // Equivalent to Dart's operator "==" and hashCode. | 19637 // Equivalent to Dart's operator "==" and hashCode. |
| 19638 class DefaultHashTraits { | 19638 class DefaultHashTraits { |
| 19639 public: | 19639 public: |
| 19640 static bool IsMatch(const Object& a, const Object& b) { | 19640 static bool IsMatch(const Object& a, const Object& b) { |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 19708 LinkedHashMap::InstanceSize(), | 19708 LinkedHashMap::InstanceSize(), |
| 19709 space); | 19709 space); |
| 19710 NoSafepointScope no_safepoint; | 19710 NoSafepointScope no_safepoint; |
| 19711 result ^= raw; | 19711 result ^= raw; |
| 19712 } | 19712 } |
| 19713 return result.raw(); | 19713 return result.raw(); |
| 19714 } | 19714 } |
| 19715 | 19715 |
| 19716 | 19716 |
| 19717 const char* LinkedHashMap::ToCString() const { | 19717 const char* LinkedHashMap::ToCString() const { |
| 19718 // TODO(koda): Print key/value pairs. | 19718 Zone* zone = Isolate::Current()->current_zone(); |
| 19719 return "_LinkedHashMap"; | 19719 return zone->PrintToString("_LinkedHashMap len:%" Pd, Length()); |
| 19720 } | 19720 } |
| 19721 | 19721 |
| 19722 | 19722 |
| 19723 void LinkedHashMap::PrintJSONImpl(JSONStream* stream, bool ref) const { | 19723 void LinkedHashMap::PrintJSONImpl(JSONStream* stream, bool ref) const { |
| 19724 JSONObject jsobj(stream); | 19724 JSONObject jsobj(stream); |
| 19725 PrintSharedInstanceJSON(&jsobj, ref); | 19725 PrintSharedInstanceJSON(&jsobj, ref); |
| 19726 jsobj.AddProperty("kind", "Map"); | 19726 jsobj.AddProperty("kind", "Map"); |
| 19727 jsobj.AddServiceId(*this); | 19727 jsobj.AddServiceId(*this); |
| 19728 // TODO(koda): Print length. | 19728 jsobj.AddProperty("length", Length()); |
| 19729 if (ref) { | 19729 if (ref) { |
| 19730 return; | 19730 return; |
| 19731 } | 19731 } |
| 19732 // TODO(koda): Print key/value pairs. | 19732 { |
| 19733 JSONArray jsarr(&jsobj, "associations"); |
| 19734 Object& object = Object::Handle(); |
| 19735 LinkedHashMap::Iterator iterator(*this); |
| 19736 while (iterator.MoveNext()) { |
| 19737 JSONObject jsassoc(&jsarr); |
| 19738 object = iterator.CurrentKey(); |
| 19739 jsassoc.AddProperty("key", object); |
| 19740 object = iterator.CurrentValue(); |
| 19741 jsassoc.AddProperty("value", object); |
| 19742 } |
| 19743 } |
| 19733 } | 19744 } |
| 19734 | 19745 |
| 19735 | 19746 |
| 19736 RawFloat32x4* Float32x4::New(float v0, float v1, float v2, float v3, | 19747 RawFloat32x4* Float32x4::New(float v0, float v1, float v2, float v3, |
| 19737 Heap::Space space) { | 19748 Heap::Space space) { |
| 19738 ASSERT(Isolate::Current()->object_store()->float32x4_class() != | 19749 ASSERT(Isolate::Current()->object_store()->float32x4_class() != |
| 19739 Class::null()); | 19750 Class::null()); |
| 19740 Float32x4& result = Float32x4::Handle(); | 19751 Float32x4& result = Float32x4::Handle(); |
| 19741 { | 19752 { |
| 19742 RawObject* raw = Object::Allocate(Float32x4::kClassId, | 19753 RawObject* raw = Object::Allocate(Float32x4::kClassId, |
| (...skipping 1072 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 20815 return tag_label.ToCString(); | 20826 return tag_label.ToCString(); |
| 20816 } | 20827 } |
| 20817 | 20828 |
| 20818 | 20829 |
| 20819 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { | 20830 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { |
| 20820 Instance::PrintJSONImpl(stream, ref); | 20831 Instance::PrintJSONImpl(stream, ref); |
| 20821 } | 20832 } |
| 20822 | 20833 |
| 20823 | 20834 |
| 20824 } // namespace dart | 20835 } // namespace dart |
| OLD | NEW |