| Index: tools/perf_expectations/make_expectations.py | 
| diff --git a/tools/perf_expectations/make_expectations.py b/tools/perf_expectations/make_expectations.py | 
| index f73383dba650c5ff4dea61fd822c0fab0a56f177..aee5f4c5eafa5171569ca4bc1eb975a824122f3d 100755 | 
| --- a/tools/perf_expectations/make_expectations.py | 
| +++ b/tools/perf_expectations/make_expectations.py | 
| @@ -79,7 +79,7 @@ def GetRowData(data, key): | 
| if subkey in data[key]: | 
| rowdata.append('"%s": %s' % (subkey, data[key][subkey])) | 
| # Strings, like type, come next. | 
| -  for subkey in ['type']: | 
| +  for subkey in ['type', 'better']: | 
| if subkey in data[key]: | 
| rowdata.append('"%s": "%s"' % (subkey, data[key][subkey])) | 
| # Finally the main numbers come last. | 
| @@ -160,6 +160,7 @@ def Main(args): | 
| for key in perfkeys: | 
| value = perf[key] | 
| tolerance = value.get('tolerance', DEFAULT_TOLERANCE) | 
| +    better = value.get('better', None) | 
|  | 
| # Verify the checksum. | 
| original_checksum = value.get('sha1', '') | 
| @@ -267,21 +268,32 @@ def Main(args): | 
| regress = float(trace_values[tracename]['high']) | 
| improve = float(trace_values[tracename]['low']) | 
|  | 
| -    # At this point, regress > improve.  If regress == improve, we adjust | 
| -    # improve so it is just a little less than regress.  I'm picking on improve | 
| -    # so we keep the sizes assumptions in place for now. | 
| -    if regress == improve: | 
| -      improve = float(regress * 0.99) | 
| +    # So far we've assumed better is lower (regress > improve).  If the actual | 
| +    # values for regress and improve are equal, though, and better was not | 
| +    # specified, alert the user so we don't let them create a new file with | 
| +    # ambiguous rules. | 
| +    if better == None and regress == improve: | 
| +      OutputMessage('regress (%s) is equal to improve (%s), and "better" is ' | 
| +                    'unspecified, please fix by setting "better": "lower" or ' | 
| +                    '"better": "higher" in this perf trace\'s expectation' % ( | 
| +                    regress, improve), verbose_message=False) | 
| +      return 1 | 
|  | 
| # If the existing values assume regressions are low deltas relative to | 
| # improvements, swap our regress and improve.  This value must be a | 
| # scores-like result. | 
| if ('regress' in perf[key] and 'improve' in perf[key] and | 
| perf[key]['regress'] < perf[key]['improve']): | 
| +      assert(better != 'lower') | 
| +      better = 'higher' | 
| temp = regress | 
| regress = improve | 
| improve = temp | 
| -    if regress < improve: | 
| +    else: | 
| +      assert(better != 'higher') | 
| +      better = 'lower' | 
| + | 
| +    if better == 'higher': | 
| regress = int(math.floor(regress - abs(regress*tolerance))) | 
| improve = int(math.ceil(improve + abs(improve*tolerance))) | 
| else: | 
|  |