Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(105)

Side by Side Diff: runtime/vm/object.cc

Issue 1533653003: Add SourceReport, a class for generating Dart source-level reports. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: tweaks Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/source_report.h » ('j') | runtime/vm/source_report.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698