Mercurial > hg > truffle
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); }