Currently Word32 and Int32 values are represented boxed. Some benchmarks (e.g., DLX) may benefit from using an unboxed representation of Word32 values. When GC is enabled, a possibility is to wrap Word32/Int32 operations in code that shifts values one bit. Thus the representation is [v] = (v<<1)+1.
Also, conversions like Word.fromLargeWord o Word32.toLargeWord are problematic as they involve boxing! Perhaps we can find a better way to deal with these conversions... Internally, we need operations like Word.fromWord32, which can be implemented without boxing also when GC is enabled.
Currently Word32 and Int32 values are represented boxed. Some benchmarks (e.g., DLX) may benefit from using an unboxed representation of Word32 values. When GC is enabled, a possibility is to wrap Word32/Int32 operations in code that shifts values one bit. Thus the representation is
[v] = (v<<1)+1.Also, conversions like
Word.fromLargeWord o Word32.toLargeWordare problematic as they involve boxing! Perhaps we can find a better way to deal with these conversions... Internally, we need operations likeWord.fromWord32, which can be implemented without boxing also when GC is enabled.