@@ -79,11 +79,20 @@ void FlowEdge::setLikelihood(weight_t likelihood)
79
79
{
80
80
assert (likelihood >= 0.0 );
81
81
assert (likelihood <= 1.0 );
82
+
83
+ if (m_likelihoodSet)
84
+ {
85
+ JITDUMP (" setting likelihood of " FMT_BB " -> " FMT_BB " from " FMT_WT " to " FMT_WT " \n " , m_sourceBlock->bbNum ,
86
+ m_destBlock->bbNum , m_likelihood, likelihood);
87
+ }
88
+ else
89
+ {
90
+ JITDUMP (" setting likelihood of " FMT_BB " -> " FMT_BB " to " FMT_WT " \n " , m_sourceBlock->bbNum ,
91
+ m_destBlock->bbNum , likelihood);
92
+ }
93
+
82
94
m_likelihoodSet = true ;
83
95
m_likelihood = likelihood;
84
-
85
- JITDUMP (" setting likelihood of " FMT_BB " -> " FMT_BB " to " FMT_WT " \n " , m_sourceBlock->bbNum , m_destBlock->bbNum ,
86
- m_likelihood);
87
96
}
88
97
89
98
// ------------------------------------------------------------------------
@@ -114,10 +123,11 @@ void FlowEdge::addLikelihood(weight_t addedLikelihood)
114
123
115
124
assert (newLikelihood >= 0.0 );
116
125
assert (newLikelihood <= 1.0 );
117
- m_likelihood = newLikelihood;
118
126
119
- JITDUMP (" updating likelihood of " FMT_BB " -> " FMT_BB " to " FMT_WT " \n " , m_sourceBlock->bbNum , m_destBlock->bbNum ,
120
- m_likelihood);
127
+ JITDUMP (" updating likelihood of " FMT_BB " -> " FMT_BB " from " FMT_WT " to " FMT_WT " \n " , m_sourceBlock->bbNum ,
128
+ m_destBlock->bbNum , m_likelihood, newLikelihood);
129
+
130
+ m_likelihood = newLikelihood;
121
131
}
122
132
123
133
// ------------------------------------------------------------------------
@@ -678,20 +688,33 @@ void BasicBlock::dspSuccs(Compiler* compiler)
678
688
// things strictly.
679
689
void BasicBlock::dspKind () const
680
690
{
681
- auto dspBlockNum = [](const BasicBlock* b ) -> const char * {
691
+ auto dspBlockNum = [](const FlowEdge* e ) -> const char * {
682
692
static char buffers[3 ][64 ]; // static array of 3 to allow 3 concurrent calls in one printf()
683
693
static int nextBufferIndex = 0 ;
684
694
685
- auto & buffer = buffers[nextBufferIndex];
686
- nextBufferIndex = (nextBufferIndex + 1 ) % ArrLen (buffers);
695
+ auto & buffer = buffers[nextBufferIndex];
696
+ nextBufferIndex = (nextBufferIndex + 1 ) % ArrLen (buffers);
697
+ const size_t sizeOfBuffer = ArrLen (buffer);
698
+ int written;
687
699
700
+ const BasicBlock* b = e->getDestinationBlock ();
688
701
if (b == nullptr )
689
702
{
690
- _snprintf_s (buffer, ArrLen (buffer), ArrLen (buffer) , " NULL" );
703
+ written = _snprintf_s (buffer, sizeOfBuffer, sizeOfBuffer , " NULL" );
691
704
}
692
705
else
693
706
{
694
- _snprintf_s (buffer, ArrLen (buffer), ArrLen (buffer), FMT_BB, b->bbNum );
707
+ written = _snprintf_s (buffer, sizeOfBuffer, sizeOfBuffer, FMT_BB, b->bbNum );
708
+ }
709
+
710
+ const bool printEdgeLikelihoods = true ; // TODO: parameterize this?
711
+ if (printEdgeLikelihoods)
712
+ {
713
+ if (e->hasLikelihood ())
714
+ {
715
+ written = _snprintf_s (buffer + written, sizeOfBuffer - written, sizeOfBuffer - written, " (" FMT_WT " )" ,
716
+ e->getLikelihood ());
717
+ }
695
718
}
696
719
697
720
return buffer;
@@ -715,7 +738,7 @@ void BasicBlock::dspKind() const
715
738
716
739
for (unsigned i = 0 ; i < jumpCnt; i++)
717
740
{
718
- printf (" %c%s" , (i == 0 ) ? ' ' : ' ,' , dspBlockNum (jumpTab[i]-> getDestinationBlock () ));
741
+ printf (" %c%s" , (i == 0 ) ? ' ' : ' ,' , dspBlockNum (jumpTab[i]));
719
742
}
720
743
}
721
744
@@ -728,11 +751,11 @@ void BasicBlock::dspKind() const
728
751
break ;
729
752
730
753
case BBJ_EHFILTERRET:
731
- printf (" -> %s (fltret)" , dspBlockNum (GetTarget ()));
754
+ printf (" -> %s (fltret)" , dspBlockNum (GetTargetEdge ()));
732
755
break ;
733
756
734
757
case BBJ_EHCATCHRET:
735
- printf (" -> %s (cret)" , dspBlockNum (GetTarget ()));
758
+ printf (" -> %s (cret)" , dspBlockNum (GetTargetEdge ()));
736
759
break ;
737
760
738
761
case BBJ_THROW:
@@ -746,28 +769,28 @@ void BasicBlock::dspKind() const
746
769
case BBJ_ALWAYS:
747
770
if (HasFlag (BBF_KEEP_BBJ_ALWAYS))
748
771
{
749
- printf (" -> %s (ALWAYS)" , dspBlockNum (GetTarget ()));
772
+ printf (" -> %s (ALWAYS)" , dspBlockNum (GetTargetEdge ()));
750
773
}
751
774
else
752
775
{
753
- printf (" -> %s (always)" , dspBlockNum (GetTarget ()));
776
+ printf (" -> %s (always)" , dspBlockNum (GetTargetEdge ()));
754
777
}
755
778
break ;
756
779
757
780
case BBJ_LEAVE:
758
- printf (" -> %s (leave)" , dspBlockNum (GetTarget ()));
781
+ printf (" -> %s (leave)" , dspBlockNum (GetTargetEdge ()));
759
782
break ;
760
783
761
784
case BBJ_CALLFINALLY:
762
- printf (" -> %s (callf)" , dspBlockNum (GetTarget ()));
785
+ printf (" -> %s (callf)" , dspBlockNum (GetTargetEdge ()));
763
786
break ;
764
787
765
788
case BBJ_CALLFINALLYRET:
766
- printf (" -> %s (callfr)" , dspBlockNum (GetTarget ()));
789
+ printf (" -> %s (callfr)" , dspBlockNum (GetTargetEdge ()));
767
790
break ;
768
791
769
792
case BBJ_COND:
770
- printf (" -> %s,%s (cond)" , dspBlockNum (GetTrueTarget ()), dspBlockNum (GetFalseTarget ()));
793
+ printf (" -> %s,%s (cond)" , dspBlockNum (GetTrueEdge ()), dspBlockNum (GetFalseEdge ()));
771
794
break ;
772
795
773
796
case BBJ_SWITCH:
@@ -779,7 +802,7 @@ void BasicBlock::dspKind() const
779
802
780
803
for (unsigned i = 0 ; i < jumpCnt; i++)
781
804
{
782
- printf (" %c%s" , (i == 0 ) ? ' ' : ' ,' , dspBlockNum (jumpTab[i]-> getDestinationBlock () ));
805
+ printf (" %c%s" , (i == 0 ) ? ' ' : ' ,' , dspBlockNum (jumpTab[i]));
783
806
784
807
const bool isDefault = bbSwtTargets->bbsHasDefault && (i == jumpCnt - 1 );
785
808
if (isDefault)
0 commit comments