--- /dev/null
+package IR.Flat;
+import IR.ClassDescriptor;
+import IR.FieldDescriptor;
+
+public class FlatOffsetNode extends FlatNode {
+ TempDescriptor dest;
+ ClassDescriptor cd;
+ FieldDescriptor field;
+
+ public FlatOffsetNode(FieldDescriptor field, ClassDescriptor cd, TempDescriptor dest) {
+ this.cd = cd;
+ this.field = field;
+ this.dest = dest;
+ }
+
+ public FieldDescriptor getField() {
+ return field;
+ }
+
+ public ClassDescriptor getClassDesc() {
+ return cd;
+ }
+
+ public String toString() {
+ return "FlatOffsetNode_"+ dest.toString()+"="+"{ "+ cd.toString()+", "+field.getSymbol()+" }";
+ }
+
+ public int kind() {
+ return FKind.FlatOffsetNode;
+ }
+
+ public TempDescriptor getDst() {
+ return dest;
+ }
+}
--- /dev/null
+package IR.Tree;
+import IR.FieldDescriptor;
+import IR.TypeDescriptor;
+import IR.ClassDescriptor;
+
+public class OffsetNode extends ExpressionNode {
+ TypeDescriptor td;
+ TypeDescriptor type;
+ ClassDescriptor cd;
+ FieldDescriptor fd;
+ String fieldname;
+
+ public OffsetNode(TypeDescriptor td, String fieldname) {
+ this.td = td;
+ this.fieldname = fieldname;
+ this.fd = null;
+ }
+
+ public OffsetNode(ClassDescriptor cd, String fieldname) {
+ this.cd = cd;
+ this.fieldname = fieldname;
+ this.fd = null;
+ }
+
+ public void setField(FieldDescriptor fd) {
+ this.fd = fd;
+ }
+
+ public String getFieldName() {
+ return fieldname;
+ }
+
+ public FieldDescriptor getField() {
+ return fd;
+ }
+
+ public void setType(TypeDescriptor argtype) {
+ this.type=argtype;
+ }
+
+ public void setClassDesc(ClassDescriptor cd) {
+ this.cd = cd;
+ }
+
+ public ClassDescriptor getClassDesc() {
+ return cd;
+ }
+
+ public TypeDescriptor getType() {
+ return type;
+ }
+
+ public String printNode(int indent) {
+ return "getoffset {"+ td.toString() + " , " + fieldname + " } ";
+ }
+
+ public int kind() {
+ return Kind.OffsetNode;
+ }
+}