export function monitorToString()

in frontend/src/components/threaddump/util.ts [52:104]


export function monitorToString(monitor: any): string {
  let state = monitor.state;
  if (state === 'WAITING_ON') {
    let s = 'waiting on ' + addressToString(monitor.address) + ' ';
    if (monitor.classInstance) {
      s += '(a java.lang.Class for ' + monitor.class + ')';
    } else {
      s += '(a ' + monitor.class + ')';
    }
    return s;
  } else if (state === 'WAITING_TO_RE_LOCK') {
    let s = 'waiting to re-lock in wait() ' + addressToString(monitor.address) + ' ';
    if (monitor.classInstance) {
      s += '(a java.lang.Class for ' + monitor.class + ')';
    } else {
      s += '(a ' + monitor.class + ')';
    }
    return s;
  } else if (state === 'WAITING_ON_NO_OBJECT_REFERENCE_AVAILABLE') {
    return 'waiting on <no object reference available>';
  } else if (state === 'PARKING') {
    return 'parking to wait for ' + addressToString(monitor.address) + ' (a ' + monitor.class + ')';
  } else if (state === 'WAITING_ON_CLASS_INITIALIZATION') {
    return 'waiting on the Class initialization monitor for ' + monitor.class;
  } else if (state === 'LOCKED') {
    let s = 'locked ' + addressToString(monitor.address) + ' ';
    if (monitor.classInstance) {
      s += '(a java.lang.Class for ' + monitor.class + ')';
    } else {
      s += '(a ' + monitor.class + ')';
    }
    return s;
  } else if (state === 'WAITING_TO_LOCK') {
    let s = 'waiting to lock ' + monitorToString(monitor.address) + ' ';
    if (monitor.classInstance) {
      s += '(a java.lang.Class for ' + monitor.class + ')';
    } else {
      s += '(a ' + monitor.class + ')';
    }
    return s;
  } else if (state === 'ELIMINATED_SCALAR_REPLACED') {
    return 'eliminated <owner is scalar replaced> (a ' + monitor.class + ')';
  } else if (state === 'ELIMINATED') {
    let s = 'eliminated ' + monitorToString(monitor.address) + ' ';
    if (monitor.classInstance) {
      s += '(a java.lang.Class for ' + monitor.class + ')';
    } else {
      s += '(a ' + monitor.class + ')';
    }
    return s;
  }
  return '';
}