/** * Adds a new <code>CONSTANT_Fieldref_info</code> structure. * * @param classInfo <code>class_index</code> * @param nameAndTypeInfo <code>name_and_type_index</code>. * @return the index of the added entry. */ public int addFieldrefInfo(int classInfo, int nameAndTypeInfo) { int h = hashFunc(classInfo, nameAndTypeInfo); ConstInfo ci = constInfoCache[h]; if (ci != null && ci instanceof FieldrefInfo && ci.hashCheck(classInfo, nameAndTypeInfo)) return constInfoIndexCache[h]; else { FieldrefInfo item = new FieldrefInfo(classInfo, nameAndTypeInfo); constInfoCache[h] = item; int i = addItem(item); constInfoIndexCache[h] = i; return i; } }
/** * Adds a new <code>CONSTANT_NameAndType_info</code> structure. * * @param name <code>name_index</code> * @param type <code>descriptor_index</code> * @return the index of the added entry. */ public int addNameAndTypeInfo(int name, int type) { int h = hashFunc(name, type); ConstInfo ci = constInfoCache[h]; if (ci != null && ci instanceof NameAndTypeInfo && ci.hashCheck(name, type)) return constInfoIndexCache[h]; else { NameAndTypeInfo item = new NameAndTypeInfo(name, type); constInfoCache[h] = item; int i = addItem(item); constInfoIndexCache[h] = i; return i; } }
/** * Adds a new <code>CONSTANT_Methodref_info</code> structure. * * @param classInfo <code>class_index</code> * @param nameAndTypeInfo <code>name_and_type_index</code>. * @return the index of the added entry. */ public int addMethodrefInfo(int classInfo, int nameAndTypeInfo) { int h = hashFunc(classInfo, nameAndTypeInfo); ConstInfo ci = constInfoCache[h]; if (ci != null && ci instanceof MethodrefInfo && ci.hashCheck(classInfo, nameAndTypeInfo)) return constInfoIndexCache[h]; else { MethodrefInfo item = new MethodrefInfo(classInfo, nameAndTypeInfo); constInfoCache[h] = item; int i = addItem(item); constInfoIndexCache[h] = i; return i; } }
/** * Adds a new <code>CONSTANT_InterfaceMethodref_info</code> * structure. * * @param classInfo <code>class_index</code> * @param nameAndTypeInfo <code>name_and_type_index</code>. * @return the index of the added entry. */ public int addInterfaceMethodrefInfo(int classInfo, int nameAndTypeInfo) { int h = hashFunc(classInfo, nameAndTypeInfo); ConstInfo ci = constInfoCache[h]; if (ci != null && ci instanceof InterfaceMethodrefInfo && ci.hashCheck(classInfo, nameAndTypeInfo)) return constInfoIndexCache[h]; else { InterfaceMethodrefInfo item =new InterfaceMethodrefInfo(classInfo, nameAndTypeInfo); constInfoCache[h] = item; int i = addItem(item); constInfoIndexCache[h] = i; return i; } }