ClassFileWriterContext(String name, String superClassName, Class<T> type, String[] interfaceNames) { this.name = name; this.type = type; //FIXME Once we get rid of the old ClassFile stuff we should make the real names look like this //to start with name = ClassFileWriterContext.jvmClassName(name); superClassName = ClassFileWriterContext.jvmClassName(superClassName); for (int i = 0 ; i < interfaceNames.length ; i++) interfaceNames[i] = ClassFileWriterContext.jvmClassName(interfaceNames[i]); fileWriter = new ClassFileWriter(ClassFile.JAVA_4, 0); poolWriter = fileWriter.getConstPool(); thisClass = poolWriter.addClassInfo(name); superClass = poolWriter.addClassInfo(superClassName); interfaces = poolWriter.addClassInfo(interfaceNames); //Add default constructor mw = fileWriter.getMethodWriter(); mw.begin(Modifier.PUBLIC, MethodInfo.nameInit, "()V", null, null); mw.add(Opcode.ALOAD_0); mw.add(Opcode.INVOKESPECIAL); int signature = poolWriter.addNameAndTypeInfo(MethodInfo.nameInit, "()V"); mw.add16(poolWriter.addMethodrefInfo(superClass, signature)); mw.add(Opcode.RETURN); mw.codeEnd(1, 1); mw.end(null, null); }
ClassFileWriterContext(String name, String superClassName, Class<T> type, String[] interfaceNames) { this.name = name; this.type = type; //FIXME Once we get rid of the old ClassFile stuff we should make the real names look like this //to start with name = ClassFileWriterContext.jvmClassName(name); superClassName = ClassFileWriterContext.jvmClassName(superClassName); for (int i = 0 ; i < interfaceNames.length ; i++) interfaceNames[i] = ClassFileWriterContext.jvmClassName(interfaceNames[i]); fileWriter = new ClassFileWriter(ClassFile.JAVA_4, 0); poolWriter = fileWriter.getConstPool(); thisClass = poolWriter.addClassInfo(name); superClass = poolWriter.addClassInfo(superClassName); interfaces = poolWriter.addClassInfo(interfaceNames); //Add default constructor mw = fileWriter.getMethodWriter(); mw.begin(Modifier.PUBLIC, MethodInfo.nameInit, "()V", null, null); mw.add(Opcode.ALOAD_0); mw.add(Opcode.INVOKESPECIAL); int signature = poolWriter.addNameAndTypeInfo(MethodInfo.nameInit, "()V"); mw.add16(poolWriter.addMethodrefInfo(superClass, signature)); mw.add(Opcode.RETURN); mw.codeEnd(1, 1); mw.end(null, null); }
void endMethod(int maxLocals) { mw.codeEnd(maxStackDepth, maxLocals); mw.end(null, null); }
void endMethod(int maxLocals) { mw.codeEnd(maxStackDepth, maxLocals); mw.end(null, null); }