cm.printStackTrace(offsets[i], out);
cm.printStackTrace(Offset.fromIntSignExtend(offsets[i]), out);
  private void print4Real(PrintLN out, Throwable trigger, int depth) {    //    out.println("Calling print(out, trigger = " + trigger.toString() + ")"); // DEBUG XXX    if (depth > printingMaxDepth) {      VM.sysWriteln("VM_StackTrace.print4Real(): Already ", depth, " levels deep in a recursive stack trace; won't show trace # ", traceIndex);      return;                   // feign success    }    int lastFrame = lastFrameToPrint();    /* Where'd we find the trigger?     * -1 indicates that we never found the trigger. */    int foundTriggerAt = findTrigger(trigger, lastFrame);    /* Now we can start printing frames. */    int nPrinted = 0;           // how many frames have we printed?    for (int i = foundTriggerAt + 1; i <= lastFrame; ++i, ++nPrinted) {      VM_CompiledMethod cm = compiledMethods[i];      if (nPrinted == elideAfterThisManyFrames) {        // large stack - suppress excessive output        int oldIndex = i;        int newIndex = lastFrame - 9;        if (newIndex > oldIndex) {          i = newIndex;          try {            out.print("\t...");            out.print(newIndex - oldIndex);            out.println(" stackframes omitted.");            // out.println("\t..." + (newIndex - oldIndex) + " stackframes omitted...");          } catch (OutOfMemoryError e) {            trigger.tallyOutOfMemoryError();            if (out.isSysWrite()) {              VM.sysWriteln("\t... <some stack frames elided (also, Out of memory)>");            } else {              VM.sysWriteln("VM_StackTrace.print4Real(): Caught OutOfMemoryError while trying to display how many stack frames are omitted (elided).");              VM.sysWriteln("VM_StackTrace.print4Real(): Relaunching the error");                            throw e;          // launch again, for our caller.            }          }        }      }      try {        if (cm == null) {          out.println("\tat <invisible method>");          /* Commented out; Work in Progress: *///      } else if (cm.getMethod() == runMethodMarkingPrelude) {//      /* cm.getMethod() yields a VM_Method. *///      /* Notice that if runMethodMarkingPrelude is null, the right thing//         happens here. *///              return;                 // gone far enough.        } else {          cm.printStackTrace(offsets[i], out);        }      }      catch (OutOfMemoryError e) {        trigger.tallyOutOfMemoryError();        if (out.isSysWrite()) {          VM.sysWriteln("\tat <one undisplayable stack frame (Out of Memory) >");        } else {          try {            out.flush();            // The output's been flushed, I guess.  Make sure the line ends            // cleanly.             VM.sysWriteln();          } catch (OutOfMemoryError e2) {            trigger.tallyOutOfMemoryError();            VM.sysWriteln();            VM.sysWriteln("VM_StackTrace.print4Real: Caught OutOfMemoryError while flushing output.   Going on.");          }          VM.sysWriteln("VM_StackTrace.print4Real: Caught OutOfMemoryError while printing one frame of stack trace.  Re-throwing it.");          throw e;              // pass up to caller.        }      }    }  }