[O] Optimize code
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
public class ProgramArgumentList
|
||||
{
|
||||
|
||||
ArrayList programArgumentList;
|
||||
ArrayList<String> 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<String> 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<? extends String> 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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user