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 |