# HG changeset patch # User shade # Date 1492192936 -7200 # Node ID b3bcfd49186243e8c97dbdfd87cae413e7adc600 # Parent 82fe7737b8b17e270fc16867844274ee8fd296b1 Phase enum. diff -r 82fe7737b8b1 -r b3bcfd491862 src/main/java/org/openjdk/shenandoah/DataProvider.java --- a/src/main/java/org/openjdk/shenandoah/DataProvider.java Fri Apr 14 19:51:43 2017 +0200 +++ b/src/main/java/org/openjdk/shenandoah/DataProvider.java Fri Apr 14 20:02:16 2017 +0200 @@ -48,12 +48,9 @@ StringMonitor mtrx = matrix[c]; stats.add(new RegionStat(maxSize, data[c].longValue(), (mtrx == null ? "" : mtrx.stringValue()))); } - boolean isMarking = (status.longValue() & 0x1) > 0; - boolean isEvacuating = (status.longValue() & 0x2) > 0; - boolean isUpdateRefs = (status.longValue() & 0x4) > 0; long time = timestamp.longValue(); - return new Snapshot(time, maxSize, stats, isMarking, isEvacuating, isUpdateRefs); + return new Snapshot(time, maxSize, stats, (int) status.longValue()); } } diff -r 82fe7737b8b1 -r b3bcfd491862 src/main/java/org/openjdk/shenandoah/Phase.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/org/openjdk/shenandoah/Phase.java Fri Apr 14 20:02:16 2017 +0200 @@ -0,0 +1,15 @@ +package org.openjdk.shenandoah; + +public enum Phase { + + IDLE, + + MARKING, + + EVACUATING, + + UPDATE_REFS, + + UNKNOWN, + +} \ No newline at end of file diff -r 82fe7737b8b1 -r b3bcfd491862 src/main/java/org/openjdk/shenandoah/ShenandoahVisualizer.java --- a/src/main/java/org/openjdk/shenandoah/ShenandoahVisualizer.java Fri Apr 14 19:51:43 2017 +0200 +++ b/src/main/java/org/openjdk/shenandoah/ShenandoahVisualizer.java Fri Apr 14 20:02:16 2017 +0200 @@ -202,20 +202,23 @@ for (SnapshotView s : lastSnapshots) { int x = (int) Math.round((s.time() - firstTime) * stepX); - if (s.isMarking()) { - g.setColor(new Color(100, 100, 0)); - g.drawRect(x, 0, 1, graphHeight); + switch (s.phase()) { + case IDLE: + g.setColor(Color.BLACK); + break; + case MARKING: + g.setColor(new Color(100, 100, 0)); + break; + case EVACUATING: + g.setColor(new Color(100, 0, 0)); + break; + case UPDATE_REFS: + g.setColor(new Color(0, 100, 100)); + break; + default: + g.setColor(Color.WHITE); } - - if (s.isEvacuating()) { - g.setColor(new Color(100, 0, 0)); - g.drawRect(x, 0, 1, graphHeight); - } - - if (s.isUpdatingRefs()) { - g.setColor(new Color(0, 100, 100)); - g.drawRect(x, 0, 1, graphHeight); - } + g.drawRect(x, 0, 1, graphHeight); g.setColor(Colors.USED); g.drawRect(x, (int) Math.round(graphHeight - s.used() * stepY), 1, 1); @@ -308,17 +311,19 @@ public synchronized void renderStats(Graphics g) { String status = ""; - if (snapshot.isMarking()) { - status += " (marking)"; - } - if (snapshot.isEvacuating()) { - status += " (evacuating)"; - } - if (snapshot.isUpdateRefs()) { - status += " (updating refs)"; - } - if (status.isEmpty()) { - status = " (idle)"; + switch (snapshot.phase()) { + case IDLE: + status += " (idle)"; + break; + case MARKING: + status += " (marking)"; + break; + case EVACUATING: + status += " (evacuating)"; + break; + case UPDATE_REFS: + status += " (updating refs)"; + break; } g.setColor(Color.BLACK); diff -r 82fe7737b8b1 -r b3bcfd491862 src/main/java/org/openjdk/shenandoah/Snapshot.java --- a/src/main/java/org/openjdk/shenandoah/Snapshot.java Fri Apr 14 19:51:43 2017 +0200 +++ b/src/main/java/org/openjdk/shenandoah/Snapshot.java Fri Apr 14 20:02:16 2017 +0200 @@ -7,29 +7,34 @@ private final long time; private final long regionSize; private final List stats; - private final boolean isMarking; - private final boolean isEvacuating; - private final boolean isUpdateRefs; + private final Phase phase; - public Snapshot(long time, long regionSize, List stats, boolean isMarking, boolean isEvacuating, boolean isUpdateRefs) { + public Snapshot(long time, long regionSize, List stats, int status) { this.time = time; this.regionSize = regionSize; this.stats = stats; - this.isMarking = isMarking; - this.isEvacuating = isEvacuating; - this.isUpdateRefs = isUpdateRefs; + + switch (status) { + case 0x0: + this.phase = Phase.IDLE; + break; + case 0x1: + this.phase = Phase.MARKING; + break; + case 0x2: + this.phase = Phase.EVACUATING; + break; + case 0x4: + this.phase = Phase.UPDATE_REFS; + break; + default: + this.phase = Phase.UNKNOWN; + break; + } } - public boolean isMarking() { - return isMarking; - } - - public boolean isEvacuating() { - return isEvacuating; - } - - public boolean isUpdateRefs() { - return isUpdateRefs; + public Phase phase() { + return phase; } public RegionStat get(int i) { @@ -48,18 +53,15 @@ Snapshot snapshot = (Snapshot) o; if (time != snapshot.time) return false; - if (isMarking != snapshot.isMarking) return false; - if (isEvacuating != snapshot.isEvacuating) return false; - if (isUpdateRefs != snapshot.isUpdateRefs) return false; - return stats != null ? stats.equals(snapshot.stats) : snapshot.stats == null; + if (!stats.equals(snapshot.stats)) return false; + return phase == snapshot.phase; } @Override public int hashCode() { int result = (int) (time ^ (time >>> 32)); - result = 31 * result + (stats != null ? stats.hashCode() : 0); - result = 31 * result + (isMarking ? 1 : 0); - result = 31 * result + (isEvacuating ? 1 : 0); + result = 31 * result + stats.hashCode(); + result = 31 * result + phase.hashCode(); return result; } diff -r 82fe7737b8b1 -r b3bcfd491862 src/main/java/org/openjdk/shenandoah/SnapshotView.java --- a/src/main/java/org/openjdk/shenandoah/SnapshotView.java Fri Apr 14 19:51:43 2017 +0200 +++ b/src/main/java/org/openjdk/shenandoah/SnapshotView.java Fri Apr 14 20:02:16 2017 +0200 @@ -1,13 +1,9 @@ package org.openjdk.shenandoah; -import java.util.List; - public class SnapshotView { private final long time; - private final boolean isMarking; - private final boolean isEvacuating; - private final boolean isUpdatingRefs; + private final Phase phase; private final long total; private final long used; private final long live; @@ -16,10 +12,8 @@ private final long collectionSet; public SnapshotView(Snapshot s) { - this.time = s.time(); - this.isEvacuating = s.isEvacuating(); - this.isMarking = s.isMarking(); - this.isUpdatingRefs = s.isUpdateRefs(); + time = s.time(); + phase = s.phase(); total = total(); used = s.used(); live = s.live(); @@ -28,16 +22,8 @@ collectionSet = s.collectionSet(); } - public boolean isMarking() { - return isMarking; - } - - public boolean isEvacuating() { - return isEvacuating; - } - - public boolean isUpdatingRefs() { - return isUpdatingRefs; + public Phase phase() { + return phase; } public long time() {