Java Code Examples for com.sun.tools.classfile.ConstantPoolException
The following examples show how to use
com.sun.tools.classfile.ConstantPoolException. These examples are extracted from open source projects.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source Project: dragonwell8_jdk Source File: ClassReader.java License: GNU General Public License v2.0 | 6 votes |
public Element readFrom(InputStream in) throws IOException { try { this.in = in; ClassFile c = ClassFile.read(in); // read the file header if (c.magic != 0xCAFEBABE) { throw new RuntimeException("bad magic number " + Integer.toHexString(c.magic)); } cfile.setAttr("magic", "" + c.magic); int minver = c.minor_version; int majver = c.major_version; cfile.setAttr("minver", "" + minver); cfile.setAttr("majver", "" + majver); readCP(c); readClass(c); return result(); } catch (InvalidDescriptor | ConstantPoolException ex) { throw new IOException("Fatal error", ex); } }
Example 2
Source Project: dragonwell8_jdk Source File: ClassReader.java License: GNU General Public License v2.0 | 6 votes |
private void readClass(ClassFile c) throws IOException, ConstantPoolException, InvalidDescriptor { klass = new Element("Class"); cfile.add(klass); String thisk = c.getName(); klass.setAttr("name", thisk); AccessFlags af = new AccessFlags(c.access_flags.flags); klass.setAttr("flags", flagString(af, klass)); if (!"java/lang/Object".equals(thisk)) { klass.setAttr("super", c.getSuperclassName()); } for (int i : c.interfaces) { klass.add(new Element("Interface", "name", getCpString(i))); } readFields(c, klass); readMethods(c, klass); readAttributesFor(c, c.attributes, klass); klass.trimToSize(); }
Example 3
Source Project: TencentKona-8 Source File: ClassReader.java License: GNU General Public License v2.0 | 6 votes |
@Override public String visitInterfaceMethodref(CONSTANT_InterfaceMethodref_info c, Integer p) { String value = slist.get(p); if (value == null) { try { value = visit(cfpool.get(c.class_index), c.class_index); value = value.concat(" " + visit(cfpool.get(c.name_and_type_index), c.name_and_type_index)); slist.set(p, value); xpool.add(new Element("CONSTANT_InterfaceMethodref", new String[]{"id", p.toString()}, value)); } catch (ConstantPoolException ex) { ex.printStackTrace(); } } return value; }
Example 4
Source Project: dragonwell8_jdk Source File: ClassReader.java License: GNU General Public License v2.0 | 6 votes |
@Override public String visitFieldref(CONSTANT_Fieldref_info c, Integer p) { String value = slist.get(p); if (value == null) { try { value = visit(cfpool.get(c.class_index), c.class_index); value = value.concat(" " + visit(cfpool.get(c.name_and_type_index), c.name_and_type_index)); slist.set(p, value); xpool.add(new Element("CONSTANT_Fieldref", new String[]{"id", p.toString()}, value)); } catch (ConstantPoolException ex) { ex.printStackTrace(); } } return value; }
Example 5
Source Project: dragonwell8_jdk Source File: ClassReader.java License: GNU General Public License v2.0 | 6 votes |
@Override public String visitInterfaceMethodref(CONSTANT_InterfaceMethodref_info c, Integer p) { String value = slist.get(p); if (value == null) { try { value = visit(cfpool.get(c.class_index), c.class_index); value = value.concat(" " + visit(cfpool.get(c.name_and_type_index), c.name_and_type_index)); slist.set(p, value); xpool.add(new Element("CONSTANT_InterfaceMethodref", new String[]{"id", p.toString()}, value)); } catch (ConstantPoolException ex) { ex.printStackTrace(); } } return value; }
Example 6
Source Project: dragonwell8_jdk Source File: ClassReader.java License: GNU General Public License v2.0 | 6 votes |
@Override public String visitInvokeDynamic(CONSTANT_InvokeDynamic_info c, Integer p) { String value = slist.get(p); if (value == null) { try { value = bsmlist.get(c.bootstrap_method_attr_index) + " " + visit(cfpool.get(c.name_and_type_index), c.name_and_type_index); slist.set(p, value); xpool.add(new Element("CONSTANT_InvokeDynamic", new String[]{"id", p.toString()}, value)); } catch (ConstantPoolException ex) { ex.printStackTrace(); } } return value; }
Example 7
Source Project: dragonwell8_jdk Source File: ClassReader.java License: GNU General Public License v2.0 | 6 votes |
@Override public String visitMethodref(CONSTANT_Methodref_info c, Integer p) { String value = slist.get(p); if (value == null) { try { value = visit(cfpool.get(c.class_index), c.class_index); value = value.concat(" " + visit(cfpool.get(c.name_and_type_index), c.name_and_type_index)); slist.set(p, value); xpool.add(new Element("CONSTANT_Methodref", new String[]{"id", p.toString()}, value)); } catch (ConstantPoolException ex) { ex.printStackTrace(); } } return value; }
Example 8
Source Project: dragonwell8_jdk Source File: ClassReader.java License: GNU General Public License v2.0 | 6 votes |
@Override public String visitMethodHandle(CONSTANT_MethodHandle_info c, Integer p) { String value = slist.get(p); if (value == null) { try { value = c.reference_kind.name(); value = value.concat(" " + visit(cfpool.get(c.reference_index), c.reference_index)); slist.set(p, value); xpool.add(new Element("CONSTANT_MethodHandle", new String[]{"id", p.toString()}, value)); } catch (ConstantPoolException ex) { ex.printStackTrace(); } } return value; }
Example 9
Source Project: dragonwell8_jdk Source File: ClassReader.java License: GNU General Public License v2.0 | 6 votes |
@Override public String visitMethodType(CONSTANT_MethodType_info c, Integer p) { String value = slist.get(p); if (value == null) { try { value = visit(cfpool.get(c.descriptor_index), c.descriptor_index); slist.set(p, value); xpool.add(new Element("CONSTANT_MethodType", new String[]{"id", p.toString()}, value)); } catch (ConstantPoolException ex) { ex.printStackTrace(); } } return value; }
Example 10
Source Project: dragonwell8_jdk Source File: ClassReader.java License: GNU General Public License v2.0 | 6 votes |
@Override public String visitString(CONSTANT_String_info c, Integer p) { try { String value = slist.get(p); if (value == null) { value = c.getString(); slist.set(p, value); xpool.add(new Element("CONSTANT_String", new String[]{"id", p.toString()}, value)); } return value; } catch (ConstantPoolException ex) { throw new RuntimeException("Fatal error", ex); } }
Example 11
Source Project: TencentKona-8 Source File: ClassReader.java License: GNU General Public License v2.0 | 6 votes |
@Override public String visitMethodref(CONSTANT_Methodref_info c, Integer p) { String value = slist.get(p); if (value == null) { try { value = visit(cfpool.get(c.class_index), c.class_index); value = value.concat(" " + visit(cfpool.get(c.name_and_type_index), c.name_and_type_index)); slist.set(p, value); xpool.add(new Element("CONSTANT_Methodref", new String[]{"id", p.toString()}, value)); } catch (ConstantPoolException ex) { ex.printStackTrace(); } } return value; }
Example 12
Source Project: TencentKona-8 Source File: ClassReader.java License: GNU General Public License v2.0 | 6 votes |
@Override public String visitMethodHandle(CONSTANT_MethodHandle_info c, Integer p) { String value = slist.get(p); if (value == null) { try { value = c.reference_kind.name(); value = value.concat(" " + visit(cfpool.get(c.reference_index), c.reference_index)); slist.set(p, value); xpool.add(new Element("CONSTANT_MethodHandle", new String[]{"id", p.toString()}, value)); } catch (ConstantPoolException ex) { ex.printStackTrace(); } } return value; }
Example 13
Source Project: TencentKona-8 Source File: CompareTest.java License: GNU General Public License v2.0 | 6 votes |
boolean isNativeClass(JarFile jar, JarEntry entry) throws IOException, ConstantPoolException { String name = entry.getName(); if (name.startsWith("META-INF") || !name.endsWith(".class")) return false; //String className = name.substring(0, name.length() - 6).replace("/", "."); //System.err.println("check " + className); InputStream in = jar.getInputStream(entry); ClassFile cf = ClassFile.read(in); for (int i = 0; i < cf.methods.length; i++) { Method m = cf.methods[i]; if (m.access_flags.is(AccessFlags.ACC_NATIVE)) { // System.err.println(className); return true; } } return false; }
Example 14
Source Project: TencentKona-8 Source File: FindNativeFiles.java License: GNU General Public License v2.0 | 6 votes |
boolean isNativeClass(JarFile jar, JarEntry entry) throws IOException, ConstantPoolException { String name = entry.getName(); if (name.startsWith("META-INF") || !name.endsWith(".class")) return false; //String className = name.substring(0, name.length() - 6).replace("/", "."); //System.err.println("check " + className); InputStream in = jar.getInputStream(entry); ClassFile cf = ClassFile.read(in); in.close(); for (int i = 0; i < cf.methods.length; i++) { Method m = cf.methods[i]; if (m.access_flags.is(AccessFlags.ACC_NATIVE)) { // System.err.println(className); return true; } } return false; }
Example 15
Source Project: TencentKona-8 Source File: ByteCodeTest.java License: GNU General Public License v2.0 | 6 votes |
private static boolean verifyClassFileAttributes(File classFile, TestCases tc) { ClassFile c = null; try { c = ClassFile.read(classFile); } catch (IOException | ConstantPoolException e) { e.printStackTrace(); } ConstantPoolVisitor cpv = new ConstantPoolVisitor(c, c.constant_pool.size()); Map<Integer, String> hm = cpv.getBSMMap(); List<String> expectedValList = tc.getExpectedArgValues(); expectedValList.add(tc.bsmSpecifier.specifier); if(!(hm.values().containsAll(new HashSet<String>(expectedValList)))) { System.out.println("Values do not match"); return false; } return true; }
Example 16
Source Project: TencentKona-8 Source File: ByteCodeTest.java License: GNU General Public License v2.0 | 6 votes |
@Override public String visitFieldref(CONSTANT_Fieldref_info c, Integer p) { String value = slist.get(p); if (value == null) { try { value = visit(cfpool.get(c.class_index), c.class_index); value = value.concat(" " + visit(cfpool.get(c.name_and_type_index), c.name_and_type_index)); slist.set(p, value); } catch (ConstantPoolException ex) { ex.printStackTrace(); } } return value; }
Example 17
Source Project: TencentKona-8 Source File: ByteCodeTest.java License: GNU General Public License v2.0 | 6 votes |
@Override public String visitInterfaceMethodref(CONSTANT_InterfaceMethodref_info c, Integer p) { String value = slist.get(p); if (value == null) { try { value = visit(cfpool.get(c.class_index), c.class_index); value = value.concat(" " + visit(cfpool.get(c.name_and_type_index), c.name_and_type_index)); slist.set(p, value); } catch (ConstantPoolException ex) { ex.printStackTrace(); } } return value; }
Example 18
Source Project: TencentKona-8 Source File: ClassReader.java License: GNU General Public License v2.0 | 6 votes |
@Override public String visitString(CONSTANT_String_info c, Integer p) { try { String value = slist.get(p); if (value == null) { value = c.getString(); slist.set(p, value); xpool.add(new Element("CONSTANT_String", new String[]{"id", p.toString()}, value)); } return value; } catch (ConstantPoolException ex) { throw new RuntimeException("Fatal error", ex); } }
Example 19
Source Project: TencentKona-8 Source File: ByteCodeTest.java License: GNU General Public License v2.0 | 6 votes |
@Override public String visitMethodref(CONSTANT_Methodref_info c, Integer p) { String value = slist.get(p); if (value == null) { try { value = visit(cfpool.get(c.class_index), c.class_index); value = value.concat(" " + visit(cfpool.get(c.name_and_type_index), c.name_and_type_index)); slist.set(p, value); } catch (ConstantPoolException ex) { ex.printStackTrace(); } } return value; }
Example 20
Source Project: TencentKona-8 Source File: ByteCodeTest.java License: GNU General Public License v2.0 | 6 votes |
@Override public String visitMethodHandle(CONSTANT_MethodHandle_info c, Integer p) { String value = slist.get(p); if (value == null) { try { value = c.reference_kind.name(); value = value.concat(" " + visit(cfpool.get(c.reference_index), c.reference_index)); slist.set(p, value); } catch (ConstantPoolException ex) { ex.printStackTrace(); } } return value; }
Example 21
Source Project: TencentKona-8 Source File: LVTHarness.java License: GNU General Public License v2.0 | 6 votes |
void checkClassFile(File file) throws IOException, ConstantPoolException, InvalidDescriptor { ClassFile classFile = ClassFile.read(file); ConstantPool constantPool = classFile.constant_pool; //lets get all the methods in the class file. for (Method method : classFile.methods) { for (ElementKey elementKey: aliveRangeMap.keySet()) { String methodDesc = method.getName(constantPool) + method.descriptor.getParameterTypes(constantPool).replace(" ", ""); if (methodDesc.equals(elementKey.elem.toString())) { checkMethod(constantPool, method, aliveRangeMap.get(elementKey)); seenAliveRanges.add(elementKey); } } } }
Example 22
Source Project: TencentKona-8 Source File: LVTHarness.java License: GNU General Public License v2.0 | 6 votes |
void checkMethod(ConstantPool constantPool, Method method, AliveRanges ranges) throws InvalidIndex, UnexpectedEntry, ConstantPoolException { Code_attribute code = (Code_attribute) method.attributes.get(Attribute.Code); LocalVariableTable_attribute lvt = (LocalVariableTable_attribute) (code.attributes.get(Attribute.LocalVariableTable)); List<String> infoFromRanges = convertToStringList(ranges); List<String> infoFromLVT = convertToStringList(constantPool, lvt); // infoFromRanges most be contained in infoFromLVT int i = 0; int j = 0; while (i < infoFromRanges.size() && j < infoFromLVT.size()) { int comparison = infoFromRanges.get(i).compareTo(infoFromLVT.get(j)); if (comparison == 0) { i++; j++; } else if (comparison > 0) { j++; } else { break; } } if (i < infoFromRanges.size()) { error(infoFromLVT, infoFromRanges, method.getName(constantPool).toString()); } }
Example 23
Source Project: TencentKona-8 Source File: CPoolRefClassContainingInlinedCts.java License: GNU General Public License v2.0 | 6 votes |
void checkReferences() throws IOException, ConstantPoolException { File testClasses = new File(System.getProperty("test.classes")); File file = new File(testClasses, CPoolRefClassContainingInlinedCts.class.getName() + ".class"); ClassFile classFile = ClassFile.read(file); int i = 1; CPInfo cpInfo; while (i < classFile.constant_pool.size()) { cpInfo = classFile.constant_pool.get(i); if (cpInfo instanceof CONSTANT_Class_info) { checkClassName(((CONSTANT_Class_info)cpInfo).getName()); } i += cpInfo.size(); } if (numberOfReferencedClassesToBeChecked != 16) { throw new AssertionError("Class reference missing in the constant pool"); } }
Example 24
Source Project: TencentKona-8 Source File: CheckACC_STRICTFlagOnclinitTest.java License: GNU General Public License v2.0 | 6 votes |
void check(String dir, String... fileNames) throws IOException, ConstantPoolException, Descriptor.InvalidDescriptor { for (String fileName : fileNames) { ClassFile classFileToCheck = ClassFile.read(new File(dir, fileName)); for (Method method : classFileToCheck.methods) { if ((method.access_flags.flags & ACC_STRICT) == 0) { errors.add(String.format(offendingMethodErrorMessage, method.getName(classFileToCheck.constant_pool), classFileToCheck.getName())); } } } }
Example 25
Source Project: TencentKona-8 Source File: DuplicateConstantPoolEntry.java License: GNU General Public License v2.0 | 6 votes |
void checkReference() throws IOException, ConstantPoolException { File file = new File("A.class"); ClassFile classFile = ClassFile.read(file); for (int i = 1; i < classFile.constant_pool.size() - 1; i += classFile.constant_pool.get(i).size()) { for (int j = i + classFile.constant_pool.get(i).size(); j < classFile.constant_pool.size(); j += classFile.constant_pool.get(j).size()) { if (classFile.constant_pool.get(i).toString(). equals(classFile.constant_pool.get(j).toString())) { throw new AssertionError( "Duplicate entries in the constant pool at positions " + i + " and " + j); } } } }
Example 26
Source Project: TencentKona-8 Source File: DetectMutableStaticFields.java License: GNU General Public License v2.0 | 6 votes |
private void run() throws IOException, ConstantPoolException, InvalidDescriptor, URISyntaxException { URI resource = findResource(keyResource); if (resource == null) { throw new AssertionError("Resource " + keyResource + "not found in the class path"); } analyzeResource(resource); if (errors.size() > 0) { for (String error: errors) { System.err.println(error); } throw new AssertionError("There are mutable fields, " + "please check output"); } }
Example 27
Source Project: TencentKona-8 Source File: DetectMutableStaticFields.java License: GNU General Public License v2.0 | 6 votes |
void analyzeResource(URI resource) throws IOException, ConstantPoolException, InvalidDescriptor { JavaCompiler tool = ToolProvider.getSystemJavaCompiler(); StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null); JavaFileManager.Location location = StandardLocation.locationFor(resource.getPath()); fm.setLocation(location, com.sun.tools.javac.util.List.of( new File(resource.getPath()))); for (JavaFileObject file : fm.list(location, "", EnumSet.of(CLASS), true)) { String className = fm.inferBinaryName(location, file); int index = className.lastIndexOf('.'); String pckName = index == -1 ? "" : className.substring(0, index); if (shouldAnalyzePackage(pckName)) { analyzeClassFile(ClassFile.read(file.openInputStream())); } } }
Example 28
Source Project: TencentKona-8 Source File: CheckACC_STRICTFlagOnDefaultMethodTest.java License: GNU General Public License v2.0 | 6 votes |
void check(String dir, String... fileNames) throws IOException, ConstantPoolException, Descriptor.InvalidDescriptor { for (String fileName : fileNames) { ClassFile classFileToCheck = ClassFile.read(new File(dir, fileName)); for (Method method : classFileToCheck.methods) { if ((method.access_flags.flags & ACC_STRICT) == 0) { errors.add(String.format(offendingMethodErrorMessage, method.getName(classFileToCheck.constant_pool), classFileToCheck.getName())); } } } }
Example 29
Source Project: TencentKona-8 Source File: ClassReader.java License: GNU General Public License v2.0 | 6 votes |
public Element readFrom(InputStream in) throws IOException { try { this.in = in; ClassFile c = ClassFile.read(in); // read the file header if (c.magic != 0xCAFEBABE) { throw new RuntimeException("bad magic number " + Integer.toHexString(c.magic)); } cfile.setAttr("magic", "" + c.magic); int minver = c.minor_version; int majver = c.major_version; cfile.setAttr("minver", "" + minver); cfile.setAttr("majver", "" + majver); readCP(c); readClass(c); return result(); } catch (InvalidDescriptor | ConstantPoolException ex) { throw new IOException("Fatal error", ex); } }
Example 30
Source Project: TencentKona-8 Source File: ClassReader.java License: GNU General Public License v2.0 | 6 votes |
private void readClass(ClassFile c) throws IOException, ConstantPoolException, InvalidDescriptor { klass = new Element("Class"); cfile.add(klass); String thisk = c.getName(); klass.setAttr("name", thisk); AccessFlags af = new AccessFlags(c.access_flags.flags); klass.setAttr("flags", flagString(af, klass)); if (!"java/lang/Object".equals(thisk)) { klass.setAttr("super", c.getSuperclassName()); } for (int i : c.interfaces) { klass.add(new Element("Interface", "name", getCpString(i))); } readFields(c, klass); readMethods(c, klass); readAttributesFor(c, c.attributes, klass); klass.trimToSize(); }