args = parser.parse_args()
p = subprocess.Popen(['c++filt', '-n'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
+
+
def demangle(name):
p.stdin.write(name + '\n')
return p.stdout.readline().rstrip()
+
class Remark(yaml.YAMLObject):
max_hotness = 1
# Map function names to their source location for function where inlining happened
def key(self):
return (self.__class__, self.Pass, self.Name, self.File, self.Line, self.Column, self.message)
+
class Analysis(Remark):
yaml_tag = '!Analysis'
@property
- def color(self): return "white"
+ def color(self):
+ return "white"
+
class AnalysisFPCommute(Analysis):
yaml_tag = '!AnalysisFPCommute'
+
class AnalysisAliasing(Analysis):
yaml_tag = '!AnalysisAliasing'
+
class Passed(Remark):
yaml_tag = '!Passed'
@property
- def color(self): return "green"
+ def color(self):
+ return "green"
+
class Missed(Remark):
yaml_tag = '!Missed'
@property
- def color(self): return "red"
+ def color(self):
+ return "red"
+
class SourceFileRenderer:
def __init__(self, filename):
def html_file_name(cls, filename):
return filename.replace('/', '_') + ".html"
+
class IndexRenderer:
def __init__(self):
self.stream = open(os.path.join(args.output_dir, 'index.html'), 'w')
all_remarks = dict()
-file_remarks = dict()
+file_remarks = dict()
for input_file in args.yaml_files:
f = open(input_file)
continue
all_remarks[remark.key] = remark
- file_remarks.setdefault(remark.File, dict()).setdefault(remark.Line, []).append(remark);
+ file_remarks.setdefault(remark.File, dict()).setdefault(remark.Line, []).append(remark)
Remark.max_hotness = max(Remark.max_hotness, remark.Hotness)