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 2008/03/13 16:03:03 UTC
svn commit: r636777 - in /harmony/enhanced/drlvm/trunk/vm/jitrino/src:
codegenerator/ia32/Ia32i586InstsExpansion.cpp optimizer/IRBuilder.cpp
optimizer/IRBuilder.h
Author: mfursov
Date: Thu Mar 13 08:02:57 2008
New Revision: 636777
URL: http://svn.apache.org/viewvc?rev=636777&view=rev
Log:
Fix for HARMONY-5595 [drlvm][jit][opt] Incorrect bcmapping on block starts
Fix for HARMONY-5600 [drlvm][jit][opt] Problems with compilation with OPT on Athlon XP
Modified:
harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32i586InstsExpansion.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/IRBuilder.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/IRBuilder.h
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32i586InstsExpansion.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32i586InstsExpansion.cpp?rev=636777&r1=636776&r2=636777&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32i586InstsExpansion.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32i586InstsExpansion.cpp Thu Mar 13 08:02:57 2008
@@ -36,7 +36,7 @@
//========================================================================================
//========================================================================================
/**
- class I586InstsExpansion translated SSE instructions to corresponding x87 instructions
+ I586InstsExpansion translates SSE2 instructions and newer to the corresponding SSE and x87 instructions
and SETcc and CMOVcc instructions to branches
*/
class I586InstsExpansion : public SessionAction {
@@ -92,6 +92,8 @@
case Mnemonic_UCOMISS:
case Mnemonic_CVTTSS2SI:
case Mnemonic_CVTTSD2SI:
+ case Mnemonic_CVTSI2SS:
+ case Mnemonic_CVTSI2SD:
return true;
default:
return false;
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/IRBuilder.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/IRBuilder.cpp?rev=636777&r1=636776&r2=636777&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/IRBuilder.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/IRBuilder.cpp Thu Mar 13 08:02:57 2008
@@ -312,21 +312,26 @@
assert(0);
}
-Inst* IRBuilder::appendInst(Inst* inst) {
- assert(currentLabel);
- inst->setBCOffset((uint16)offset);
- Node* node = currentLabel->getNode();
-
- assert(currentLabel->getBCOffset()!=ILLEGAL_BC_MAPPING_VALUE || node->isEmpty());
- if (node->isEmpty() && currentLabel->getBCOffset()==ILLEGAL_BC_MAPPING_VALUE) {
+void IRBuilder::updateCurrentLabelBcOffset() {
+ assert(currentLabel!=NULL);
+ if (currentLabel->getBCOffset()==ILLEGAL_BC_MAPPING_VALUE) {
+ assert(currentLabel->getNode() == NULL || currentLabel->getNode()->isEmpty());
currentLabel->setBCOffset((uint16)offset);
}
+}
+
+
+Inst* IRBuilder::appendInst(Inst* inst) {
+ updateCurrentLabelBcOffset();
assert(currentLabel->getBCOffset()!=ILLEGAL_BC_MAPPING_VALUE);
+ inst->setBCOffset((uint16)offset);
+ Node* node = currentLabel->getNode();
+
node->appendInst(inst);
if(Log::isEnabled()) {
inst->print(Log::out());
- Log::out() << ::std::endl;
+ Log::out() << std::endl;
Log::out().flush();
}
return inst;
@@ -339,24 +344,29 @@
void IRBuilder::genLabel(LabelInst* labelInst) {
cseHashTable->kill();
currentLabel = labelInst;
+ updateCurrentLabelBcOffset();
+
if(Log::isEnabled()) {
currentLabel->print(Log::out());
- Log::out() << ::std::endl;
+ Log::out() << std::endl;
Log::out().flush();
}
}
void IRBuilder::genFallThroughLabel(LabelInst* labelInst) {
currentLabel = labelInst;
+ updateCurrentLabelBcOffset();
+
if(Log::isEnabled()) {
currentLabel->print(Log::out());
- Log::out() << ::std::endl;
+ Log::out() << std::endl;
Log::out().flush();
}
}
LabelInst* IRBuilder::createLabel() {
currentLabel = (LabelInst*)instFactory->makeLabel();
+ updateCurrentLabelBcOffset();
return currentLabel;
}
@@ -367,16 +377,15 @@
}
LabelInst* IRBuilder::genMethodEntryLabel(MethodDesc* methodDesc) {
- LabelInst* labelInst = instFactory->makeMethodEntryLabel(methodDesc);
- currentLabel = labelInst;
- labelInst->setBCOffset(0);
+ currentLabel = instFactory->makeMethodEntryLabel(methodDesc);
+ currentLabel->setBCOffset(0);
if(Log::isEnabled()) {
currentLabel->print(Log::out());
- Log::out() << ::std::endl;
+ Log::out() << std::endl;
Log::out().flush();
}
- return labelInst;
+ return currentLabel;
}
// compute instructions
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/IRBuilder.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/IRBuilder.h?rev=636777&r1=636776&r2=636777&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/IRBuilder.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/IRBuilder.h Thu Mar 13 08:02:57 2008
@@ -396,6 +396,8 @@
private:
void readFlagsFromCommandLine(SessionAction* argSource, const char* argPrefix);
+ void updateCurrentLabelBcOffset();
+
private:
//