changeset 22205:aff4dce0b9f6

AMD64Move#const2stack: add support for Char.
author Josef Eisl <josef.eisl@jku.at>
date Mon, 13 Jul 2015 09:39:08 +0200
parents 339beb637508
children 016608c0ce59
files graal/com.oracle.graal.asm/src/com/oracle/graal/asm/NumUtil.java graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java
diffstat 2 files changed, 8 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.asm/src/com/oracle/graal/asm/NumUtil.java	Mon Jul 13 11:03:41 2015 +0200
+++ b/graal/com.oracle.graal.asm/src/com/oracle/graal/asm/NumUtil.java	Mon Jul 13 09:39:08 2015 +0200
@@ -93,6 +93,10 @@
         return s == (s & 0xFFFF);
     }
 
+    public static boolean isUShort(long s) {
+        return s == (s & 0xFFFF);
+    }
+
     public static boolean is32bit(long x) {
         return -0x80000000L <= x && x < 0x80000000L;
     }
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java	Mon Jul 13 11:03:41 2015 +0200
+++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java	Mon Jul 13 09:39:08 2015 +0200
@@ -673,6 +673,10 @@
                 assert NumUtil.isShort(imm) : "Is not in short range: " + imm;
                 AMD64MIOp.MOV.emit(masm, OperandSize.WORD, dest, (int) imm);
                 break;
+            case Char:
+                assert NumUtil.isUShort(imm) : "Is not in char range: " + imm;
+                AMD64MIOp.MOV.emit(masm, OperandSize.WORD, dest, (int) imm);
+                break;
             case Int:
             case Float:
                 assert NumUtil.isInt(imm) : "Is not in int range: " + imm;