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 2007/10/26 06:12:34 UTC
svn commit: r588510 - in
/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32:
Ia32CodeEmitter.cpp Ia32IRManager.h
Author: varlax
Date: Thu Oct 25 21:12:34 2007
New Revision: 588510
URL: http://svn.apache.org/viewvc?rev=588510&view=rev
Log:
Initial fix for HARMONY-5016 [drlvm][jit][opt] code patching may corrupt calls to helpers on x86-64 in OPT mode
Modified:
harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32CodeEmitter.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.h
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32CodeEmitter.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32CodeEmitter.cpp?rev=588510&r1=588509&r2=588510&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32CodeEmitter.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32CodeEmitter.cpp Thu Oct 25 21:12:34 2007
@@ -500,7 +500,8 @@
bool callIsNotForPatching = rt && (rt->getKind() == Opnd::RuntimeInfo::Kind_InternalHelperAddress ||
rt->getKind() == Opnd::RuntimeInfo::Kind_HelperAddress);
- if (!callIsNotForPatching) { // the call may be patched at runtime
+ if (!callIsNotForPatching)
+ { // the call may be patched at runtime
// nops for self-jump <opcode + 8 bit displacement(-3)> for atomic write at aligned ip
// there are 3 bytes reserved to allow self-jump to be aligned for sure
// the first (must be the real inst in CFG to cheat code compactor that removes these nops
@@ -511,12 +512,12 @@
ip = nopInst->emit(ip);
// the last two
ip = (uint8*)EncoderBase::nops((char*)ip,2);
+ }
#ifdef _EM64T_
// these nops are required for call transformation from immediate into register form
// nops for MOV r11, callTarget (when !fit32(call_offset) ) <opcode + 8 byte address>
ip = (uint8*)EncoderBase::nops((char*)ip, 10);
#endif
- }
}
uint8 * instStartIp = ip;
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.h?rev=588510&r1=588509&r2=588510&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.h Thu Oct 25 21:12:34 2007
@@ -371,7 +371,7 @@
bool isLaidOut() const {return laidOut;}
void setLaidOut(bool v) {laidOut = true;}
- /** returns the pointer to the native code for this basic block */
+ /** returns the pointer to the emitted native code for the method. */
void * getCodeStartAddr() const {return codeStartAddr;}
void setCodeStartAddr(void* addr) {codeStartAddr = addr;}