• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4 package com.android.tools.r8.ir.regalloc;
5 
6 import static com.android.tools.r8.dex.Constants.U16BIT_MAX;
7 
8 public class LiveIntervalsUse implements Comparable<LiveIntervalsUse> {
9   private final int position;
10   private final int limit;
11 
LiveIntervalsUse(int position, int limit)12   public LiveIntervalsUse(int position, int limit) {
13     this.position = position;
14     this.limit = limit;
15   }
16 
getPosition()17   public int getPosition() {
18     return position;
19   }
20 
getLimit()21   public int getLimit() {
22     return limit;
23   }
24 
25   @Override
hashCode()26   public int hashCode() {
27     return position + limit * 7;
28   }
29 
30   @Override
equals(Object other)31   public boolean equals(Object other) {
32     if (!(other instanceof LiveIntervalsUse)) {
33       return false;
34     }
35     LiveIntervalsUse o = (LiveIntervalsUse) other;
36     return o.position == position && o.limit == limit;
37   }
38 
39   @Override
compareTo(LiveIntervalsUse o)40   public int compareTo(LiveIntervalsUse o) {
41     if (o.position != position) {
42       return position - o.position;
43     }
44     return limit - o.limit;
45   }
46 
hasConstraint()47   public boolean hasConstraint() {
48     return limit < U16BIT_MAX;
49   }
50 }
51