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()