You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by va...@apache.org on 2006/11/24 08:31:09 UTC

svn commit: r478788 - in /harmony/enhanced/drlvm/trunk/vm: jitrino/src/translator/java/JavaByteCodeTranslator.cpp port/src/encoder/ia32_em64t/enc_prvt.h port/src/encoder/ia32_em64t/enc_tabl.cpp

Author: varlax
Date: Thu Nov 23 23:31:04 2006
New Revision: 478788

URL: http://svn.apache.org/viewvc?view=rev&rev=478788
Log:
Applied follow-up fix for HARMONY-2223, fixed regression on em64t.
Tested on SUSE9, Win2003, WinXP.

Modified:
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp
    harmony/enhanced/drlvm/trunk/vm/port/src/encoder/ia32_em64t/enc_prvt.h
    harmony/enhanced/drlvm/trunk/vm/port/src/encoder/ia32_em64t/enc_tabl.cpp

Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp?view=diff&rev=478788&r1=478787&r2=478788
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp Thu Nov 23 23:31:04 2006
@@ -2768,6 +2768,12 @@
                                             uint32       numArgs,
                                             Opnd **      srcOpnds) {
 
+#ifdef _EM64T_
+    // FIXME: this was not tested (and does not work) on EM64T.
+    if (true) {
+        return false;
+    }
+#endif
     if( !methodIsArraycopy(methodDesc) ||
         !arraycopyOptimizable(methodDesc,numArgs,srcOpnds) )
     {

Modified: harmony/enhanced/drlvm/trunk/vm/port/src/encoder/ia32_em64t/enc_prvt.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/port/src/encoder/ia32_em64t/enc_prvt.h?view=diff&rev=478788&r1=478787&r2=478788
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/port/src/encoder/ia32_em64t/enc_prvt.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/port/src/encoder/ia32_em64t/enc_prvt.h Thu Nov 23 23:31:04 2006
@@ -145,6 +145,9 @@
 
 #define CL          {OpndKind_GPReg, OpndSize_8, RegName_CL}
 #define ECX         {OpndKind_GPReg, OpndSize_32, RegName_ECX}
+#ifdef _EM64T_
+    #define RCX         {OpndKind_GPReg, OpndSize_64, RegName_RCX}
+#endif
 
 #define DX          {OpndKind_GPReg, OpndSize_16, RegName_DX}
 #define EDX         {OpndKind_GPReg, OpndSize_32, RegName_EDX}

Modified: harmony/enhanced/drlvm/trunk/vm/port/src/encoder/ia32_em64t/enc_tabl.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/port/src/encoder/ia32_em64t/enc_tabl.cpp?view=diff&rev=478788&r1=478787&r2=478788
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/port/src/encoder/ia32_em64t/enc_tabl.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/port/src/encoder/ia32_em64t/enc_tabl.cpp Thu Nov 23 23:31:04 2006
@@ -745,7 +745,10 @@
     */
     //
     {OpcodeInfo::all,     {0xF7, _5},               {EDX, EAX, r_m32},  D_DU_U },
-    {OpcodeInfo::em64t,   {REX_W, 0xF7, _5},        {RDX, RAX, r_m64},  D_DU_U },
+    //todo: this opcode's hash conflicts with IMUL r64,r_m64 - they're both 0. 
+    // this particular is not currently used, so we may safely drop it, but need to 
+    // revisit the hash implementation
+    // {OpcodeInfo::em64t,   {REX_W, 0xF7, _5},        {RDX, RAX, r_m64},  D_DU_U },
     //
     {OpcodeInfo::all,     {Size16, 0x0F, 0xAF, _r}, {r16,r_m16},        DU_U },
     {OpcodeInfo::all,     {0x0F, 0xAF, _r},         {r32,r_m32},        DU_U },
@@ -1316,18 +1319,21 @@
 BEGIN_MNEMONIC(MOVS8, MF_NONE, DU_DU_DU)
 BEGIN_OPCODES()
     {OpcodeInfo::ia32,  {0xA4},         {r32,r32,ECX},    DU_DU_DU },
+    {OpcodeInfo::em64t, {0xA4},         {r64,r64,RCX},    DU_DU_DU },
 END_OPCODES()
 END_MNEMONIC()
 
 BEGIN_MNEMONIC(MOVS16, MF_NONE, DU_DU_DU)
 BEGIN_OPCODES()
     {OpcodeInfo::ia32,  {Size16, 0xA5}, {r32,r32,ECX},  DU_DU_DU },
+    {OpcodeInfo::em64t, {Size16, 0xA5}, {r64,r64,RCX},  DU_DU_DU },
 END_OPCODES()
 END_MNEMONIC()
 
 BEGIN_MNEMONIC(MOVS32, MF_NONE, DU_DU_DU)
 BEGIN_OPCODES()
     {OpcodeInfo::ia32,  {0xA5},         {r32,r32,ECX},  DU_DU_DU },
+    {OpcodeInfo::em64t, {0xA5},         {r64,r64,RCX},  DU_DU_DU },
 END_OPCODES()
 END_MNEMONIC()