1 30 31 package org.objectweb.asm.attrs; 32 33 import org.objectweb.asm.Label; 34 35 45 46 public class StackMapType { 47 48 public static final int ITEM_Top = 0; 49 public static final int ITEM_Integer = 1; 50 public static final int ITEM_Float = 2; 51 public static final int ITEM_Double = 3; 52 public static final int ITEM_Long = 4; 53 public static final int ITEM_Null = 5; 54 public static final int ITEM_UninitializedThis = 6; 55 public static final int ITEM_Object = 7; 56 public static final int ITEM_Uninitialized = 8; 57 58 public static final String [] ITEM_NAMES = { 59 "Top", 60 "Integer", 61 "Float", 62 "Double", 63 "Long", 64 "Null", 65 "UninitializedThis", 66 "Object", 67 "Uninitialized" }; 68 69 private int type; 70 private Label offset; 71 private String object; 72 73 private StackMapType(int type) { 74 this.type = type; 75 } 76 77 public int getType() { 78 return type; 79 } 80 81 public static StackMapType getTypeInfo(int itemType) { 82 if (itemType < ITEM_Top || itemType > ITEM_Uninitialized) { 83 throw new IllegalArgumentException ("" + itemType); 84 } 85 return new StackMapType(itemType); 86 } 87 88 public void setLabel(Label offset) { 89 this.offset = offset; 90 } 91 92 public void setObject(String object) { 93 this.object = object; 94 } 95 96 public Label getLabel() { 97 return offset; 98 } 99 100 public String getObject() { 101 return object; 102 } 103 104 public String toString() { 105 StringBuffer sb = new StringBuffer (ITEM_NAMES[type]); 106 if (type == ITEM_Object) { 107 sb.append(":").append(object); 108 } 109 if (type == ITEM_Uninitialized) { 110 sb.append(":L").append(System.identityHashCode(offset)); 111 } 112 return sb.toString(); 113 } 114 } 115 | Popular Tags |