# HG changeset patch # User Roland Schatz # Date 1396442632 -7200 # Node ID 96f8e6b6a81aef455a6e319a88bc21114eabebe5 # Parent e5a55d280f24385e951b630b492527d199c12cb3 Support for spill moves of values smaller than int. diff -r e5a55d280f24 -r 96f8e6b6a81a graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java --- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java Tue Apr 01 15:59:32 2014 +0200 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java Wed Apr 02 14:43:52 2014 +0200 @@ -459,6 +459,14 @@ private static void reg2stack(CompilationResultBuilder crb, AMD64MacroAssembler masm, Value result, Value input) { AMD64Address dest = (AMD64Address) crb.asAddress(result); switch (input.getKind()) { + case Boolean: + case Byte: + masm.movb(dest, asRegister(input)); + break; + case Short: + case Char: + masm.movw(dest, asRegister(input)); + break; case Int: masm.movl(dest, asRegister(input)); break; @@ -482,6 +490,18 @@ private static void stack2reg(CompilationResultBuilder crb, AMD64MacroAssembler masm, Value result, Value input) { AMD64Address src = (AMD64Address) crb.asAddress(input); switch (input.getKind()) { + case Boolean: + masm.movzbl(asRegister(result), src); + break; + case Byte: + masm.movsbl(asRegister(result), src); + break; + case Short: + masm.movswl(asRegister(result), src); + break; + case Char: + masm.movzwl(asRegister(result), src); + break; case Int: masm.movl(asRegister(result), src); break;