ref1 =ref2; ref2 = ref1;
ref1 = ref2; ref2 = tmp;
  final void checkForMissedSpills(Address ref1, Address ref2) {    if (ref1.isZero()) {      // Search from start of spill area      ref1 = getFirstSpillLoc();      if (DEBUG) {        VM.sysWrite("Updated, ref1: ");        VM.sysWrite(ref1);        VM.sysWrite("\n");      }    }     if (ref2.isZero()) {      // Search up to end of spill area      ref2 = getLastSpillLoc();      if (DEBUG) {        VM.sysWrite("Updated, ref2: ");        VM.sysWrite(ref2);        VM.sysWrite("\n");      }    }    // since different archs will have the relative order of ref1, ref2    // differently, we normalize them by ensuring that ref1 < ref2;     if (ref1.GT(ref2)) {      Address tmp = ref1;      ref1 =ref2;      ref2 = ref1;    }    for (Address i = ref1.plus(BYTES_IN_ADDRESS); i.LT(ref2); i = i.plus(BYTES_IN_ADDRESS)) {      Address ptr = i.loadAddress();      if (DEBUG) {        VM.sysWrite(" Inspecting Spill: ");        VM.sysWrite(i);        VM.sysWrite(" with value ==>");        VM.sysWrite(ptr);        VM.sysWrite("\n");      }      if (MM_Interface.addressInVM(ptr)) {        VM.sysWrite("  spill location:");        VM.sysWrite(i);        VM.sysWrite(" contains a suspicious value ==>");        VM.sysWrite(ptr);        VM.sysWrite("\n");        VM.sysWrite("FramePtr: ");        VM.sysWrite(framePtr);        VM.sysWrite("\tFirst Spill: ");        VM.sysWrite(getFirstSpillLoc());        VM.sysWrite("\tLast Spill: ");        VM.sysWrite(getLastSpillLoc());        VM.sysWrite("\n");      }    }  }