diff --git a/src/main/java/mars/simulator/BackStepper.java b/src/main/java/mars/simulator/BackStepper.java index 8104f07..3b34adb 100644 --- a/src/main/java/mars/simulator/BackStepper.java +++ b/src/main/java/mars/simulator/BackStepper.java @@ -380,7 +380,7 @@ public class BackStepper // Represents a "back step" (undo action) on the stack. - private class BackStep + private static class BackStep { private int action; // what do do MEMORY_RESTORE_WORD, etc @@ -442,7 +442,7 @@ public class BackStepper // regardless of how many steps are executed. This will speed things up a bit // and make life easier for the garbage collector. - private class BackstepStack + private static class BackstepStack { private final int capacity; diff --git a/src/main/java/mars/simulator/ProgramArgumentList.java b/src/main/java/mars/simulator/ProgramArgumentList.java index 460498f..9107178 100644 --- a/src/main/java/mars/simulator/ProgramArgumentList.java +++ b/src/main/java/mars/simulator/ProgramArgumentList.java @@ -49,7 +49,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. public class ProgramArgumentList { - ArrayList programArgumentList; + ArrayList programArgumentList; /** * Constructor that parses string to produce list. Delimiters are the default Java StringTokenizer delimiters @@ -60,7 +60,7 @@ public class ProgramArgumentList public ProgramArgumentList(String args) { StringTokenizer st = new StringTokenizer(args); - programArgumentList = new ArrayList(st.countTokens()); + programArgumentList = new ArrayList<>(st.countTokens()); while (st.hasMoreTokens()) { programArgumentList.add(st.nextToken()); @@ -86,7 +86,7 @@ public class ProgramArgumentList */ public ProgramArgumentList(String[] list, int startPosition) { - programArgumentList = new ArrayList(list.length - startPosition); + programArgumentList = new ArrayList<>(list.length - startPosition); programArgumentList.addAll(Arrays.asList(list).subList(startPosition, list.length)); } @@ -95,7 +95,7 @@ public class ProgramArgumentList * * @param list ArrayList of String, each element containing one argument */ - public ProgramArgumentList(ArrayList list) + public ProgramArgumentList(ArrayList list) { this(list, 0); } @@ -108,15 +108,15 @@ public class ProgramArgumentList * @param startPosition Index of array element containing the first argument; all remaining elements are assumed * to contain an argument. */ - public ProgramArgumentList(ArrayList list, int startPosition) + public ProgramArgumentList(ArrayList list, int startPosition) { if (list == null || list.size() < startPosition) { - programArgumentList = new ArrayList(0); + programArgumentList = new ArrayList<>(0); } else { - programArgumentList = new ArrayList(list.size() - startPosition); + programArgumentList = new ArrayList<>(list.size() - startPosition); for (int i = startPosition; i < list.size(); i++) { programArgumentList.add(list.get(i)); @@ -166,10 +166,11 @@ public class ProgramArgumentList String programArgument; int[] argStartAddress = new int[programArgumentList.size()]; try - { // needed for all memory writes + { + // needed for all memory writes for (int i = 0; i < programArgumentList.size(); i++) { - programArgument = (String) programArgumentList.get(i); + programArgument = programArgumentList.get(i); Globals.memory.set(highAddress, 0, 1); // trailing null byte for each argument highAddress--; for (int j = programArgument.length() - 1; j >= 0; j--) @@ -206,9 +207,6 @@ public class ProgramArgumentList RegisterFile.getUserRegister("$sp").setValue(stackAddress + Memory.WORD_LENGTH_BYTES); RegisterFile.getUserRegister("$a0").setValue(argStartAddress.length); // argc RegisterFile.getUserRegister("$a1").setValue(stackAddress + Memory.WORD_LENGTH_BYTES + Memory.WORD_LENGTH_BYTES); // argv - //RegisterFile.updateRegister("$sp",stackAddress+Memory.WORD_LENGTH_BYTES); - //RegisterFile.updateRegister("$a0",argStartAddress.length); // argc - //RegisterFile.updateRegister("$a1",stackAddress+Memory.WORD_LENGTH_BYTES+Memory.WORD_LENGTH_BYTES); // argv } catch (AddressErrorException aee) { diff --git a/src/main/java/mars/tools/AbstractMarsToolAndApplication.java b/src/main/java/mars/tools/AbstractMarsToolAndApplication.java index b575eba..a087f6e 100644 --- a/src/main/java/mars/tools/AbstractMarsToolAndApplication.java +++ b/src/main/java/mars/tools/AbstractMarsToolAndApplication.java @@ -280,44 +280,27 @@ public abstract class AbstractMarsToolAndApplication extends JFrame implements M connectButton = new ConnectButton(); connectButton.setToolTipText("Control whether tool will respond to running MIPS program"); connectButton.addActionListener( - new ActionListener() + e -> { - public void actionPerformed(ActionEvent e) + if (connectButton.isConnected()) { - if (connectButton.isConnected()) - { - connectButton.disconnect(); - } - else - { - connectButton.connect(); - } + connectButton.disconnect(); + } + else + { + connectButton.connect(); } }); connectButton.addKeyListener(new EnterKeyListener(connectButton)); JButton resetButton = new JButton("Reset"); resetButton.setToolTipText("Reset all counters and other structures"); - resetButton.addActionListener( - new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - reset(); - } - }); + resetButton.addActionListener(e -> reset()); resetButton.addKeyListener(new EnterKeyListener(resetButton)); JButton closeButton = new JButton("Close"); closeButton.setToolTipText("Close (exit) this tool"); - closeButton.addActionListener( - new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - performToolClosingDuties(); - } - }); + closeButton.addActionListener(e -> performToolClosingDuties()); closeButton.addKeyListener(new EnterKeyListener(closeButton)); // Add all the buttons... @@ -441,26 +424,12 @@ public abstract class AbstractMarsToolAndApplication extends JFrame implements M JButton resetButton = new JButton("Reset"); resetButton.setToolTipText("Reset all counters and other structures"); - resetButton.addActionListener( - new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - reset(); - } - }); + resetButton.addActionListener(e -> reset()); resetButton.addKeyListener(new EnterKeyListener(resetButton)); JButton closeButton = new JButton("Exit"); closeButton.setToolTipText("Exit this application"); - closeButton.addActionListener( - new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - performAppClosingDuties(); - } - }); + closeButton.addActionListener(e -> performAppClosingDuties()); closeButton.addKeyListener(new EnterKeyListener(closeButton)); @@ -735,7 +704,7 @@ public abstract class AbstractMarsToolAndApplication extends JFrame implements M // are attached to the button at the time of the call. Otherwise, // it will call actionPerformed for the first action listener in the // button's list. - protected class EnterKeyListener extends KeyAdapter + protected static class EnterKeyListener extends KeyAdapter { AbstractButton myButton; diff --git a/src/main/java/mars/tools/KeyboardAndDisplaySimulator.java b/src/main/java/mars/tools/KeyboardAndDisplaySimulator.java index cb6c68b..7d3156c 100644 --- a/src/main/java/mars/tools/KeyboardAndDisplaySimulator.java +++ b/src/main/java/mars/tools/KeyboardAndDisplaySimulator.java @@ -840,7 +840,7 @@ public class KeyboardAndDisplaySimulator extends AbstractMarsToolAndApplication // NOTE: last argument TRUE means update only the MMIO Control register; FALSE means update both Control and Data. private synchronized void updateMMIOControlAndData(int controlAddr, int controlValue, int dataAddr, int dataValue, boolean controlOnly) { - if (!this.isBeingUsedAsAMarsTool || (this.isBeingUsedAsAMarsTool && connectButton.isConnected())) + if (!this.isBeingUsedAsAMarsTool || connectButton.isConnected()) { synchronized (Globals.memoryAndRegistersLock) {