Add support for 'static' fields in multicore gc version w/o tasks. Now we can have...
[IRC.git] / Robust / src / IR / Tree / NameNode.java
index 008c39646b7906be00dcf9be45724506950ad8c8..e2634647c804fdb10b02f34c02684c070614f317 100644 (file)
@@ -5,22 +5,33 @@ import IR.VarDescriptor;
 import IR.TagVarDescriptor;
 import IR.TypeDescriptor;
 import IR.FieldDescriptor;
+import IR.ClassDescriptor;
 
 public class NameNode extends ExpressionNode {
   NameDescriptor name;
   Descriptor vd;
   FieldDescriptor fd;
   ExpressionNode en;
+  ClassDescriptor cd;
 
   public NameNode(NameDescriptor nd) {
     this.name=nd;
     this.vd=null;
     this.fd=null;
+    this.cd = null;
   }
 
   public ExpressionNode getExpression() {
     return en;
   }
+  
+  public ClassDescriptor getClassDesc() {
+    return this.cd;
+  }
+  
+  public void setClassDesc(ClassDescriptor cd) {
+    this.cd = cd;
+  }
 
   /* Gross hack */
   public void setExpression(ExpressionNode en) {
@@ -58,9 +69,22 @@ public class NameNode extends ExpressionNode {
       return fd.getType();
     } else if (isTag())
       return new TypeDescriptor(TypeDescriptor.TAG);
-    else
+    else if(cd != null) {
+      TypeDescriptor tp = new TypeDescriptor(cd);
+      tp.setStatic();
+      return tp;
+    } else
       return ((VarDescriptor)vd).getType();
   }
+  
+  public TypeDescriptor getClassType() {
+    if(cd != null) {
+      TypeDescriptor tp = new TypeDescriptor(cd);
+      tp.setStatic();
+      return tp;
+    } else
+      return null;
+  }
 
   NameDescriptor getName() {
     return name;