home *** CD-ROM | disk | FTP | other *** search
- package sun.tools.tree;
-
- import java.util.Vector;
- import sun.tools.java.ClassDefinition;
- import sun.tools.java.CompilerError;
- import sun.tools.java.Constants;
- import sun.tools.java.Environment;
- import sun.tools.java.FieldDefinition;
- import sun.tools.java.Identifier;
- import sun.tools.java.IdentifierToken;
- import sun.tools.java.Type;
-
- public class LocalField extends FieldDefinition {
- int number;
- int readcount;
- int writecount;
- int scopeNumber;
- LocalField originalOfCopy;
- LocalField prev;
-
- public LocalField(int var1, ClassDefinition var2, int var3, Type var4, Identifier var5) {
- super(var1, var2, var3, var4, var5, (IdentifierToken[])null, (Node)null);
- this.number = -1;
- }
-
- public LocalField(ClassDefinition var1) {
- super(var1);
- this.number = -1;
- super.name = var1.getLocalName();
- }
-
- LocalField(FieldDefinition var1) {
- this(0, (ClassDefinition)null, 0, var1.getType(), Constants.idClass);
- super.accessPeer = var1;
- }
-
- final FieldDefinition getMember() {
- return super.name == Constants.idClass ? super.accessPeer : null;
- }
-
- public boolean isLocal() {
- return true;
- }
-
- public LocalField copyInline(Context var1) {
- LocalField var2 = new LocalField(super.where, super.clazz, super.modifiers, super.type, super.name);
- var2.readcount = this.readcount;
- var2.writecount = this.writecount;
- var2.originalOfCopy = this;
- ((FieldDefinition)var2).addModifiers(131072);
- if (super.accessPeer != null && (super.accessPeer.getModifiers() & 131072) == 0) {
- throw new CompilerError("local copyInline");
- } else {
- super.accessPeer = var2;
- return var2;
- }
- }
-
- public LocalField getCurrentInlineCopy(Context var1) {
- FieldDefinition var2 = super.accessPeer;
- if (var2 != null && (var2.getModifiers() & 131072) != 0) {
- LocalField var3 = (LocalField)var2;
- return var3;
- } else {
- return this;
- }
- }
-
- public static LocalField[] copyArguments(Context var0, FieldDefinition var1) {
- Vector var2 = var1.getArguments();
- LocalField[] var3 = new LocalField[var2.size()];
- var2.copyInto(var3);
-
- for(int var4 = 0; var4 < var3.length; ++var4) {
- var3[var4] = var3[var4].copyInline(var0);
- }
-
- return var3;
- }
-
- public static void doneWithArguments(Context var0, LocalField[] var1) {
- for(int var2 = 0; var2 < var1.length; ++var2) {
- if (var1[var2].originalOfCopy.accessPeer == var1[var2]) {
- var1[var2].originalOfCopy.accessPeer = null;
- }
- }
-
- }
-
- public boolean isInlineable(Environment var1, boolean var2) {
- return (((FieldDefinition)this).getModifiers() & 1048576) != 0;
- }
-
- public boolean isUsed() {
- return this.readcount != 0 || this.writecount != 0;
- }
-
- LocalField getAccessVar() {
- return (LocalField)super.accessPeer;
- }
-
- void setAccessVar(LocalField var1) {
- super.accessPeer = var1;
- }
-
- FieldDefinition getAccessVarField() {
- return super.accessPeer;
- }
-
- void setAccessVarField(FieldDefinition var1) {
- super.accessPeer = var1;
- }
-
- public Node getValue(Environment var1) {
- return (Expression)((FieldDefinition)this).getValue();
- }
-
- public int getNumber(Context var1) {
- return this.number;
- }
- }
-