// ino.module.NotEqualOp.8606.package package de.dhbwstuttgart.syntaxtree.operator; // ino.end // ino.module.NotEqualOp.8606.import import java.util.Iterator; import java.util.Vector; import de.dhbwstuttgart.syntaxtree.statement.Binary; import de.dhbwstuttgart.syntaxtree.statement.Expr; import de.dhbwstuttgart.syntaxtree.statement.Null; import de.dhbwstuttgart.syntaxtree.type.Pair; import de.dhbwstuttgart.syntaxtree.type.RefType; import mycompiler.mybytecode.ClassFile; import mycompiler.mybytecode.CodeAttribute; import mycompiler.mybytecode.JVMCode; import mycompiler.myexception.CTypeReconstructionException; import mycompiler.myexception.JVMCodeException; import mycompiler.mytypereconstruction.CSupportData; import mycompiler.mytypereconstruction.CTriple; import mycompiler.mytypereconstruction.set.CSubstitutionSet; import mycompiler.mytypereconstruction.set.CTripleSet; import mycompiler.mytypereconstruction.set.CTypeAssumptionSet; import mycompiler.mytypereconstruction.unify.Unify; // ino.end // ino.class.NotEqualOp.24241.declaration public class NotEqualOp extends RelOp // ino.end // ino.class.NotEqualOp.24241.body { // ino.method.NotEqualOp.24245.definition public NotEqualOp(int offset, int variableLength) // ino.end // ino.method.NotEqualOp.24245.body { super(offset,variableLength); } // ino.end // ino.method.codegen.24248.definition public void codegen(ClassFile classfile, CodeAttribute code, Expr expr, boolean not, Vector paralist) throws JVMCodeException // ino.end // ino.method.codegen.24248.body { Expr expr1 = ((Binary)expr).get_Expr1(); Expr expr2 = ((Binary)expr).get_Expr2(); int type1 = JVMCode.get_nType(expr1.getTypeName()); int type2 = JVMCode.get_nType(expr2.getTypeName()); expr1.codegen(classfile, code, paralist); expr2.codegen(classfile, code, paralist); if((expr1 instanceof Null) || (expr2 instanceof Null)) if(type1==4 || type2==4) if(!not) code.add_code(JVMCode.ifnull); else code.add_code(JVMCode.ifnonnull); else throw new JVMCodeException("JVMCodeException: NotEqualOp: void codegen(ClassFile classfile, Code_attribute code, Expr expr, boolean not)"); else if(!not) code.add_code(JVMCode.if_ncmpeq(expr1.getTypeName())); else code.add_code(JVMCode.if_ncmpne(expr1.getTypeName())); code.add_code_short((short)7); code.add_code(JVMCode.iconst_1); code.add_code(JVMCode.goto_); code.add_code_short((short)4); code.add_code(JVMCode.iconst_0); } // ino.end // ino.method.if_codegen.24251.definition public void if_codegen(ClassFile classfile, CodeAttribute code, String type, boolean not) throws JVMCodeException // ino.end // ino.method.if_codegen.24251.body { if(type.equals("null")) if(!not) code.add_code(JVMCode.ifnull); else code.add_code(JVMCode.ifnonnull); else if(!not) code.add_code(JVMCode.if_ncmpeq(type)); else code.add_code(JVMCode.if_ncmpne(type)); } // ino.end } // ino.end