home *** CD-ROM | disk | FTP | other *** search
- package sun.tools.tree;
-
- import sun.tools.asm.Assembler;
- import sun.tools.java.AmbiguousField;
- import sun.tools.java.ClassDeclaration;
- import sun.tools.java.ClassDefinition;
- import sun.tools.java.ClassNotFound;
- import sun.tools.java.CompilerError;
- import sun.tools.java.Constants;
- import sun.tools.java.Environment;
- import sun.tools.java.FieldDefinition;
- import sun.tools.java.Type;
-
- public class AssignAddExpression extends AssignOpExpression {
- public AssignAddExpression(int var1, Expression var2, Expression var3) {
- super(5, var1, var2, var3);
- }
-
- public int costInline(int var1, Environment var2, Context var3) {
- return super.type.isType(10) ? 25 : super.costInline(var1, var2, var3);
- }
-
- void code(Environment var1, Context var2, Assembler var3, boolean var4) {
- if (super.itype.isType(10)) {
- try {
- Type[] var5 = new Type[]{Type.tString};
- ClassDeclaration var6 = var1.getClassDeclaration(Constants.idJavaLangStringBuffer);
- var3.add(super.where, 187, var6);
- var3.add(super.where, 89);
- int var7 = super.left.codeLValue(var1, var2, var3);
- ((Expression)this).codeDup(var1, var2, var3, var7, 2);
- super.left.codeLoad(var1, var2, var3);
- super.left.ensureString(var1, var2, var3);
- ClassDefinition var8 = var2.field.getClassDefinition();
- FieldDefinition var9 = var6.getClassDefinition(var1).matchMethod(var1, var8, Constants.idInit, var5);
- var3.add(super.where, 183, var9);
- super.right.codeAppend(var1, var2, var3, var6, false);
- var9 = var6.getClassDefinition(var1).matchMethod(var1, var8, Constants.idToString);
- var3.add(super.where, 182, var9);
- if (var4) {
- ((Expression)this).codeDup(var1, var2, var3, Type.tString.stackSize(), var7);
- }
-
- super.left.codeStore(var1, var2, var3);
- } catch (ClassNotFound var10) {
- throw new CompilerError(var10);
- } catch (AmbiguousField var11) {
- throw new CompilerError(var11);
- }
- } else {
- super.code(var1, var2, var3, var4);
- }
- }
-
- void codeOperation(Environment var1, Context var2, Assembler var3) {
- var3.add(super.where, 96 + super.itype.getTypeCodeOffset());
- }
- }
-