| 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 12851 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12862 | 12862 |
| 12863 void ICData::PrintToJSONArray(const JSONArray& jsarray, | 12863 void ICData::PrintToJSONArray(const JSONArray& jsarray, |
| 12864 intptr_t token_pos, | 12864 intptr_t token_pos, |
| 12865 bool is_static_call) const { | 12865 bool is_static_call) const { |
| 12866 Isolate* isolate = Isolate::Current(); | 12866 Isolate* isolate = Isolate::Current(); |
| 12867 Class& cls = Class::Handle(); | 12867 Class& cls = Class::Handle(); |
| 12868 Function& func = Function::Handle(); | 12868 Function& func = Function::Handle(); |
| 12869 | 12869 |
| 12870 JSONObject jsobj(&jsarray); | 12870 JSONObject jsobj(&jsarray); |
| 12871 jsobj.AddProperty("name", String::Handle(target_name()).ToCString()); | 12871 jsobj.AddProperty("name", String::Handle(target_name()).ToCString()); |
| 12872 // TODO(turnidge): Use AddLocation instead. | |
| 12873 jsobj.AddProperty("tokenPos", token_pos); | 12872 jsobj.AddProperty("tokenPos", token_pos); |
| 12874 // TODO(rmacnak): Figure out how to stringify DeoptReasons(). | 12873 // TODO(rmacnak): Figure out how to stringify DeoptReasons(). |
| 12875 // jsobj.AddProperty("deoptReasons", ...); | 12874 // jsobj.AddProperty("deoptReasons", ...); |
| 12876 | 12875 |
| 12877 JSONArray cache_entries(&jsobj, "cacheEntries"); | 12876 JSONArray cache_entries(&jsobj, "cacheEntries"); |
| 12878 for (intptr_t i = 0; i < NumberOfChecks(); i++) { | 12877 for (intptr_t i = 0; i < NumberOfChecks(); i++) { |
| 12879 func = GetTargetAt(i); | 12878 func = GetTargetAt(i); |
| 12880 if (is_static_call) { | 12879 if (is_static_call) { |
| 12881 cls ^= func.Owner(); | 12880 cls ^= func.Owner(); |
| 12882 } else { | 12881 } else { |
| 12883 intptr_t cid = GetReceiverClassIdAt(i); | 12882 intptr_t cid = GetReceiverClassIdAt(i); |
| 12884 cls ^= isolate->class_table()->At(cid); | 12883 cls ^= isolate->class_table()->At(cid); |
| 12885 } | 12884 } |
| 12886 intptr_t count = GetCountAt(i); | 12885 intptr_t count = GetCountAt(i); |
| 12887 JSONObject cache_entry(&cache_entries); | 12886 JSONObject cache_entry(&cache_entries); |
| 12888 if (cls.IsTopLevel()) { | 12887 if (cls.IsTopLevel()) { |
| 12889 cache_entry.AddProperty("receiverContainer", | 12888 cache_entry.AddProperty("receiverContainer", |
| 12890 Library::Handle(cls.library())); | 12889 Library::Handle(cls.library())); |
| 12891 } else { | 12890 } else { |
| 12892 cache_entry.AddProperty("receiverContainer", cls); | 12891 cache_entry.AddProperty("receiverContainer", cls); |
| 12893 } | 12892 } |
| 12894 cache_entry.AddProperty("count", count); | 12893 cache_entry.AddProperty("count", count); |
| 12895 cache_entry.AddProperty("target", func); | 12894 cache_entry.AddProperty("target", func); |
| 12896 } | 12895 } |
| 12897 } | 12896 } |
| 12898 | 12897 |
| 12899 | 12898 |
| 12899 void ICData::PrintToJSONArrayNew(const JSONArray& jsarray, |
| 12900 intptr_t token_pos, |
| 12901 bool is_static_call) const { |
| 12902 Isolate* isolate = Isolate::Current(); |
| 12903 Class& cls = Class::Handle(); |
| 12904 Function& func = Function::Handle(); |
| 12905 |
| 12906 JSONObject jsobj(&jsarray); |
| 12907 jsobj.AddProperty("name", String::Handle(target_name()).ToCString()); |
| 12908 jsobj.AddProperty("tokenPos", token_pos); |
| 12909 // TODO(rmacnak): Figure out how to stringify DeoptReasons(). |
| 12910 // jsobj.AddProperty("deoptReasons", ...); |
| 12911 |
| 12912 JSONArray cache_entries(&jsobj, "cacheEntries"); |
| 12913 for (intptr_t i = 0; i < NumberOfChecks(); i++) { |
| 12914 JSONObject cache_entry(&cache_entries); |
| 12915 func = GetTargetAt(i); |
| 12916 intptr_t count = GetCountAt(i); |
| 12917 if (!is_static_call) { |
| 12918 intptr_t cid = GetReceiverClassIdAt(i); |
| 12919 cls ^= isolate->class_table()->At(cid); |
| 12920 cache_entry.AddProperty("receiver", cls); |
| 12921 } |
| 12922 cache_entry.AddProperty("target", func); |
| 12923 cache_entry.AddProperty("count", count); |
| 12924 } |
| 12925 } |
| 12926 |
| 12927 |
| 12900 static Token::Kind RecognizeArithmeticOp(const String& name) { | 12928 static Token::Kind RecognizeArithmeticOp(const String& name) { |
| 12901 ASSERT(name.IsSymbol()); | 12929 ASSERT(name.IsSymbol()); |
| 12902 if (name.raw() == Symbols::Plus().raw()) { | 12930 if (name.raw() == Symbols::Plus().raw()) { |
| 12903 return Token::kADD; | 12931 return Token::kADD; |
| 12904 } else if (name.raw() == Symbols::Minus().raw()) { | 12932 } else if (name.raw() == Symbols::Minus().raw()) { |
| 12905 return Token::kSUB; | 12933 return Token::kSUB; |
| 12906 } else if (name.raw() == Symbols::Star().raw()) { | 12934 } else if (name.raw() == Symbols::Star().raw()) { |
| 12907 return Token::kMUL; | 12935 return Token::kMUL; |
| 12908 } else if (name.raw() == Symbols::Slash().raw()) { | 12936 } else if (name.raw() == Symbols::Slash().raw()) { |
| 12909 return Token::kDIV; | 12937 return Token::kDIV; |
| (...skipping 9049 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 21959 return tag_label.ToCString(); | 21987 return tag_label.ToCString(); |
| 21960 } | 21988 } |
| 21961 | 21989 |
| 21962 | 21990 |
| 21963 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { | 21991 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { |
| 21964 Instance::PrintJSONImpl(stream, ref); | 21992 Instance::PrintJSONImpl(stream, ref); |
| 21965 } | 21993 } |
| 21966 | 21994 |
| 21967 | 21995 |
| 21968 } // namespace dart | 21996 } // namespace dart |
| OLD | NEW |