/** * Performs preverification of the given program class pool. */ public void execute(ClassPool programClassPool) { // Clean up any old visitor info. programClassPool.classesAccept(new ClassCleaner()); // Preverify all methods. // Classes for JME must be preverified. // Classes for JSE 6 may optionally be preverified. // Classes for JSE 7 or higher must be preverified. programClassPool.classesAccept( new ClassVersionFilter(configuration.microEdition ? ClassConstants.CLASS_VERSION_1_0 : ClassConstants.CLASS_VERSION_1_6, new AllMethodVisitor( new AllAttributeVisitor( new CodePreverifier(configuration.microEdition))))); } }
equalVerificationTypes(variables, previousVariableTypes, variablesCount)) equalVerificationTypes(variables, previousVariableTypes, variablesCount)) additionalVariablesCount > 0 && additionalVariablesCount < 4 && equalVerificationTypes(variables, previousVariableTypes, previousVariablesCount))
public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute) { // TODO: Remove this when the preverifier has stabilized. // Catch any unexpected exceptions from the actual visiting method. try { // Process the code. visitCodeAttribute0(clazz, method, codeAttribute); } catch (RuntimeException ex) { System.err.println("Unexpected error while preverifying:"); System.err.println(" Class = ["+clazz.getName()+"]"); System.err.println(" Method = ["+method.getName(clazz)+method.getDescriptor(clazz)+"]"); System.err.println(" Exception = ["+ex.getClass().getName()+"] ("+ex.getMessage()+")"); throw ex; } }
correspondingVerificationTypes(programClass, programMethod, codeAttribute, correspondingVerificationTypes(programClass, programMethod, codeAttribute, correspondingVerificationTypes(programClass, programMethod, codeAttribute, compressStackMapFrames(initialVariables, stackMapFrameList);
correspondingVerificationType(programClass, programMethod, codeAttribute,
isDupOrSwap(codeAttribute.code[producerOffset])) return VerificationTypeFactory.createObjectType(createClassConstant(programClass, referenceValue));
return VerificationTypeFactory.createObjectType(createClassConstant(programClass, referenceValue));
correspondingVerificationTypes(programClass, programMethod, codeAttribute, correspondingVerificationTypes(programClass, programMethod, codeAttribute, correspondingVerificationTypes(programClass, programMethod, codeAttribute, compressStackMapFrames(initialVariables, stackMapFrameList);
correspondingVerificationType(programClass, programMethod, codeAttribute,
return VerificationTypeFactory.createObjectType(createClassConstant(programClass, referenceValue));
correspondingVerificationTypes(programClass, programMethod, codeAttribute, correspondingVerificationTypes(programClass, programMethod, codeAttribute, correspondingVerificationTypes(programClass, programMethod, codeAttribute, compressStackMapFrames(initialVariables, stackMapFrameList);
correspondingVerificationType(programClass, programMethod, codeAttribute,
public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute) { // TODO: Remove this when the preverifier has stabilized. // Catch any unexpected exceptions from the actual visiting method. try { // Process the code. visitCodeAttribute0(clazz, method, codeAttribute); } catch (RuntimeException ex) { System.err.println("Unexpected error while preverifying:"); System.err.println(" Class = ["+clazz.getName()+"]"); System.err.println(" Method = ["+method.getName(clazz)+method.getDescriptor(clazz)+"]"); System.err.println(" Exception = ["+ex.getClass().getName()+"] ("+ex.getMessage()+")"); throw ex; } }
/** * Performs preverification of the given program class pool. */ public void execute(ClassPool programClassPool) { // Clean up any old visitor info. programClassPool.classesAccept(new ClassCleaner()); // Preverify all methods. // Classes for JME must be preverified. // Classes for JSE 6 may optionally be preverified. // Classes for JSE 7 or higher must be preverified. programClassPool.classesAccept( new ClassVersionFilter(configuration.microEdition ? ClassConstants.CLASS_VERSION_1_0 : ClassConstants.CLASS_VERSION_1_6, new AllMethodVisitor( new AllAttributeVisitor( new CodePreverifier(configuration.microEdition))))); } }
equalVerificationTypes(variables, previousVariableTypes, variablesCount)) equalVerificationTypes(variables, previousVariableTypes, variablesCount)) additionalVariablesCount > 0 && additionalVariablesCount < 4 && equalVerificationTypes(variables, previousVariableTypes, previousVariablesCount))
return VerificationTypeFactory.createObjectType(createClassConstant(programClass, referenceValue));
correspondingVerificationTypes(programClass, programMethod, codeAttribute, correspondingVerificationTypes(programClass, programMethod, codeAttribute, correspondingVerificationTypes(programClass, programMethod, codeAttribute, compressStackMapFrames(initialVariables, stackMapFrameList);
correspondingVerificationType(programClass, programMethod, codeAttribute,
public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute) { // TODO: Remove this when the preverifier has stabilized. // Catch any unexpected exceptions from the actual visiting method. try { // Process the code. visitCodeAttribute0(clazz, method, codeAttribute); } catch (RuntimeException ex) { System.err.println("Unexpected error while preverifying:"); System.err.println(" Class = ["+clazz.getName()+"]"); System.err.println(" Method = ["+method.getName(clazz)+method.getDescriptor(clazz)+"]"); System.err.println(" Exception = ["+ex.getClass().getName()+"] ("+ex.getMessage()+")"); throw ex; } }
/** * Performs preverification of the given program class pool. */ public void execute(ClassPool programClassPool) { // Clean up any old visitor info. programClassPool.classesAccept(new ClassCleaner()); // Preverify all methods. // Classes for JME must be preverified. // Classes for JSE 6 may optionally be preverified. // Classes for JSE 7 or higher must be preverified. programClassPool.classesAccept( new ClassVersionFilter(configuration.microEdition ? ClassConstants.CLASS_VERSION_1_0 : ClassConstants.CLASS_VERSION_1_6, new AllMethodVisitor( new AllAttributeVisitor( new CodePreverifier(configuration.microEdition))))); } }