Mercurial > hg > truffle
changeset 15834:fc6f8d143c68
Introduce method to customize type size
author | Christian Wimmer <christian.wimmer@oracle.com> |
---|---|
date | Tue, 20 May 2014 18:58:03 -0700 |
parents | e28cb4a30e86 |
children | 187634c8099c |
files | graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java |
diffstat | 1 files changed, 13 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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 {