home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / tools / tree / AssignAddExpression.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  3.2 KB  |  59 lines

  1. package sun.tools.tree;
  2.  
  3. import sun.tools.asm.Assembler;
  4. import sun.tools.java.AmbiguousField;
  5. import sun.tools.java.ClassDeclaration;
  6. import sun.tools.java.ClassDefinition;
  7. import sun.tools.java.ClassNotFound;
  8. import sun.tools.java.CompilerError;
  9. import sun.tools.java.Constants;
  10. import sun.tools.java.Environment;
  11. import sun.tools.java.FieldDefinition;
  12. import sun.tools.java.Type;
  13.  
  14. public class AssignAddExpression extends AssignOpExpression {
  15.    public AssignAddExpression(int var1, Expression var2, Expression var3) {
  16.       super(5, var1, var2, var3);
  17.    }
  18.  
  19.    public int costInline(int var1, Environment var2, Context var3) {
  20.       return super.type.isType(10) ? 25 : super.costInline(var1, var2, var3);
  21.    }
  22.  
  23.    void code(Environment var1, Context var2, Assembler var3, boolean var4) {
  24.       if (super.itype.isType(10)) {
  25.          try {
  26.             Type[] var5 = new Type[]{Type.tString};
  27.             ClassDeclaration var6 = var1.getClassDeclaration(Constants.idJavaLangStringBuffer);
  28.             var3.add(super.where, 187, var6);
  29.             var3.add(super.where, 89);
  30.             int var7 = super.left.codeLValue(var1, var2, var3);
  31.             ((Expression)this).codeDup(var1, var2, var3, var7, 2);
  32.             super.left.codeLoad(var1, var2, var3);
  33.             super.left.ensureString(var1, var2, var3);
  34.             ClassDefinition var8 = var2.field.getClassDefinition();
  35.             FieldDefinition var9 = var6.getClassDefinition(var1).matchMethod(var1, var8, Constants.idInit, var5);
  36.             var3.add(super.where, 183, var9);
  37.             super.right.codeAppend(var1, var2, var3, var6, false);
  38.             var9 = var6.getClassDefinition(var1).matchMethod(var1, var8, Constants.idToString);
  39.             var3.add(super.where, 182, var9);
  40.             if (var4) {
  41.                ((Expression)this).codeDup(var1, var2, var3, Type.tString.stackSize(), var7);
  42.             }
  43.  
  44.             super.left.codeStore(var1, var2, var3);
  45.          } catch (ClassNotFound var10) {
  46.             throw new CompilerError(var10);
  47.          } catch (AmbiguousField var11) {
  48.             throw new CompilerError(var11);
  49.          }
  50.       } else {
  51.          super.code(var1, var2, var3, var4);
  52.       }
  53.    }
  54.  
  55.    void codeOperation(Environment var1, Context var2, Assembler var3) {
  56.       var3.add(super.where, 96 + super.itype.getTypeCodeOffset());
  57.    }
  58. }
  59.