public IResult execute(IProgressListener listener) throws Exception {
    int[] finalizerThreadObjects = FinalizerThreadQuery.getFinalizerThreads(snapshot);

    SetInt result = new SetInt();

    for (int finalizerThreadObject : finalizerThreadObjects) {
      Field localsField =
          ((IInstance) snapshot.getObject(finalizerThreadObject))
              .getField("threadLocals"); // $NON-NLS-1$
      if (localsField != null) {
        ObjectReference ref = (ObjectReference) localsField.getValue();
        if (ref != null) {
          // TODO Don't add the thread locals object, but the pairs of
          // referent and value stored in the thread locals
          result.add(ref.getObjectId());
        }
      }
    }

    return new ObjectListResult.Outbound(snapshot, result.toArray());
  }
예제 #2
0
 public String toString() {
   return "Field:" + field.toString(); // $NON-NLS-1$//$NON-NLS-2$
 }