protected void mergeInto ( FrameType other , FrameType result ) throws DataflowAnalysisException { // Handle if result Frame or the other Frame is the special "TOP" value. if ( result . isTop ( ) ) { // Result is the identity element, so copy the other Frame result . copyFrom ( other ) ; return ; } else if ( other . isTop ( ) ) { // Other Frame is the identity element, so result stays the same return ; } // Handle if result Frame or the other Frame is the special "BOTTOM" // value. if ( result . isBottom ( ) ) { // Result is the bottom element, so it stays that way return ; } else if ( other . isBottom ( ) ) { // Other Frame is the bottom element, so result becomes the bottom // element too result . setBottom ( ) ; return ; } // If the number of slots in the Frames differs, // then the result is the special "BOTTOM" value. if ( result . getNumSlots ( ) != other . getNumSlots ( ) ) { result . setBottom ( ) ; return ; } // Usual case: ordinary Frames consisting of the same number of values. // Merge each value in the two slot lists element-wise. for ( int i = 0 ; i < result . getNumSlots ( ) ; ++ i ) { mergeValues ( other , result , i ) ; } }
Merge one frame into another .