51 */ 52 CYCLES_0(0), 53 CYCLES_1(1), 54 CYCLES_2(2), 55 CYCLES_4(4), 56 CYCLES_8(8), 57 CYCLES_16(16), 58 CYCLES_32(32), 59 CYCLES_64(64), 60 CYCLES_128(128), 61 CYCLES_256(256), 62 CYCLES_512(512), 63 CYCLES_1024(1024); 64 65 public final int value; 66 67 NodeCycles(int value) { 68 this.value = value; 69 } 70 71 public static final int IGNORE_CYCLES_CONTRACT_FACTOR = 0xFFFF; 72 73 public static NodeCycles compute(NodeCycles base, int opCount) { 74 assert opCount >= 0; 75 if (opCount == 0) { 76 return CYCLES_0; 77 } 78 assert base.ordinal() > CYCLES_0.ordinal(); 79 int log2 = log2(base.value * opCount); 80 NodeCycles[] values = values(); 81 for (int i = base.ordinal(); i < values.length; i++) { 82 if (log2(values[i].value) == log2) { 83 return values[i]; 84 } 85 } 86 return CYCLES_1024; 87 } 88 89 public static NodeCycles compute(int rawValue) { 90 assert rawValue >= 0; | 51 */ 52 CYCLES_0(0), 53 CYCLES_1(1), 54 CYCLES_2(2), 55 CYCLES_4(4), 56 CYCLES_8(8), 57 CYCLES_16(16), 58 CYCLES_32(32), 59 CYCLES_64(64), 60 CYCLES_128(128), 61 CYCLES_256(256), 62 CYCLES_512(512), 63 CYCLES_1024(1024); 64 65 public final int value; 66 67 NodeCycles(int value) { 68 this.value = value; 69 } 70 71 public boolean isValueKnown() { 72 return this != NodeCycles.CYCLES_UNKNOWN && this != NodeCycles.CYCLES_UNSET; 73 } 74 75 public static final int IGNORE_CYCLES_CONTRACT_FACTOR = 0xFFFF; 76 77 public static NodeCycles compute(NodeCycles base, int opCount) { 78 assert opCount >= 0; 79 if (opCount == 0) { 80 return CYCLES_0; 81 } 82 assert base.ordinal() > CYCLES_0.ordinal(); 83 int log2 = log2(base.value * opCount); 84 NodeCycles[] values = values(); 85 for (int i = base.ordinal(); i < values.length; i++) { 86 if (log2(values[i].value) == log2) { 87 return values[i]; 88 } 89 } 90 return CYCLES_1024; 91 } 92 93 public static NodeCycles compute(int rawValue) { 94 assert rawValue >= 0; |