/** * Returns the major version of the class file * targeted by this compilation. */ public int getMajorVersion() { ClassFile cf = thisClass.getClassFile2(); if (cf == null) return ClassFile.MAJOR_VERSION; // JDK 1.3 else return cf.getMajorVersion(); }
/** * Returns the major version of the class file * targeted by this compilation. */ public int getMajorVersion() { ClassFile cf = thisClass.getClassFile2(); if (cf == null) return ClassFile.MAJOR_VERSION; // JDK 1.3 return cf.getMajorVersion(); }
/** * Rebuilds a stack map table if the class file is for Java 6 * or later. Java 5 or older Java VMs do not recognize a stack * map table. If <code>doPreverify</code> is true, this method * also rebuilds a stack map for J2ME (CLDC). * * @param pool used for making type hierarchy. * @param cf rebuild if this class file is for Java 6 or later. * @see #rebuildStackMap(ClassPool) * @see #rebuildStackMapForME(ClassPool) * @see #doPreverify * @since 3.6 */ public void rebuildStackMapIf6(ClassPool pool, ClassFile cf) throws BadBytecode { if (cf.getMajorVersion() >= ClassFile.JAVA_6) rebuildStackMap(pool); if (doPreverify) rebuildStackMapForME(pool); }
/** * Rebuilds a stack map table if the class file is for Java 6 * or later. Java 5 or older Java VMs do not recognize a stack * map table. If <code>doPreverify</code> is true, this method * also rebuilds a stack map for J2ME (CLDC). * * @param pool used for making type hierarchy. * @param cf rebuild if this class file is for Java 6 or later. * @see #rebuildStackMap(ClassPool) * @see #rebuildStackMapForME(ClassPool) * @see #doPreverify * @since 3.6 */ public void rebuildStackMapIf6(ClassPool pool, ClassFile cf) throws BadBytecode { if (cf.getMajorVersion() >= ClassFile.JAVA_6) rebuildStackMap(pool); if (doPreverify) rebuildStackMapForME(pool); }
CtClass cc = cp.get(method.getDeclaringClass().getName()); useIndexMapping = cc.getClassFile().getMajorVersion() >= 52;
/** * Returns the major version of the class file * targeted by this compilation. */ public int getMajorVersion() { ClassFile cf = thisClass.getClassFile2(); if (cf == null) return ClassFile.MAJOR_VERSION; // JDK 1.3 else return cf.getMajorVersion(); }
/** * Returns the major version of the class file * targeted by this compilation. */ public int getMajorVersion() { ClassFile cf = thisClass.getClassFile2(); if (cf == null) return ClassFile.MAJOR_VERSION; // JDK 1.3 else return cf.getMajorVersion(); }
/** * Returns the major version of the class file * targeted by this compilation. */ public int getMajorVersion() { ClassFile cf = thisClass.getClassFile2(); if (cf == null) return ClassFile.MAJOR_VERSION; // JDK 1.3 else return cf.getMajorVersion(); }
/** * Returns the major version of the class file * targeted by this compilation. */ public int getMajorVersion() { ClassFile cf = thisClass.getClassFile2(); if (cf == null) return ClassFile.MAJOR_VERSION; // JDK 1.3 else return cf.getMajorVersion(); }
/** * Returns the major version of the class file * targeted by this compilation. */ public int getMajorVersion() { ClassFile cf = thisClass.getClassFile2(); if (cf == null) return ClassFile.MAJOR_VERSION; // JDK 1.3 else return cf.getMajorVersion(); }
/** * Rebuilds a stack map table if the class file is for Java 6 * or later. Java 5 or older Java VMs do not recognize a stack * map table. * * @param pool used for making type hierarchy. * @param cf rebuild if this class file is for Java 6 or later. * @see #rebuildStackMap(ClassPool) * @since 3.6 */ public void rebuildStackMapIf6(ClassPool pool, ClassFile cf) throws BadBytecode { if (cf.getMajorVersion() >= ClassFile.JAVA_6) rebuildStackMap(pool); }
private void debugClassFile(final ClassFile classFile) { if (!logger.isDebugEnabled()) { return; } logger.debug(" - class: {}",classFile.getName()); logger.debug(" -- Java version: {}.{}", classFile.getMajorVersion(), classFile.getMinorVersion()); logger.debug(" -- interface: {} abstract: {} final: {}", classFile.isInterface(), classFile.isAbstract(), classFile.isFinal()); logger.debug(" -- extends class: {}",classFile.getSuperclass()); logger.debug(" -- implements interfaces: {}", Arrays.deepToString(classFile.getInterfaces())); }
/** * Rebuilds a stack map table if the class file is for Java 6 * or later. Java 5 or older Java VMs do not recognize a stack * map table. If <code>doPreverify</code> is true, this method * also rebuilds a stack map for J2ME (CLDC). * * @param pool used for making type hierarchy. * @param cf rebuild if this class file is for Java 6 or later. * @see #rebuildStackMap(ClassPool) * @see #rebuildStackMapForME(ClassPool) * @since 3.6 */ public void rebuildStackMapIf6(ClassPool pool, ClassFile cf) throws BadBytecode { if (cf.getMajorVersion() >= ClassFile.JAVA_6) rebuildStackMap(pool); if (doPreverify) rebuildStackMapForME(pool); }
/** * Rebuilds a stack map table if the class file is for Java 6 * or later. Java 5 or older Java VMs do not recognize a stack * map table. If <code>doPreverify</code> is true, this method * also rebuilds a stack map for J2ME (CLDC). * * @param pool used for making type hierarchy. * @param cf rebuild if this class file is for Java 6 or later. * @see #rebuildStackMap(ClassPool) * @see #rebuildStackMapForME(ClassPool) * @see #doPreverify * @since 3.6 */ public void rebuildStackMapIf6(ClassPool pool, ClassFile cf) throws BadBytecode { if (cf.getMajorVersion() >= ClassFile.JAVA_6) rebuildStackMap(pool); if (doPreverify) rebuildStackMapForME(pool); }
/** * Rebuilds a stack map table if the class file is for Java 6 * or later. Java 5 or older Java VMs do not recognize a stack * map table. If <code>doPreverify</code> is true, this method * also rebuilds a stack map for J2ME (CLDC). * * @param pool used for making type hierarchy. * @param cf rebuild if this class file is for Java 6 or later. * @see #rebuildStackMap(ClassPool) * @see #rebuildStackMapForME(ClassPool) * @see #doPreverify * @since 3.6 */ public void rebuildStackMapIf6(ClassPool pool, ClassFile cf) throws BadBytecode { if (cf.getMajorVersion() >= ClassFile.JAVA_6) rebuildStackMap(pool); if (doPreverify) rebuildStackMapForME(pool); }
/** * Rebuilds a stack map table if the class file is for Java 6 * or later. Java 5 or older Java VMs do not recognize a stack * map table. If <code>doPreverify</code> is true, this method * also rebuilds a stack map for J2ME (CLDC). * * @param pool used for making type hierarchy. * @param cf rebuild if this class file is for Java 6 or later. * @see #rebuildStackMap(ClassPool) * @see #rebuildStackMapForME(ClassPool) * @see #doPreverify * @since 3.6 */ public void rebuildStackMapIf6(ClassPool pool, ClassFile cf) throws BadBytecode { if (cf.getMajorVersion() >= ClassFile.JAVA_6) rebuildStackMap(pool); if (doPreverify) rebuildStackMapForME(pool); }
public ClassVisitor(CtClass _c) { // Build the JavaId if(_c.isInterface()) throw new IllegalArgumentException("[" + _c.getName() + "]: Interfaces are not supported"); else if(_c.isEnum()) this.javaId = JavaId.parseEnumQName(_c.getName()); else this.javaId = JavaId.parseClassQName(_c.getName()); this.qname = this.javaId.getQualifiedName(); this.c = _c; // Remember major/minor final ClassFile cf = _c.getClassFile(); this.major = cf.getMajorVersion(); this.minor = cf.getMinorVersion(); // For nested classes, get the declaring (outer) class: It is used to skip the first argument in non-static inner classes try { this.declaringClass = _c.getDeclaringClass(); } catch (NotFoundException e) { // Only a problem in case of non-static inner classes, because in that case the 1st argument of the constructor cannot be removed, cf. method visitConstructors(boolean) if(!Modifier.isStatic(this.c.getModifiers())) ClassVisitor.getLog().warn("No declaring class found for non-static inner class [" + this.javaId.getQualifiedName() + "]");//: " + e.getMessage()); } writeCodeToTmp = VulasConfiguration.getGlobal().getConfiguration().getBoolean(CoreConfiguration.INSTR_WRITE_CODE, false); }
private JApiClassFileFormatVersion extractClassFileFormatVersion(Optional<CtClass> oldClassOptional, Optional<CtClass> newClassOptional) { if (oldClassOptional.isPresent() && newClassOptional.isPresent()) { CtClass oldClass = oldClassOptional.get(); CtClass newClass = newClassOptional.get(); ClassFile classFileOld = oldClass.getClassFile(); ClassFile classFileNew = newClass.getClassFile(); return new JApiClassFileFormatVersion(classFileOld.getMajorVersion(), classFileOld.getMinorVersion(), classFileNew.getMajorVersion(), classFileNew.getMinorVersion()); } else { if (oldClassOptional.isPresent()) { CtClass oldClass = oldClassOptional.get(); ClassFile classFileOld = oldClass.getClassFile(); return new JApiClassFileFormatVersion(classFileOld.getMajorVersion(), classFileOld.getMinorVersion(), -1, -1); } if (newClassOptional.isPresent()) { CtClass newClass = newClassOptional.get(); ClassFile classFileNew = newClass.getClassFile(); return new JApiClassFileFormatVersion(-1, -1, classFileNew.getMajorVersion(), classFileNew.getMinorVersion()); } return new JApiClassFileFormatVersion(-1, -1, -1, -1); } }
private JApiClassFileFormatVersion extractClassFileFormatVersion(Optional<CtClass> oldClassOptional, Optional<CtClass> newClassOptional) { if (oldClassOptional.isPresent() && newClassOptional.isPresent()) { CtClass oldClass = oldClassOptional.get(); CtClass newClass = newClassOptional.get(); ClassFile classFileOld = oldClass.getClassFile(); ClassFile classFileNew = newClass.getClassFile(); return new JApiClassFileFormatVersion(classFileOld.getMajorVersion(), classFileOld.getMinorVersion(), classFileNew.getMajorVersion(), classFileNew.getMinorVersion()); } else { if (oldClassOptional.isPresent()) { CtClass oldClass = oldClassOptional.get(); ClassFile classFileOld = oldClass.getClassFile(); return new JApiClassFileFormatVersion(classFileOld.getMajorVersion(), classFileOld.getMinorVersion(), -1, -1); } if (newClassOptional.isPresent()) { CtClass newClass = newClassOptional.get(); ClassFile classFileNew = newClass.getClassFile(); return new JApiClassFileFormatVersion(-1, -1, classFileNew.getMajorVersion(), classFileNew.getMinorVersion()); } return new JApiClassFileFormatVersion(-1, -1, -1, -1); } }
if (file.getMajorVersion() <= 48) return false;