You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by mf...@apache.org on 2007/09/07 16:31:16 UTC
svn commit: r573596 - in /harmony/enhanced/drlvm/trunk/vm/jitrino:
config/ia32/opt.emconf src/codegenerator/ia32/Ia32GCSafePoints.cpp
Author: mfursov
Date: Fri Sep 7 07:31:15 2007
New Revision: 573596
URL: http://svn.apache.org/viewvc?rev=573596&view=rev
Log:
Enabling lazy resolution mode in -Xem:opt execution mode
Modified:
harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/opt.emconf
harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32GCSafePoints.cpp
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/opt.emconf
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/opt.emconf?rev=573596&r1=573595&r2=573596&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/opt.emconf (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/opt.emconf Fri Sep 7 07:31:15 2007
@@ -22,6 +22,8 @@
# Options to be passed to JIT
+-XX:jit.arg.lazyResolution=on
+
-XX:jit.CS_OPT.path=opt_init,translator,optimizer,hir2lir,codegen
-XX:jit.CS_OPT.path.optimizer=ssa,devirt,inline,purge,simplify,dce,uce,lazyexc,throwopt,escape,dce,uce,memopt,simplify,dce,uce,lower,statprof,unroll,ssa,simplify,dce,uce,dessa,statprof
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32GCSafePoints.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32GCSafePoints.cpp?rev=573596&r1=573595&r2=573596&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32GCSafePoints.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32GCSafePoints.cpp Fri Sep 7 07:31:15 2007
@@ -421,20 +421,27 @@
}
}
-static bool isStaticFieldPtrDefWithCall(Inst* inst) {
+static bool isStaticFieldPtrDef(Inst* inst, const StlSet<Opnd*>& staticFieldPtrs) {
if (inst->hasKind(Inst::Kind_CallInst)) {
CallInst* callInst = (CallInst*)inst;
Opnd::RuntimeInfo * rt = callInst->getRuntimeInfo();
if (rt && rt->getKind() == Opnd::RuntimeInfo::Kind_HelperAddress
&& ((CompilationInterface::RuntimeHelperId)(POINTER_SIZE_INT)rt->getValue(0)
- == CompilationInterface::Helper_GetStaticFieldAddrWithResolve))
+ == CompilationInterface::Helper_GetStaticFieldAddrWithResolve))
{
return true;
}
+ } else if (inst->getMnemonic() == Mnemonic_MOV) {
+ Opnd* fromOpnd = inst->getOpnd(1);
+ if (staticFieldPtrs.find(fromOpnd)!=staticFieldPtrs.end()) {
+ return true;
+ }
}
return false;
+
}
+
void GCSafePointsInfo::updatePairsOnInst(Inst* inst, GCSafePointPairs& res) {
runLivenessFilter(inst, res);//filter pairs with dead mptrs from list
@@ -453,7 +460,7 @@
if (!opndType->isObject() && !opndType->isManagedPtr()) {
return;
}
- if (isStaticFieldPtrDefWithCall(inst)) {
+ if (isStaticFieldPtrDef(inst, staticMptrs)) {
removePairByMPtrOpnd(res, opnd);
staticMptrs.insert(opnd);
return;