/** * Add a new Float constant to the ConstantPool, if it is not already in there. * * @param n Float number to add * @return index of entry */ public int addFloat(float n) { int ret; if ((ret = lookupFloat(n)) != -1) return ret; // Already in CP adjustSize(); ret = index; constants[index++] = new ConstantFloat(n); return ret; }
/** * Add a new Integer constant to the ConstantPool, if it is not already in there. * * @param n integer number to add * @return index of entry */ public int addInteger(int n) { int ret; if ((ret = lookupInteger(n)) != -1) return ret; // Already in CP adjustSize(); ret = index; constants[index++] = new ConstantInteger(n); return ret; }
/** * Add a new double constant to the ConstantPool, if it is not already in there. * * @param n Double number to add * @return index of entry */ public int addDouble(double n) { int ret; if ((ret = lookupDouble(n)) != -1) return ret; // Already in CP adjustSize(); ret = index; constants[index] = new ConstantDouble(n); index += 2; // Wastes one entry according to spec return ret; }
/** * Add a new Utf8 constant to the ConstantPool, if it is not already in there. * * @param n Utf8 string to add * @return index of entry */ public int addUtf8(String n) { int ret; if ((ret = lookupUtf8(n)) != -1) return ret; // Already in CP adjustSize(); ret = index; constants[index++] = new ConstantUtf8(n); utf8_table.put(n, new Index(ret)); return ret; }
/** * Add a new NameAndType constant to the ConstantPool if it is not already in there. * * @param n NameAndType string to add * @return index of entry */ public int addNameAndType(String name, String signature) { int ret; int name_index, signature_index; if ((ret = lookupNameAndType(name, signature)) != -1) return ret; // Already in CP adjustSize(); name_index = addUtf8(name); signature_index = addUtf8(signature); ret = index; constants[index++] = new ConstantNameAndType(name_index, signature_index); n_a_t_table.put(name + NAT_DELIM + signature, new Index(ret)); return ret; }
private int addClass_(String clazz) { int ret; if ((ret = lookupClass(clazz)) != -1) return ret; // Already in CP adjustSize(); ConstantClass c = new ConstantClass(addUtf8(clazz)); ret = index; constants[index++] = c; class_table.put(clazz, new Index(ret)); return ret; }
/** * Add a new InterfaceMethodref constant to the ConstantPool, if it is not already in there. * * @param n InterfaceMethodref string to add * @return index of entry */ public int addInterfaceMethodref(String class_name, String method_name, String signature) { int ret, class_index, name_and_type_index; if ((ret = lookupInterfaceMethodref(class_name, method_name, signature)) != -1) return ret; // Already in CP adjustSize(); class_index = addClass(class_name); name_and_type_index = addNameAndType(method_name, signature); ret = index; constants[index++] = new ConstantInterfaceMethodref(class_index, name_and_type_index); cp_table.put( class_name + IMETHODREF_DELIM + method_name + IMETHODREF_DELIM + signature, new Index(ret)); return ret; }
/** * Add a new String constant to the ConstantPool, if it is not already in there. * * @param str String to add * @return index of entry */ public int addString(String str) { int ret; if ((ret = lookupString(str)) != -1) return ret; // Already in CP int utf8 = addUtf8(str); adjustSize(); ConstantString s = new ConstantString(utf8); ret = index; constants[index++] = s; string_table.put(str, new Index(ret)); return ret; }
/** * Add a new Fieldref constant to the ConstantPool, if it is not already in there. * * @param n Fieldref string to add * @return index of entry */ public int addFieldref(String class_name, String field_name, String signature) { int ret; int class_index, name_and_type_index; if ((ret = lookupFieldref(class_name, field_name, signature)) != -1) return ret; // Already in CP adjustSize(); class_index = addClass(class_name); name_and_type_index = addNameAndType(field_name, signature); ret = index; constants[index++] = new ConstantFieldref(class_index, name_and_type_index); cp_table.put( class_name + FIELDREF_DELIM + field_name + FIELDREF_DELIM + signature, new Index(ret)); return ret; }