@@ -59,6 +59,7 @@ def __init__(self, json_pp):
59
59
self .dst_id = json_pp ['dst_id' ]
60
60
elif self .kind == 'Statement' :
61
61
self .stmt_kind = json_pp ['stmt_kind' ]
62
+ self .stmt_point_kind = json_pp ['stmt_point_kind' ]
62
63
self .pointer = json_pp ['pointer' ]
63
64
self .pretty = json_pp ['pretty' ]
64
65
self .loc = SourceLocation (json_pp ['location' ]) \
@@ -373,30 +374,48 @@ def visit_program_point(self, p):
373
374
elif p .kind in ['CallEnter' , 'CallExitBegin' , 'CallExitEnd' ]:
374
375
color = 'blue'
375
376
elif p .kind in ['Statement' ]:
376
- color = 'cyan3 '
377
+ color = 'cyan4 '
377
378
else :
378
379
color = 'forestgreen'
379
380
380
381
if p .kind == 'Statement' :
382
+ # This avoids pretty-printing huge statements such as CompoundStmt.
383
+ # Such statements show up only at [Pre|Post]StmtPurgeDeadSymbols
384
+ skip_pretty = 'PurgeDeadSymbols' in p .stmt_point_kind
385
+ stmt_color = 'cyan3'
381
386
if p .loc is not None :
382
387
self ._dump ('<tr><td align="left" width="0">'
383
388
'%s:<b>%s</b>:<b>%s</b>:</td>'
384
389
'<td align="left" width="0"><font color="%s">'
385
- '%s</font></td><td>%s</td></tr>'
390
+ '%s</font></td>'
391
+ '<td align="left"><font color="%s">%s</font></td>'
392
+ '<td>%s</td></tr>'
386
393
% (p .loc .filename , p .loc .line ,
387
- p .loc .col , color , p .stmt_kind , p .pretty ))
394
+ p .loc .col , color , p .stmt_kind ,
395
+ stmt_color , p .stmt_point_kind ,
396
+ p .pretty if not skip_pretty else '' ))
388
397
else :
389
398
self ._dump ('<tr><td align="left" width="0">'
390
399
'<i>Invalid Source Location</i>:</td>'
391
400
'<td align="left" width="0">'
392
- '<font color="%s">%s</font></td><td>%s</td></tr>'
393
- % (color , p .stmt_kind , p .pretty ))
401
+ '<font color="%s">%s</font></td>'
402
+ '<td align="left"><font color="%s">%s</font></td>'
403
+ '<td>%s</td></tr>'
404
+ % (color , p .stmt_kind ,
405
+ stmt_color , p .stmt_point_kind ,
406
+ p .pretty if not skip_pretty else '' ))
394
407
elif p .kind == 'Edge' :
395
408
self ._dump ('<tr><td width="0"></td>'
396
409
'<td align="left" width="0">'
397
410
'<font color="%s">%s</font></td><td align="left">'
398
411
'[B%d] -\\ > [B%d]</td></tr>'
399
- % (color , p .kind , p .src_id , p .dst_id ))
412
+ % (color , 'BlockEdge' , p .src_id , p .dst_id ))
413
+ elif p .kind == 'BlockEntrance' :
414
+ self ._dump ('<tr><td width="0"></td>'
415
+ '<td align="left" width="0">'
416
+ '<font color="%s">%s</font></td>'
417
+ '<td align="left">[B%d]</td></tr>'
418
+ % (color , p .kind , p .block_id ))
400
419
else :
401
420
# TODO: Print more stuff for other kinds of points.
402
421
self ._dump ('<tr><td width="0"></td>'
@@ -406,7 +425,7 @@ def visit_program_point(self, p):
406
425
407
426
if p .tag is not None :
408
427
self ._dump ('<tr><td width="0"></td>'
409
- '<td colspan="2 " align="left">'
428
+ '<td colspan="3 " align="left">'
410
429
'<b>Tag: </b> <font color="crimson">'
411
430
'%s</font></td></tr>' % p .tag )
412
431
0 commit comments