# HG changeset patch # User Christian Wimmer # Date 1400637483 25200 # Node ID fc6f8d143c68b6a186c0b00db45a0de36e1168e9 # Parent e28cb4a30e8618d83a750c15d257bfc12d673a6d Introduce method to customize type size diff -r e28cb4a30e86 -r fc6f8d143c68 graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java Tue May 20 18:57:27 2014 -0700 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java Tue May 20 18:58:03 2014 -0700 @@ -47,6 +47,8 @@ public interface FieldOffsetProvider { long objectFieldOffset(Field field); + + int getTypeSize(Class clazz); } private static final FieldOffsetProvider unsafeFieldOffsetProvider = new FieldOffsetProvider() { @@ -55,6 +57,17 @@ public long objectFieldOffset(Field field) { return unsafe.objectFieldOffset(field); } + + @Override + public int getTypeSize(Class clazz) { + if (!clazz.isPrimitive()) { + return Unsafe.ARRAY_OBJECT_INDEX_SCALE; + } else if (clazz == int.class) { + return Unsafe.ARRAY_INT_INDEX_SCALE; + } else { + throw new UnsupportedOperationException("unsupported field type: " + clazz); + } + } }; public static enum NodeFieldKind {