# HG changeset patch # User Andreas Woess # Date 1423666034 -3600 # Node ID 5b2589732c4576b9d23ef54140c534fcd9f56fa1 # Parent 16a2ea2078bcc5e9dff5872e96eeef220aec27ff Truffle: store byte and boolean as int in FrameWithoutBoxing diff -r 16a2ea2078bc -r 5b2589732c45 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/FrameWithoutBoxing.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/FrameWithoutBoxing.java Wed Feb 11 14:03:06 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/FrameWithoutBoxing.java Wed Feb 11 15:47:14 2015 +0100 @@ -105,9 +105,9 @@ } private byte getByteUnsafe(FrameSlot slot) { - long offset = getPrimitiveOffset(slot, FrameSlotKind.Byte); + long offset = getPrimitiveOffset(slot); boolean condition = this.getTags()[slot.getIndex()] == FrameSlotKind.Byte.ordinal(); - return unsafeGetByte(getPrimitiveLocals(), offset, condition, slot); + return (byte) unsafeGetInt(getPrimitiveLocals(), offset, condition, slot); } @Override @@ -117,8 +117,8 @@ } private void setByteUnsafe(FrameSlot slot, byte value) { - long offset = getPrimitiveOffset(slot, FrameSlotKind.Boolean); - unsafePutByte(getPrimitiveLocals(), offset, value, slot); + long offset = getPrimitiveOffset(slot); + unsafePutInt(getPrimitiveLocals(), offset, value, slot); } @Override @@ -128,9 +128,9 @@ } private boolean getBooleanUnsafe(FrameSlot slot) { - long offset = getPrimitiveOffset(slot, FrameSlotKind.Boolean); + long offset = getPrimitiveOffset(slot); boolean condition = this.getTags()[slot.getIndex()] == FrameSlotKind.Boolean.ordinal(); - return unsafeGetBoolean(getPrimitiveLocals(), offset, condition, slot); + return unsafeGetInt(getPrimitiveLocals(), offset, condition, slot) != 0; } @Override @@ -140,8 +140,8 @@ } private void setBooleanUnsafe(FrameSlot slot, boolean value) { - long offset = getPrimitiveOffset(slot, FrameSlotKind.Boolean); - unsafePutBoolean(getPrimitiveLocals(), offset, value, slot); + long offset = getPrimitiveOffset(slot); + unsafePutInt(getPrimitiveLocals(), offset, value ? 1 : 0, slot); } @Override @@ -151,7 +151,7 @@ } private float getFloatUnsafe(FrameSlot slot) { - long offset = getPrimitiveOffset(slot, FrameSlotKind.Float); + long offset = getPrimitiveOffset(slot); boolean condition = this.getTags()[slot.getIndex()] == FrameSlotKind.Float.ordinal(); return unsafeGetFloat(getPrimitiveLocals(), offset, condition, slot); } @@ -163,7 +163,7 @@ } private void setFloatUnsafe(FrameSlot slot, float value) { - long offset = getPrimitiveOffset(slot, FrameSlotKind.Float); + long offset = getPrimitiveOffset(slot); unsafePutFloat(getPrimitiveLocals(), offset, value, slot); } @@ -174,7 +174,7 @@ } private long getLongUnsafe(FrameSlot slot) { - long offset = getPrimitiveOffset(slot, FrameSlotKind.Long); + long offset = getPrimitiveOffset(slot); boolean condition = this.getTags()[slot.getIndex()] == FrameSlotKind.Long.ordinal(); return unsafeGetLong(getPrimitiveLocals(), offset, condition, slot); } @@ -186,7 +186,7 @@ } private void setLongUnsafe(FrameSlot slot, long value) { - long offset = getPrimitiveOffset(slot, FrameSlotKind.Long); + long offset = getPrimitiveOffset(slot); unsafePutLong(getPrimitiveLocals(), offset, value, slot); } @@ -197,7 +197,7 @@ } private int getIntUnsafe(FrameSlot slot) { - long offset = getPrimitiveOffset(slot, FrameSlotKind.Int); + long offset = getPrimitiveOffset(slot); boolean condition = this.getTags()[slot.getIndex()] == FrameSlotKind.Int.ordinal(); return unsafeGetInt(getPrimitiveLocals(), offset, condition, slot); } @@ -209,7 +209,7 @@ } private void setIntUnsafe(FrameSlot slot, int value) { - long offset = getPrimitiveOffset(slot, FrameSlotKind.Int); + long offset = getPrimitiveOffset(slot); unsafePutInt(getPrimitiveLocals(), offset, value, slot); } @@ -220,7 +220,7 @@ } private double getDoubleUnsafe(FrameSlot slot) { - long offset = getPrimitiveOffset(slot, FrameSlotKind.Double); + long offset = getPrimitiveOffset(slot); boolean condition = this.getTags()[slot.getIndex()] == FrameSlotKind.Double.ordinal(); return unsafeGetDouble(getPrimitiveLocals(), offset, condition, slot); } @@ -232,7 +232,7 @@ } private void setDoubleUnsafe(FrameSlot slot, double value) { - long offset = getPrimitiveOffset(slot, FrameSlotKind.Double); + long offset = getPrimitiveOffset(slot); unsafePutDouble(getPrimitiveLocals(), offset, value, slot); } @@ -269,8 +269,8 @@ } } - private static long getPrimitiveOffset(FrameSlot slot, FrameSlotKind forKind) { - return Unsafe.ARRAY_LONG_BASE_OFFSET + slot.getIndex() * (long) Unsafe.ARRAY_LONG_INDEX_SCALE + forKind.getByteOffset(); + private static long getPrimitiveOffset(FrameSlot slot) { + return Unsafe.ARRAY_LONG_BASE_OFFSET + slot.getIndex() * (long) Unsafe.ARRAY_LONG_INDEX_SCALE; } @Override @@ -362,16 +362,6 @@ } @SuppressWarnings("unused") - static boolean unsafeGetBoolean(Object receiver, long offset, boolean condition, Object locationIdentity) { - return UNSAFE.getBoolean(receiver, offset); - } - - @SuppressWarnings("unused") - static byte unsafeGetByte(Object receiver, long offset, boolean condition, Object locationIdentity) { - return UNSAFE.getByte(receiver, offset); - } - - @SuppressWarnings("unused") static int unsafeGetInt(Object receiver, long offset, boolean condition, Object locationIdentity) { return UNSAFE.getInt(receiver, offset); } @@ -397,16 +387,6 @@ } @SuppressWarnings("unused") - static void unsafePutBoolean(Object receiver, long offset, boolean value, Object locationIdentity) { - UNSAFE.putBoolean(receiver, offset, value); - } - - @SuppressWarnings("unused") - static void unsafePutByte(Object receiver, long offset, byte value, Object locationIdentity) { - UNSAFE.putByte(receiver, offset, value); - } - - @SuppressWarnings("unused") static void unsafePutInt(Object receiver, long offset, int value, Object locationIdentity) { UNSAFE.putInt(receiver, offset, value); } diff -r 16a2ea2078bc -r 5b2589732c45 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java Wed Feb 11 14:03:06 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java Wed Feb 11 15:47:14 2015 +0100 @@ -195,11 +195,7 @@ Kind graalKind = null; switch (kind) { case Boolean: - graalKind = Kind.Boolean; - break; case Byte: - graalKind = Kind.Byte; - break; case Int: graalKind = Kind.Int; break; diff -r 16a2ea2078bc -r 5b2589732c45 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/FrameWithoutBoxingSubstitutions.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/FrameWithoutBoxingSubstitutions.java Wed Feb 11 14:03:06 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/FrameWithoutBoxingSubstitutions.java Wed Feb 11 15:47:14 2015 +0100 @@ -41,12 +41,6 @@ public static native Object unsafeCast(Object value, Class clazz, boolean condition, boolean nonNull); @MacroSubstitution(macro = CustomizedUnsafeLoadMacroNode.class, isStatic = true) - public static native boolean unsafeGetBoolean(Object receiver, long offset, boolean condition, Object locationIdentity); - - @MacroSubstitution(macro = CustomizedUnsafeLoadMacroNode.class, isStatic = true) - public static native byte unsafeGetByte(Object receiver, long offset, boolean condition, Object locationIdentity); - - @MacroSubstitution(macro = CustomizedUnsafeLoadMacroNode.class, isStatic = true) public static native int unsafeGetInt(Object receiver, long offset, boolean condition, Object locationIdentity); @MacroSubstitution(macro = CustomizedUnsafeLoadMacroNode.class, isStatic = true) @@ -62,12 +56,6 @@ public static native Object unsafeGetObject(Object receiver, long offset, boolean condition, Object locationIdentity); @MacroSubstitution(macro = CustomizedUnsafeStoreMacroNode.class, isStatic = true) - public static native void unsafePutBoolean(Object receiver, long offset, boolean value, Object locationIdentity); - - @MacroSubstitution(macro = CustomizedUnsafeStoreMacroNode.class, isStatic = true) - public static native void unsafePutByte(Object receiver, long offset, byte value, Object locationIdentity); - - @MacroSubstitution(macro = CustomizedUnsafeStoreMacroNode.class, isStatic = true) public static native void unsafePutInt(Object receiver, long offset, int value, Object locationIdentity); @MacroSubstitution(macro = CustomizedUnsafeStoreMacroNode.class, isStatic = true) diff -r 16a2ea2078bc -r 5b2589732c45 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java Wed Feb 11 14:03:06 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/substitutions/TruffleGraphBuilderPlugins.java Wed Feb 11 15:47:14 2015 +0100 @@ -190,7 +190,7 @@ } }); - registerUnsafeLoadStorePlugins(r, Kind.Boolean, Kind.Byte, Kind.Int, Kind.Long, Kind.Float, Kind.Double, Kind.Object); + registerUnsafeLoadStorePlugins(r, Kind.Int, Kind.Long, Kind.Float, Kind.Double, Kind.Object); // CompilerDirectives.class r = new Registration(plugins, metaAccess, CompilerDirectives.class); diff -r 16a2ea2078bc -r 5b2589732c45 graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameSlotKind.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameSlotKind.java Wed Feb 11 14:03:06 2015 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameSlotKind.java Wed Feb 11 15:47:14 2015 +0100 @@ -24,25 +24,13 @@ */ package com.oracle.truffle.api.frame; -import java.nio.*; - public enum FrameSlotKind { - Object(0), - Illegal(0), - Long(0), - Int(0), - Double(0), - Float(0), - Boolean(3), - Byte(3); - - private final int byteOffset; - - private FrameSlotKind(int bigEndianByteOffset) { - this.byteOffset = ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN ? bigEndianByteOffset : 0; - } - - public int getByteOffset() { - return byteOffset; - } + Object, + Illegal, + Long, + Int, + Double, + Float, + Boolean, + Byte; }