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/12/05 13:48:36 UTC
svn commit: r482629 - in /harmony/enhanced/drlvm/trunk: build/make/
build/make/components/ build/make/components/vm/
vm/jitrino/src/codegenerator/ipf/ vm/jitrino/src/codegenerator/ipf/include/
Author: varlax
Date: Tue Dec 5 04:48:35 2006
New Revision: 482629
URL: http://svn.apache.org/viewvc?view=rev&rev=482629
Log:
Applied HARMONMY-2393 [drlvm][ipf] make jitrino compilable on ipf; ignoring white space changes in the patch.
Did not test.
Modified:
harmony/enhanced/drlvm/trunk/build/make/components/vm.xml
harmony/enhanced/drlvm/trunk/build/make/components/vm/jitrino.xml
harmony/enhanced/drlvm/trunk/build/make/deploy.xml
harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfCodeGenerator.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfEmitter.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfInstCodeSelector.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfRuntimeInterface.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeGenerator.h
harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeSelector.h
Modified: harmony/enhanced/drlvm/trunk/build/make/components/vm.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/build/make/components/vm.xml?view=diff&rev=482629&r1=482628&r2=482629
==============================================================================
--- harmony/enhanced/drlvm/trunk/build/make/components/vm.xml (original)
+++ harmony/enhanced/drlvm/trunk/build/make/components/vm.xml Tue Dec 5 04:48:35 2006
@@ -48,6 +48,7 @@
vm.gc_cc,
vm.interpreter,
vm.hythr,
+ vm.jitrino,
vm.kernel_classes" />
</select>
Modified: harmony/enhanced/drlvm/trunk/build/make/components/vm/jitrino.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/build/make/components/vm/jitrino.xml?view=diff&rev=482629&r1=482628&r2=482629
==============================================================================
--- harmony/enhanced/drlvm/trunk/build/make/components/vm/jitrino.xml (original)
+++ harmony/enhanced/drlvm/trunk/build/make/components/vm/jitrino.xml Tue Dec 5 04:48:35 2006
@@ -25,7 +25,7 @@
-->
<project name="vm.jitrino">
- <target name="init">
+ <target name="init" depends="common_vm">
<property name="build.depends" value="extra.apr,vm.vmcore,vm.encoder,vm.hythr" />
<property name="outtype" value="shared" />
<property name="libname" value="jitrino" />
@@ -66,9 +66,9 @@
<select arch="ipf">
<include name="codegenerator/ipf/*.cpp" />
- <include name="codegenerator/ipf/msched/*.cpp" />
+ <!-- <include name="codegenerator/ipf/msched/*.cpp" />
<include name="codegenerator/ipf/msched/MachineModel/common/*.cpp" />
- <include name="codegenerator/ipf/msched/MachineModel/mckinley/*.cpp" />
+ <include name="codegenerator/ipf/msched/MachineModel/mckinley/*.cpp" /> -->
</select>
<select arch="ia32,em64t">
@@ -98,9 +98,10 @@
<select arch="ipf">
<include name="codegenerator/ipf" />
- <include name="codegenerator/ipf/msched" />
+ <include name="codegenerator/ipf/include" />
+ <!-- <include name="codegenerator/ipf/msched" />
<include name="codegenerator/ipf/msched/MachineModel/common" />
- <include name="codegenerator/ipf/msched/MachineModel/mckinley" />
+ <include name="codegenerator/ipf/msched/MachineModel/mckinley" /> -->
</select>
</dirset>
</includepath>
Modified: harmony/enhanced/drlvm/trunk/build/make/deploy.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/build/make/deploy.xml?view=diff&rev=482629&r1=482628&r2=482629
==============================================================================
--- harmony/enhanced/drlvm/trunk/build/make/deploy.xml (original)
+++ harmony/enhanced/drlvm/trunk/build/make/deploy.xml Tue Dec 5 04:48:35 2006
@@ -42,7 +42,7 @@
<other>bin/default:*</other>
</interpreter>
- <select arch="ia32,em64t">
+ <select arch="ia32,em64t,ipf">
<jitrino>
<shared>bin/default:jitrino</shared>
<other>bin/default:*</other>
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfCodeGenerator.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfCodeGenerator.cpp?view=diff&rev=482629&r1=482628&r2=482629
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfCodeGenerator.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfCodeGenerator.cpp Tue Dec 5 04:48:35 2006
@@ -52,24 +52,20 @@
//----------------------------------------------------------------------------------------//
-bool CodeGenerator::genCode(MethodCodeSelector &methodCodeSelector) {
+void CodeGenerator::genCode(SessionAction *sa, MethodCodeSelector &methodCodeSelector) {
MemoryManager mm(0x1000, "IpfCodeGenerator");
cfg = new(mm) Cfg(mm, compilationInterface);
- IrPrinter irPrinter(*cfg, (char *)Log::getLogDirName());
+ IrPrinter irPrinter(*cfg, "LOG"); //(char *)Log::getLogDirName());
methodDesc = compilationInterface.getMethodToCompile();
- bool ipfLogIsOnSaved = ipfLogIsOn;
- if (isIpfLogoutMethod(methodDesc)) {
- ipfLogIsOn = true;
- }
if(LOG_ON) {
const char *methodName = methodDesc->getName();
const char *methodTypeName = (methodDesc->getParentType()!=NULL
? methodDesc->getParentType()->getName()
: "");
const char * methodSignature = methodDesc->getSignatureString();
-
+
IPF_LOG << endl << methodTypeName << "." << methodName << methodSignature << endl;
}
@@ -128,9 +124,6 @@
if(ret) IPF_LOG << endl << "=========== Compilation Successful ===========================" << endl;
else IPF_LOG << endl << "=========== Compilation Failed ===============================" << endl;
-
- ipfLogIsOn = ipfLogIsOnSaved;
- return ret;
}
} // IPF
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfEmitter.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfEmitter.cpp?view=diff&rev=482629&r1=482628&r2=482629
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfEmitter.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfEmitter.cpp Tue Dec 5 04:48:35 2006
@@ -28,45 +28,6 @@
#include "IpfVerifier.h"
#include <iomanip>
-#define SIGILL_BREAK_ACTION_HANDLER
-
-#ifdef SIGILL_BREAK_ACTION_HANDLER
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-#define _REENTRANT
-#include <signal.h>
-#include <errno.h>
-#include <ucontext.h>
-
-void __stdcall sighandler(int sn, siginfo_t *si, void *_sc) {
- struct sigaction signal_action;
- struct ucontext * signal_ucontext;
- int saved_errno = errno;
-
- if (sn==SIGILL && si->si_code==ILL_BREAK && si->si_imm==INST_BREAKPOINT_IMM_VALUE) {
- signal_ucontext = (struct ucontext *)_sc;
-
- if ( (signal_ucontext->_u._mc.sc_ip & 0x03)==2 ) {
- signal_ucontext->_u._mc.sc_ip = (signal_ucontext->_u._mc.sc_ip & ~0x03) + 0x10;
- } else {
- signal_ucontext->_u._mc.sc_ip++;
- }
- //printf("-- sighandler() for signal %d, si_code %d, si_imm %x\n", sn, si->si_code, si->si_imm);
-
- signal_action.sa_flags = SA_SIGINFO;
- signal_action.sa_sigaction = sighandler;
- if (sigaction(SIGILL, &signal_action, NULL)) {
- printf("Sigaction returned error = %d\n", errno);
- }
- }
-
- errno = saved_errno;
- return;
-}
-
-#endif
-
namespace Jitrino {
namespace IPF {
@@ -356,36 +317,12 @@
, new(mm) Inst(mm, INST_NOP, p0, IMM(INST_BREAKPOINT_IMM_VALUE)));
}
} else {
-#ifdef SIGILL_BREAK_ACTION_HANDLER
- if (ipfEnableSigillBreakActionHandler) {
- struct sigaction signal_action;
-
- signal_action.sa_flags = SA_SIGINFO;
- signal_action.sa_sigaction = sighandler;
- if (sigaction(SIGILL, &signal_action, NULL)) {
- printf("Sigaction returned error = %d\n", errno);
- }
-
- bundles->addBundle(0x01
- , new(mm) Inst(mm, INST_NOP, p0, IMM(INST_BREAKPOINT_IMM_VALUE))
- , new(mm) Inst(mm, INST_BREAK, p0, IMM(INST_BREAKPOINT_IMM_VALUE))
- , new(mm) Inst(mm, INST_NOP, p0, IMM(INST_BREAKPOINT_IMM_VALUE)));
- } else {
- if (_nop4cafe) {
- bundles->addBundle(0x01
- , new(mm) Inst(mm, INST_NOP, p0, IMM(INST_BREAKPOINT_IMM_VALUE))
- , new(mm) Inst(mm, INST_NOP, p0, IMM(INST_BREAKPOINT_IMM_VALUE))
- , new(mm) Inst(mm, INST_NOP, p0, IMM(INST_BREAKPOINT_IMM_VALUE)));
- }
- }
-#else
if (_nop4cafe) {
bundles->addBundle(0x01
, new(mm) Inst(mm, INST_NOP, p0, IMM(INST_BREAKPOINT_IMM_VALUE))
, new(mm) Inst(mm, INST_NOP, p0, IMM(INST_BREAKPOINT_IMM_VALUE))
, new(mm) Inst(mm, INST_NOP, p0, IMM(INST_BREAKPOINT_IMM_VALUE)));
}
-#endif
}
};
@@ -405,22 +342,13 @@
bbs = new(mm) vectorbb;
BbNode * node = (BbNode *)cfg.getEnterNode();
EmitterBb * bbdesc;
- bool break4cafe = ipfEnableSigillBreakActionHandler
- && (ipfEnableAutoSigillBreak
- || isIpfBreakMethod(compilationinterface.getMethodToCompile()));
+ bool break4cafe = false;
bool nop4cafe = false;
do {
- // for debugging
- // tricking(node->getInsts(), mm, cfg);
-
- if (isIpfBreakBb(node->getId())) {
- bbdesc = new(mm) EmitterBb(cfg, compilationinterface, node, true, nop4cafe);
- } else {
- bbdesc = new(mm) EmitterBb(cfg, compilationinterface, node, break4cafe, nop4cafe);
- }
+ bbdesc = new(mm) EmitterBb(cfg, compilationinterface, node, break4cafe, nop4cafe);
bbs->push_back(bbdesc);
- if (!ipfSigillBreakAllBB) break4cafe = false;
+ break4cafe = false;
nop4cafe = false;
} while( (node = node->getLayoutSucc()) != NULL );
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfInstCodeSelector.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfInstCodeSelector.cpp?view=diff&rev=482629&r1=482628&r2=482629
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfInstCodeSelector.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfInstCodeSelector.cpp Tue Dec 5 04:48:35 2006
@@ -1742,7 +1742,7 @@
};
RegOpnd *retOpnd = opndManager->newRegOpnd(OPND_G_REG, DATA_BASE);
- CompilationInterface::RuntimeHelperId hId = CompilationInterface::Helper_LdString;
+ CompilationInterface::RuntimeHelperId hId = CompilationInterface::Helper_LdRef;
uint64 address = (uint64) compilationInterface.getRuntimeHelperAddress(hId);
Opnd *helperAddress = opndManager->newImm(address);
@@ -3406,52 +3406,6 @@
default : IPF_ERR << "unexpected dataKind " << dataKind << endl;
}
return CMPLT_INVALID;
-}
-
-//----------------------------------------------------------------------------//
-
-void IpfInstCodeSelector::ipfBreakCounted(RegOpnd *truePred) {
- addNewInst(INST_BREAK, truePred, opndManager->newImm(INST_BREAKPOINT_IMM_VALUE));
-}
-
-//----------------------------------------------------------------------------//
-
-void IpfInstCodeSelector::ipfBreakCounted(RegOpnd *r2, Completer cmp, int val) {
- // cmp4.crel.ctype p1, p2 = r2, r3
-
- RegOpnd *p1 = opndManager->newRegOpnd(OPND_P_REG, DATA_P);
- RegOpnd *r3 = opndManager->newRegOpnd(OPND_G_REG, DATA_I64);
-
- addNewInst(INST_MOVL, p0, r3, opndManager->newImm(val));
- addNewInst(INST_CMP, cmp, p0, p1, p0, r2, r3);
- addNewInst(INST_BREAK, p1, opndManager->newImm(INST_BREAKPOINT_IMM_VALUE));
-}
-
-//----------------------------------------------------------------------------------------//
-
-void IpfInstCodeSelector::ipfBreakCounted(int cnt) {
- if (cnt==-1) cnt = ipfSigillBreakCount;
-
- if (cnt==0) {
- addNewInst(INST_BREAK, p0, opndManager->newImm(INST_BREAKPOINT_IMM_VALUE));
- } else {
- RegOpnd *r0 = opndManager->getR0();
- Int64Constant *ic = new(mm) Int64Constant(0);
- ConstantRef *constref = opndManager->newConstantRef(ic);
- RegOpnd *r3 = opndManager->newRegOpnd(OPND_G_REG, DATA_I64);
- RegOpnd *r1 = opndManager->newRegOpnd(OPND_G_REG, DATA_I64);
- RegOpnd *r2 = opndManager->newRegOpnd(OPND_G_REG, DATA_I64);
- Completer cmplt = toCmpltSz(DATA_I64);
- RegOpnd *p1 = opndManager->newRegOpnd(OPND_P_REG, DATA_P);
-
- addNewInst(INST_MOVL, p0, r3, constref);
- addNewInst(INST_LD, cmplt, p0, r1, r3);
- addNewInst(INST_ADD, p0, r1, r1, r0, opndManager->newImm(1));
- addNewInst(INST_ST, cmplt, p0, r3, r1);
- addNewInst(INST_MOVL, p0, r2, opndManager->newImm(cnt));
- addNewInst(INST_CMP, CMPLT_CMP_CREL_LE, p0, p1, p0, r2, r1);
- addNewInst(INST_BREAK, p1, opndManager->newImm(INST_BREAKPOINT_IMM_VALUE));
- }
}
} //namespace IPF
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfRuntimeInterface.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfRuntimeInterface.cpp?view=diff&rev=482629&r1=482628&r2=482629
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfRuntimeInterface.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfRuntimeInterface.cpp Tue Dec 5 04:48:35 2006
@@ -296,16 +296,18 @@
void **mptrPtr = getContextValue(mptr);
void **basePtr = getContextValue(base);
-// uint64 *u1 = (uint64 *)basePtr;
-// uint64 *u2 = (uint64 *)mptrPtr;
+ uint64 *u1 = (uint64 *)basePtr;
+ uint64 *u2 = (uint64 *)mptrPtr;
+ int offset = *u2 - *u1;
// cout << " report mptr: " << - (mptr+1) << flush;
// cout << " " << u2 << flush;
// cout << " " << hex << *u2 << dec << flush;
// cout << " base: " << base << flush;
// cout << " " << u1 << flush;
-// cout << " " << hex << *u1 << dec << endl;
-
- gcInterface->enumerateRootManagedReferenceWithBase(mptrPtr, basePtr);
+// cout << " " << hex << *u1 << dec; // << endl;
+// cout << " offset " << offset << endl;
+
+ gcInterface->enumerateRootManagedReference(mptrPtr, offset);
}
//----------------------------------------------------------------------------------------//
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeGenerator.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeGenerator.h?view=diff&rev=482629&r1=482628&r2=482629
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeGenerator.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeGenerator.h Tue Dec 5 04:48:35 2006
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
+
/**
* @author Intel, Konstantin M. Anisimov, Igor V. Chebykin
*
@@ -25,6 +25,7 @@
#include "MemoryManager.h"
#include "IpfCfg.h"
+#include "PMFAction.h"
namespace Jitrino {
namespace IPF {
@@ -36,17 +37,16 @@
class CodeGenerator : public ::Jitrino::CodeGenerator {
public:
CodeGenerator(MemoryManager&, CompilationInterface&);
- bool genCode(MethodCodeSelector&);
-// void genCode(SessionAction* s, MethodCodeSelector& m) {} // TODO
+ void genCode(SessionAction*, MethodCodeSelector&);
virtual ~CodeGenerator() {}
protected:
- MemoryManager &memoryManager;
+ MemoryManager &memoryManager;
CompilationInterface &compilationInterface;
MethodDesc *methodDesc;
Cfg *cfg;
-};
+};
} // IPF
} // Jitrino
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeSelector.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeSelector.h?view=diff&rev=482629&r1=482628&r2=482629
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeSelector.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeSelector.h Tue Dec 5 04:48:35 2006
@@ -46,7 +46,7 @@
void genVars(uint32, VarCodeSelector&);
void setMethodDesc(MethodDesc*);
void genCFG(uint32, CFGCodeSelector&, bool);
- void setProfileInfo(CodeProfiler*) {}
+// void setProfileInfo(CodeProfiler*) {}
virtual ~IpfMethodCodeSelector() {}
protected:
@@ -298,7 +298,24 @@
void tau_stField(CG_OpndHandle*, CG_OpndHandle*, Type::Tag, FieldDesc*, bool, CG_OpndHandle*, CG_OpndHandle*, CG_OpndHandle*) { NOT_IMPLEMENTED_V("tau_stField") }
void tau_stElem(CG_OpndHandle*, CG_OpndHandle*, CG_OpndHandle*, bool, CG_OpndHandle*, CG_OpndHandle*, CG_OpndHandle*) { NOT_IMPLEMENTED_V("tau_stElem") }
void optimisticBalancedMonitorExit(CG_OpndHandle*, CG_OpndHandle*, CG_OpndHandle*) { NOT_IMPLEMENTED_V("optimisticBalancedMonitorExit") }
- CG_OpndHandle *callvmhelper(uint32, CG_OpndHandle**, Type *, VMHelperCallOp::Id) { NOT_IMPLEMENTED_C("callvmhelper") }
+
+ //---------------------------------------------------------------------------//
+ // TRANSITION
+ //---------------------------------------------------------------------------//
+
+ CG_OpndHandle* callvmhelper(uint32, CG_OpndHandle**, Type*, VMHelperCallOp::Id, InlineInfo*) { NOT_IMPLEMENTED_C("unbox") }
+
+ CG_OpndHandle* convUPtrToObject(ObjectType*, CG_OpndHandle*) { NOT_IMPLEMENTED_C("convUPtrToObject") }
+ CG_OpndHandle* convToUPtr(PtrType*, CG_OpndHandle*) { NOT_IMPLEMENTED_C("convToUPtr") }
+ CG_OpndHandle* tau_ldIntfTableAddr(Type*, CG_OpndHandle*, NamedType*) { NOT_IMPLEMENTED_C("tau_ldIntfTableAddr") }
+ CG_OpndHandle* arraycopyReverse(unsigned int, CG_OpndHandle**) { NOT_IMPLEMENTED_C("arraycopyReverse") }
+ CG_OpndHandle* arraycopy(unsigned int, CG_OpndHandle**) { NOT_IMPLEMENTED_C("arraycopy") }
+ CG_OpndHandle* addElemIndexWithLEA(Type*, CG_OpndHandle*, CG_OpndHandle*) { NOT_IMPLEMENTED_C("addElemIndexWithLEA") }
+ CG_OpndHandle* ldRef(Type*, MethodDesc*, unsigned int, bool) { NOT_IMPLEMENTED_C("ldRef") }
+ void pseudoInst() { NOT_IMPLEMENTED_V("pseudoInst") }
+ void methodEntry(MethodDesc*) { NOT_IMPLEMENTED_V("methodEntry") }
+ void methodEnd(MethodDesc*, CG_OpndHandle*) { NOT_IMPLEMENTED_V("methodEnd") }
+ void tau_stRef(CG_OpndHandle*, CG_OpndHandle*, CG_OpndHandle*, Type::Tag, bool, CG_OpndHandle*, CG_OpndHandle*, CG_OpndHandle*) { NOT_IMPLEMENTED_V("tau_stRef") }
//---------------------------------------------------------------------------//
// convertors from HLO to IPF::CG types