diff truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeFieldAccessor.java @ 21985:4858c5e074e9

clean up NodeFieldAccessor (remove #getOffset())
author Andreas Woess <andreas.woess@oracle.com>
date Fri, 26 Jun 2015 16:25:41 +0200
parents 08db96a633b9
children dc83cc1f94f2
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeFieldAccessor.java	Fri Jun 26 16:04:15 2015 +0200
+++ b/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeFieldAccessor.java	Fri Jun 26 16:25:41 2015 +0200
@@ -56,15 +56,12 @@
     private final Class<?> declaringClass;
     private final String name;
     protected final Class<?> type;
-    /* TODO: This field should be moved to UnsafeNodeField. */
-    protected final long offset;
 
-    protected NodeFieldAccessor(NodeFieldKind kind, Class<?> declaringClass, String name, Class<?> type, long offset) {
+    protected NodeFieldAccessor(NodeFieldKind kind, Class<?> declaringClass, String name, Class<?> type) {
         this.kind = kind;
         this.declaringClass = declaringClass;
         this.name = name;
         this.type = type;
-        this.offset = offset;
     }
 
     protected static NodeFieldAccessor create(NodeFieldKind kind, Field field) {
@@ -91,14 +88,6 @@
         return name;
     }
 
-    /*
-     * TODO: This method should be removed from here. It should be an abstract method in
-     * AbstractUnsafeNodeFieldAccessor, and implemented in UnsafeNodeField.
-     */
-    public long getOffset() {
-        return offset;
-    }
-
     public abstract void putObject(Node receiver, Object value);
 
     public abstract Object getObject(Node receiver);
@@ -142,11 +131,11 @@
 
     public abstract static class AbstractUnsafeNodeFieldAccessor extends NodeFieldAccessor {
 
-        protected AbstractUnsafeNodeFieldAccessor(NodeFieldKind kind, Class<?> declaringClas, String name, Class<?> type, long offset) {
-            super(kind, declaringClas, name, type, offset);
+        protected AbstractUnsafeNodeFieldAccessor(NodeFieldKind kind, Class<?> declaringClass, String name, Class<?> type) {
+            super(kind, declaringClass, name, type);
         }
 
-        /* TODO abstract long getOffset() should be defined here. */
+        public abstract long getOffset();
 
         @Override
         public void putObject(Node receiver, Object value) {
@@ -191,10 +180,16 @@
     }
 
     private static final class UnsafeNodeField extends AbstractUnsafeNodeFieldAccessor {
-        /* TODO the offset field should be here, not in NodeFieldAccessor. */
+        private final long offset;
 
         protected UnsafeNodeField(NodeFieldKind kind, Field field) {
-            super(kind, field.getDeclaringClass(), field.getName(), field.getType(), unsafeFieldOffsetProvider.objectFieldOffset(field));
+            super(kind, field.getDeclaringClass(), field.getName(), field.getType());
+            this.offset = unsafeFieldOffsetProvider.objectFieldOffset(field);
+        }
+
+        @Override
+        public long getOffset() {
+            return offset;
         }
     }
 
@@ -202,7 +197,7 @@
         private final Field field;
 
         protected ReflectionNodeField(NodeFieldKind kind, Field field) {
-            super(kind, field.getDeclaringClass(), field.getName(), field.getType(), unsafeFieldOffsetProvider.objectFieldOffset(field));
+            super(kind, field.getDeclaringClass(), field.getName(), field.getType());
             this.field = field;
             field.setAccessible(true);
         }