agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7088955 Sdiff agent/src/share/classes/sun/jvm/hotspot/oops

agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java

Print this page




 155   public static class ClassState {
 156      public static final ClassState UNPARSABLE_BY_GC = new ClassState("unparsable_by_gc");
 157      public static final ClassState ALLOCATED    = new ClassState("allocated");
 158      public static final ClassState LOADED       = new ClassState("loaded");
 159      public static final ClassState LINKED       = new ClassState("linked");
 160      public static final ClassState BEING_INITIALIZED      = new ClassState("beingInitialized");
 161      public static final ClassState FULLY_INITIALIZED    = new ClassState("fullyInitialized");
 162      public static final ClassState INITIALIZATION_ERROR = new ClassState("initializationError");
 163 
 164      private ClassState(String value) {
 165         this.value = value;
 166      }
 167 
 168      public String toString() {
 169         return value;
 170      }
 171 
 172      private String value;
 173   }
 174 
 175   private int  getInitStateAsInt() { return (int) initState.getValue(this); }
 176   public ClassState getInitState() {
 177      int state = getInitStateAsInt();
 178      if (state == CLASS_STATE_UNPARSABLE_BY_GC) {
 179         return ClassState.UNPARSABLE_BY_GC;
 180      } else if (state == CLASS_STATE_ALLOCATED) {
 181         return ClassState.ALLOCATED;
 182      } else if (state == CLASS_STATE_LOADED) {
 183         return ClassState.LOADED;
 184      } else if (state == CLASS_STATE_LINKED) {
 185         return ClassState.LINKED;
 186      } else if (state == CLASS_STATE_BEING_INITIALIZED) {
 187         return ClassState.BEING_INITIALIZED;
 188      } else if (state == CLASS_STATE_FULLY_INITIALIZED) {
 189         return ClassState.FULLY_INITIALIZED;
 190      } else if (state == CLASS_STATE_INITIALIZATION_ERROR) {
 191         return ClassState.INITIALIZATION_ERROR;
 192      } else {
 193         throw new RuntimeException("should not reach here");
 194      }
 195   }


 479   }
 480 
 481   void iterateStaticFieldsInternal(OopVisitor visitor) {
 482     TypeArray fields = getFields();
 483     int length = (int) fields.getLength();
 484     for (int index = 0; index < length; index += NEXT_OFFSET) {
 485       short accessFlags    = fields.getShortAt(index + ACCESS_FLAGS_OFFSET);
 486       short signatureIndex = fields.getShortAt(index + SIGNATURE_INDEX_OFFSET);
 487       FieldType   type   = new FieldType(getConstants().getSymbolAt(signatureIndex));
 488       AccessFlags access = new AccessFlags(accessFlags);
 489       if (access.isStatic()) {
 490         visitField(visitor, type, index);
 491       }
 492     }
 493   }
 494 
 495   public Klass getJavaSuper() {
 496     return getSuper();
 497   }
 498 























 499   public void iterateNonStaticFields(OopVisitor visitor, Oop obj) {
 500     if (getSuper() != null) {
 501       ((InstanceKlass) getSuper()).iterateNonStaticFields(visitor, obj);
 502     }
 503     TypeArray fields = getFields();
 504 
 505     int length = (int) fields.getLength();
 506     for (int index = 0; index < length; index += NEXT_OFFSET) {
 507       short accessFlags    = fields.getShortAt(index + ACCESS_FLAGS_OFFSET);
 508       short signatureIndex = fields.getShortAt(index + SIGNATURE_INDEX_OFFSET);
 509 
 510       FieldType   type   = new FieldType(getConstants().getSymbolAt(signatureIndex));
 511       AccessFlags access = new AccessFlags(accessFlags);
 512       if (!access.isStatic()) {
 513         visitField(visitor, type, index);
 514       }
 515     }
 516   }
 517 
 518   /** Field access by name. */




 155   public static class ClassState {
 156      public static final ClassState UNPARSABLE_BY_GC = new ClassState("unparsable_by_gc");
 157      public static final ClassState ALLOCATED    = new ClassState("allocated");
 158      public static final ClassState LOADED       = new ClassState("loaded");
 159      public static final ClassState LINKED       = new ClassState("linked");
 160      public static final ClassState BEING_INITIALIZED      = new ClassState("beingInitialized");
 161      public static final ClassState FULLY_INITIALIZED    = new ClassState("fullyInitialized");
 162      public static final ClassState INITIALIZATION_ERROR = new ClassState("initializationError");
 163 
 164      private ClassState(String value) {
 165         this.value = value;
 166      }
 167 
 168      public String toString() {
 169         return value;
 170      }
 171 
 172      private String value;
 173   }
 174 
 175   public int  getInitStateAsInt() { return (int) initState.getValue(this); }
 176   public ClassState getInitState() {
 177      int state = getInitStateAsInt();
 178      if (state == CLASS_STATE_UNPARSABLE_BY_GC) {
 179         return ClassState.UNPARSABLE_BY_GC;
 180      } else if (state == CLASS_STATE_ALLOCATED) {
 181         return ClassState.ALLOCATED;
 182      } else if (state == CLASS_STATE_LOADED) {
 183         return ClassState.LOADED;
 184      } else if (state == CLASS_STATE_LINKED) {
 185         return ClassState.LINKED;
 186      } else if (state == CLASS_STATE_BEING_INITIALIZED) {
 187         return ClassState.BEING_INITIALIZED;
 188      } else if (state == CLASS_STATE_FULLY_INITIALIZED) {
 189         return ClassState.FULLY_INITIALIZED;
 190      } else if (state == CLASS_STATE_INITIALIZATION_ERROR) {
 191         return ClassState.INITIALIZATION_ERROR;
 192      } else {
 193         throw new RuntimeException("should not reach here");
 194      }
 195   }


 479   }
 480 
 481   void iterateStaticFieldsInternal(OopVisitor visitor) {
 482     TypeArray fields = getFields();
 483     int length = (int) fields.getLength();
 484     for (int index = 0; index < length; index += NEXT_OFFSET) {
 485       short accessFlags    = fields.getShortAt(index + ACCESS_FLAGS_OFFSET);
 486       short signatureIndex = fields.getShortAt(index + SIGNATURE_INDEX_OFFSET);
 487       FieldType   type   = new FieldType(getConstants().getSymbolAt(signatureIndex));
 488       AccessFlags access = new AccessFlags(accessFlags);
 489       if (access.isStatic()) {
 490         visitField(visitor, type, index);
 491       }
 492     }
 493   }
 494 
 495   public Klass getJavaSuper() {
 496     return getSuper();
 497   }
 498 
 499   public static class StaticField {
 500     public AccessFlags flags;
 501     public Field field;
 502 
 503     StaticField(Field field, AccessFlags flags) {
 504       this.field = field;
 505       this.flags = flags;
 506     }
 507   }
 508 
 509   public Field[] getStaticFields() {
 510     TypeArray fields = getFields();
 511     int length = (int) fields.getLength();
 512     ArrayList result = new ArrayList();
 513     for (int index = 0; index < length; index += NEXT_OFFSET) {
 514       Field f = newField(index);
 515       if (f.isStatic()) {
 516         result.add(f);
 517       }
 518     }
 519     return (Field[])result.toArray(new Field[result.size()]);
 520   }
 521 
 522   public void iterateNonStaticFields(OopVisitor visitor, Oop obj) {
 523     if (getSuper() != null) {
 524       ((InstanceKlass) getSuper()).iterateNonStaticFields(visitor, obj);
 525     }
 526     TypeArray fields = getFields();
 527 
 528     int length = (int) fields.getLength();
 529     for (int index = 0; index < length; index += NEXT_OFFSET) {
 530       short accessFlags    = fields.getShortAt(index + ACCESS_FLAGS_OFFSET);
 531       short signatureIndex = fields.getShortAt(index + SIGNATURE_INDEX_OFFSET);
 532 
 533       FieldType   type   = new FieldType(getConstants().getSymbolAt(signatureIndex));
 534       AccessFlags access = new AccessFlags(accessFlags);
 535       if (!access.isStatic()) {
 536         visitField(visitor, type, index);
 537       }
 538     }
 539   }
 540 
 541   /** Field access by name. */


agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File