import IR.TypeDescriptor;
public class FlatNew extends FlatNode {
- TempDescriptor dst;
- TypeDescriptor type;
-
- public FlatNew(TypeDescriptor type, TempDescriptor dst) {
- this.type=type;
- this.dst=dst;
- }
-
- public String toString() {
- return dst.toString()+"= NEW "+type.toString();
- }
+ TempDescriptor dst;
+ TypeDescriptor type;
+ TempDescriptor size;
+ boolean isglobal;
+
+ public FlatNew(TypeDescriptor type, TempDescriptor dst, boolean isglobal) {
+ this.type=type;
+ this.dst=dst;
+ this.size=null;
+ this.isglobal=isglobal;
+ }
+
+ public FlatNew(TypeDescriptor type, TempDescriptor dst, TempDescriptor size, boolean isglobal) {
+ this.type=type;
+ this.dst=dst;
+ this.size=size;
+ this.isglobal=isglobal;
+ }
+
+ public boolean isGlobal() {
+ return isglobal;
+ }
+
+ public String toString() {
+ String str = "FlatNew_"+dst.toString()+"= NEW "+type.toString();
+ if (size!=null)
+ str += "["+size.toString()+"]";
+ return str;
+ }
+
+ public int kind() {
+ return FKind.FlatNew;
+ }
+
+ public TempDescriptor [] writesTemps() {
+ return new TempDescriptor[] {dst};
+ }
+
+ public TempDescriptor [] readsTemps() {
+ if (size!=null)
+ return new TempDescriptor[] {size};
+ else
+ return new TempDescriptor[0];
+ }
+
+ public TempDescriptor getDst() {
+ return dst;
+ }
+
+ public TempDescriptor getSize() {
+ return size;
+ }
+
+ public TypeDescriptor getType() {
+ return type;
+ }
}