protected ValueNumber mergeValues(ValueNumberFrame frame, int slot, ValueNumber mine, ValueNumber other) throws DataflowAnalysisException {                if (mine != frame.getValue(slot)) throw new IllegalStateException();  if (mine.equals(other)) return mine;  ValueNumber mergedValue = frame.getMergedValue(slot); if (mergedValue == null) { mergedValue = factory.createFreshValue(); mergedValue.setFlags(mine.getFlags() | other.getFlags()); frame.setMergedValue(slot, mergedValue);  }  if (mergeTree != null) { mergeTree.mapInputToOutput(mine, mergedValue); mergeTree.mapInputToOutput(other, mergedValue); }  return mergedValue;
protected void mergeValues(ValueNumberFrame otherFrame, ValueNumberFrame resultFrame, int slot) throws DataflowAnalysisException { ValueNumber value = mergeValues(resultFrame, slot, resultFrame.getValue(slot), otherFrame.getValue(slot)); resultFrame.setValue(slot, value);
	protected ValueNumber mergeValues(ValueNumberFrame frame, int slot, ValueNumber mine, ValueNumber other)	        throws DataflowAnalysisException {		// Merging slot values:		//   - Merging identical values results in no change		//   - If the values are different, and the value in the result		//     frame is not the result of a previous result, a fresh value		//     is allocated.		//   - If the value in the result frame is the result of a		//     previous merge, IT STAYS THE SAME.		//		// The "one merge" rule means that merged values are essentially like		// phi nodes.  They combine some number of other values.		// I believe (but haven't proved) that this technique is a dumb way		// of computing SSA.		if (mine != frame.getValue(slot)) throw new IllegalStateException();		if (mine.equals(other))			return mine;		ValueNumber mergedValue = frame.getMergedValue(slot);		if (mergedValue == null) {			mergedValue = factory.createFreshValue();			mergedValue.setFlags(mine.getFlags() | other.getFlags());			frame.setMergedValue(slot, mergedValue);					}		if (mergeTree != null) {			mergeTree.mapInputToOutput(mine, mergedValue);			mergeTree.mapInputToOutput(other, mergedValue);		}		return mergedValue;	}