public void run(){
  int numberOfLines=highlighter.getNumberOfLines();
  cachedLineDone=new boolean[numberOfLines];
  parser.clearCache(numberOfLines);
  boolean skipbreakpoint=false;
  if (isBreakPoint(data.getInstructionPointer())) {
    skipbreakpoint=true;
  }
  int lineNumber=data.getInstructionPointer();
  while ((lineNumber < numberOfLines)) {
    if (!running) {
      break;
    }
    if (isBreakPoint(lineNumber) && !skipbreakpoint) {
      break;
    }
 else     if (isBreakPoint(lineNumber) && skipbreakpoint) {
      skipbreakpoint=false;
    }
    if ((lineNumber < numberOfLines)) {
      data.setInstructionPointer(lineNumber + 1);
      try {
        executeLineNumber(lineNumber,true);
      }
 catch (      Exception ex) {
        updateExecutionMark();
        scrollToExecutionMark();
        ErrorLabel.setText(ex.toString() + "");
        ex.printStackTrace();
        break;
      }
    }
    lineNumber=data.getInstructionPointer();
  }
  data.updateDirty();
  running=false;
  Thread.yield();
  updateAll();
  frame.checkButtonStates();
  runningThread=null;
}

public void run ( ) { int numberOfLines = highlighter . getNumberOfLines ( ) ; cachedLineDone = new boolean [ numberOfLines ] ; parser . clearCache ( numberOfLines ) ; boolean skipbreakpoint = false ; if ( isBreakPoint ( data . getInstructionPointer ( ) ) ) { skipbreakpoint = true ; } int lineNumber = data . getInstructionPointer ( ) ; while ( ( lineNumber < numberOfLines ) ) { if ( ! running ) { break ; } if ( isBreakPoint ( lineNumber ) && ! skipbreakpoint ) { break ; } else if ( isBreakPoint ( lineNumber ) && skipbreakpoint ) { skipbreakpoint = false ; } if ( ( lineNumber < numberOfLines ) ) { data . setInstructionPointer ( lineNumber + 1 ) ; try { executeLineNumber ( lineNumber , true ) ; } catch ( Exception ex ) { updateExecutionMark ( ) ; scrollToExecutionMark ( ) ; ErrorLabel . setText ( ex . toString ( ) + "" ) ; ex . printStackTrace ( ) ; break ; } } lineNumber = data . getInstructionPointer ( ) ; } data . updateDirty ( ) ; running = false ; Thread . yield ( ) ; updateAll ( ) ; frame . checkButtonStates ( ) ; runningThread = null ; }
this method is used to execute the assembler by the new thread .
