aboutsummaryrefslogtreecommitdiff
path: root/lib/ExecutionEngine/Interpreter/Execution.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ExecutionEngine/Interpreter/Execution.cpp')
-rw-r--r--lib/ExecutionEngine/Interpreter/Execution.cpp85
1 files changed, 44 insertions, 41 deletions
diff --git a/lib/ExecutionEngine/Interpreter/Execution.cpp b/lib/ExecutionEngine/Interpreter/Execution.cpp
index c48ec92b3e..d92764e49a 100644
--- a/lib/ExecutionEngine/Interpreter/Execution.cpp
+++ b/lib/ExecutionEngine/Interpreter/Execution.cpp
@@ -19,6 +19,10 @@
#include <math.h> // For fmod
#include <signal.h>
#include <setjmp.h>
+#include <iostream>
+using std::vector;
+using std::cout;
+using std::cerr;
cl::Flag QuietMode ("quiet" , "Do not emit any non-program output");
cl::Alias QuietModeA("q" , "Alias for -quiet", cl::NoFlags, QuietMode);
@@ -35,7 +39,7 @@ CachedWriter CW; // Object to accelerate printing of LLVM
static cl::Flag ProfileStructureFields("profilestructfields",
"Profile Structure Field Accesses");
#include <map>
-static map<const StructType *, vector<unsigned> > FieldAccessCounts;
+static std::map<const StructType *, vector<unsigned> > FieldAccessCounts;
#endif
sigjmp_buf SignalRecoverBuffer;
@@ -91,14 +95,14 @@ static GenericValue getOperandValue(Value *V, ExecutionContext &SF) {
case Type::PointerTyID:
if (isa<ConstantPointerNull>(CPV)) {
Result.PointerVal = 0;
- } else if (ConstantPointerRef *CPR =dyn_cast<ConstantPointerRef>(CPV)) {
+ } else if (isa<ConstantPointerRef>(CPV)) {
assert(0 && "Not implemented!");
} else {
assert(0 && "Unknown constant pointer type!");
}
break;
default:
- cout << "ERROR: Constant unimp for type: " << CPV->getType() << endl;
+ cout << "ERROR: Constant unimp for type: " << CPV->getType() << "\n";
}
return Result;
} else if (GlobalValue *GV = dyn_cast<GlobalValue>(V)) {
@@ -134,7 +138,7 @@ static void printOperandInfo(Value *V, ExecutionContext &SF) {
cout << ( Cur >= 160? char((Cur>>4)+'A'-10) : char((Cur>>4) + '0'))
<< ((Cur&15) >= 10? char((Cur&15)+'A'-10) : char((Cur&15) + '0'));
}
- cout << endl;
+ cout << "\n";
}
}
@@ -143,7 +147,7 @@ static void printOperandInfo(Value *V, ExecutionContext &SF) {
static void SetValue(Value *V, GenericValue Val, ExecutionContext &SF) {
unsigned TyP = V->getType()->getUniqueID(); // TypePlane for value
- //cout << "Setting value: " << &SF.Values[TyP][getOperandSlot(V)] << endl;
+ //cout << "Setting value: " << &SF.Values[TyP][getOperandSlot(V)] << "\n";
SF.Values[TyP][getOperandSlot(V)] = Val;
}
@@ -217,7 +221,7 @@ static void InitializeMemory(Constant *Init, char *Addr) {
return;
default:
- CW << "Bad Type: " << Init->getType() << endl;
+ CW << "Bad Type: " << Init->getType() << "\n";
assert(0 && "Unknown constant type to initialize memory with!");
}
}
@@ -277,7 +281,7 @@ static GenericValue executeAddInst(GenericValue Src1, GenericValue Src2,
IMPLEMENT_BINARY_OPERATOR(+, Double);
IMPLEMENT_BINARY_OPERATOR(+, Pointer);
default:
- cout << "Unhandled type for Add instruction: " << Ty << endl;
+ cout << "Unhandled type for Add instruction: " << Ty << "\n";
}
return Dest;
}
@@ -298,7 +302,7 @@ static GenericValue executeSubInst(GenericValue Src1, GenericValue Src2,
IMPLEMENT_BINARY_OPERATOR(-, Double);
IMPLEMENT_BINARY_OPERATOR(-, Pointer);
default:
- cout << "Unhandled type for Sub instruction: " << Ty << endl;
+ cout << "Unhandled type for Sub instruction: " << Ty << "\n";
}
return Dest;
}
@@ -319,7 +323,7 @@ static GenericValue executeMulInst(GenericValue Src1, GenericValue Src2,
IMPLEMENT_BINARY_OPERATOR(*, Double);
IMPLEMENT_BINARY_OPERATOR(*, Pointer);
default:
- cout << "Unhandled type for Mul instruction: " << Ty << endl;
+ cout << "Unhandled type for Mul instruction: " << Ty << "\n";
}
return Dest;
}
@@ -340,7 +344,7 @@ static GenericValue executeDivInst(GenericValue Src1, GenericValue Src2,
IMPLEMENT_BINARY_OPERATOR(/, Double);
IMPLEMENT_BINARY_OPERATOR(/, Pointer);
default:
- cout << "Unhandled type for Div instruction: " << Ty << endl;
+ cout << "Unhandled type for Div instruction: " << Ty << "\n";
}
return Dest;
}
@@ -365,7 +369,7 @@ static GenericValue executeRemInst(GenericValue Src1, GenericValue Src2,
Dest.DoubleVal = fmod(Src1.DoubleVal, Src2.DoubleVal);
break;
default:
- cout << "Unhandled type for Rem instruction: " << Ty << endl;
+ cout << "Unhandled type for Rem instruction: " << Ty << "\n";
}
return Dest;
}
@@ -384,7 +388,7 @@ static GenericValue executeAndInst(GenericValue Src1, GenericValue Src2,
IMPLEMENT_BINARY_OPERATOR(&, Long);
IMPLEMENT_BINARY_OPERATOR(&, Pointer);
default:
- cout << "Unhandled type for And instruction: " << Ty << endl;
+ cout << "Unhandled type for And instruction: " << Ty << "\n";
}
return Dest;
}
@@ -404,7 +408,7 @@ static GenericValue executeOrInst(GenericValue Src1, GenericValue Src2,
IMPLEMENT_BINARY_OPERATOR(|, Long);
IMPLEMENT_BINARY_OPERATOR(|, Pointer);
default:
- cout << "Unhandled type for Or instruction: " << Ty << endl;
+ cout << "Unhandled type for Or instruction: " << Ty << "\n";
}
return Dest;
}
@@ -424,7 +428,7 @@ static GenericValue executeXorInst(GenericValue Src1, GenericValue Src2,
IMPLEMENT_BINARY_OPERATOR(^, Long);
IMPLEMENT_BINARY_OPERATOR(^, Pointer);
default:
- cout << "Unhandled type for Xor instruction: " << Ty << endl;
+ cout << "Unhandled type for Xor instruction: " << Ty << "\n";
}
return Dest;
}
@@ -449,7 +453,7 @@ static GenericValue executeSetEQInst(GenericValue Src1, GenericValue Src2,
IMPLEMENT_SETCC(==, Double);
IMPLEMENT_SETCC(==, Pointer);
default:
- cout << "Unhandled type for SetEQ instruction: " << Ty << endl;
+ cout << "Unhandled type for SetEQ instruction: " << Ty << "\n";
}
return Dest;
}
@@ -471,7 +475,7 @@ static GenericValue executeSetNEInst(GenericValue Src1, GenericValue Src2,
IMPLEMENT_SETCC(!=, Pointer);
default:
- cout << "Unhandled type for SetNE instruction: " << Ty << endl;
+ cout << "Unhandled type for SetNE instruction: " << Ty << "\n";
}
return Dest;
}
@@ -492,7 +496,7 @@ static GenericValue executeSetLEInst(GenericValue Src1, GenericValue Src2,
IMPLEMENT_SETCC(<=, Double);
IMPLEMENT_SETCC(<=, Pointer);
default:
- cout << "Unhandled type for SetLE instruction: " << Ty << endl;
+ cout << "Unhandled type for SetLE instruction: " << Ty << "\n";
}
return Dest;
}
@@ -513,7 +517,7 @@ static GenericValue executeSetGEInst(GenericValue Src1, GenericValue Src2,
IMPLEMENT_SETCC(>=, Double);
IMPLEMENT_SETCC(>=, Pointer);
default:
- cout << "Unhandled type for SetGE instruction: " << Ty << endl;
+ cout << "Unhandled type for SetGE instruction: " << Ty << "\n";
}
return Dest;
}
@@ -534,7 +538,7 @@ static GenericValue executeSetLTInst(GenericValue Src1, GenericValue Src2,
IMPLEMENT_SETCC(<, Double);
IMPLEMENT_SETCC(<, Pointer);
default:
- cout << "Unhandled type for SetLT instruction: " << Ty << endl;
+ cout << "Unhandled type for SetLT instruction: " << Ty << "\n";
}
return Dest;
}
@@ -555,7 +559,7 @@ static GenericValue executeSetGTInst(GenericValue Src1, GenericValue Src2,
IMPLEMENT_SETCC(>, Double);
IMPLEMENT_SETCC(>, Pointer);
default:
- cout << "Unhandled type for SetGT instruction: " << Ty << endl;
+ cout << "Unhandled type for SetGT instruction: " << Ty << "\n";
}
return Dest;
}
@@ -598,7 +602,7 @@ static void PerformExitStuff() {
// Print out structure field accounting information...
if (!FieldAccessCounts.empty()) {
CW << "Profile Field Access Counts:\n";
- map<const StructType *, vector<unsigned> >::iterator
+ std::map<const StructType *, vector<unsigned> >::iterator
I = FieldAccessCounts.begin(), E = FieldAccessCounts.end();
for (; I != E; ++I) {
vector<unsigned> &OfC = I->second;
@@ -613,9 +617,9 @@ static void PerformExitStuff() {
if (i) CW << ", ";
CW << OfC[i];
}
- CW << endl;
+ CW << "\n";
}
- CW << endl;
+ CW << "\n";
CW << "Profile Field Access Percentages:\n";
cout.precision(3);
@@ -630,9 +634,9 @@ static void PerformExitStuff() {
if (i) CW << ", ";
CW << double(OfC[i])/Sum;
}
- CW << endl;
+ CW << "\n";
}
- CW << endl;
+ CW << "\n";
FieldAccessCounts.clear();
}
@@ -673,7 +677,7 @@ void Interpreter::executeRetInst(ReturnInst *I, ExecutionContext &SF) {
CW << "Method " << M->getType() << " \"" << M->getName()
<< "\" returned ";
print(RetTy, Result);
- cout << endl;
+ cout << "\n";
}
if (RetTy->isIntegral())
@@ -701,7 +705,7 @@ void Interpreter::executeRetInst(ReturnInst *I, ExecutionContext &SF) {
CW << "Method " << M->getType() << " \"" << M->getName()
<< "\" returned ";
print(RetTy, Result);
- cout << endl;
+ cout << "\n";
}
}
@@ -930,7 +934,7 @@ static void executeShlInst(ShiftInst *I, ExecutionContext &SF) {
IMPLEMENT_SHIFT(<<, ULong);
IMPLEMENT_SHIFT(<<, Long);
default:
- cout << "Unhandled type for Shl instruction: " << Ty << endl;
+ cout << "Unhandled type for Shl instruction: " << Ty << "\n";
}
SetValue(I, Dest, SF);
}
@@ -951,7 +955,7 @@ static void executeShrInst(ShiftInst *I, ExecutionContext &SF) {
IMPLEMENT_SHIFT(>>, ULong);
IMPLEMENT_SHIFT(>>, Long);
default:
- cout << "Unhandled type for Shr instruction: " << Ty << endl;
+ cout << "Unhandled type for Shr instruction: " << Ty << "\n";
}
SetValue(I, Dest, SF);
}
@@ -977,7 +981,7 @@ static void executeShrInst(ShiftInst *I, ExecutionContext &SF) {
IMPLEMENT_CAST(DESTTY, DESTCTY, Double)
#define IMPLEMENT_CAST_CASE_END() \
- default: cout << "Unhandled cast: " << SrcTy << " to " << Ty << endl; \
+ default: cout << "Unhandled cast: " << SrcTy << " to " << Ty << "\n"; \
break; \
} \
break
@@ -1006,7 +1010,7 @@ static void executeCastInst(CastInst *I, ExecutionContext &SF) {
IMPLEMENT_CAST_CASE(Float , (float));
IMPLEMENT_CAST_CASE(Double , (double));
default:
- cout << "Unhandled dest type for cast instruction: " << Ty << endl;
+ cout << "Unhandled dest type for cast instruction: " << Ty << "\n";
}
SetValue(I, Dest, SF);
}
@@ -1060,7 +1064,6 @@ void Interpreter::callMethod(Method *M, const vector<GenericValue> &ArgVals) {
if (RetTy != Type::VoidTy) {
if (!ECStack.empty() && ECStack.back().Caller) {
ExecutionContext &SF = ECStack.back();
- CallInst *Caller = SF.Caller;
SetValue(SF.Caller, Result, SF);
SF.Caller = 0; // We returned from the call...
@@ -1069,7 +1072,7 @@ void Interpreter::callMethod(Method *M, const vector<GenericValue> &ArgVals) {
CW << "Method " << M->getType() << " \"" << M->getName()
<< "\" returned ";
print(RetTy, Result);
- cout << endl;
+ cout << "\n";
if (RetTy->isIntegral())
ExitCode = Result.SByteVal; // Capture the exit code of the program
@@ -1290,8 +1293,8 @@ void Interpreter::printValue(const Type *Ty, GenericValue V) {
case Type::UShortTyID: cout << V.UShortVal; break;
case Type::IntTyID: cout << V.IntVal; break;
case Type::UIntTyID: cout << V.UIntVal; break;
- case Type::LongTyID: cout << V.LongVal; break;
- case Type::ULongTyID: cout << V.ULongVal; break;
+ case Type::LongTyID: cout << (long)V.LongVal; break;
+ case Type::ULongTyID: cout << (unsigned long)V.ULongVal; break;
case Type::FloatTyID: cout << V.FloatVal; break;
case Type::DoubleTyID: cout << V.DoubleVal; break;
case Type::PointerTyID:cout << (void*)V.PointerVal; break;
@@ -1306,31 +1309,31 @@ void Interpreter::print(const Type *Ty, GenericValue V) {
printValue(Ty, V);
}
-void Interpreter::print(const string &Name) {
+void Interpreter::print(const std::string &Name) {
Value *PickedVal = ChooseOneOption(Name, LookupMatchingNames(Name));
if (!PickedVal) return;
if (const Method *M = dyn_cast<const Method>(PickedVal)) {
CW << M; // Print the method
} else if (const Type *Ty = dyn_cast<const Type>(PickedVal)) {
- CW << "type %" << Name << " = " << Ty->getDescription() << endl;
+ CW << "type %" << Name << " = " << Ty->getDescription() << "\n";
} else if (const BasicBlock *BB = dyn_cast<const BasicBlock>(PickedVal)) {
CW << BB; // Print the basic block
} else { // Otherwise there should be an annotation for the slot#
print(PickedVal->getType(),
getOperandValue(PickedVal, ECStack[CurFrame]));
- cout << endl;
+ cout << "\n";
}
}
-void Interpreter::infoValue(const string &Name) {
+void Interpreter::infoValue(const std::string &Name) {
Value *PickedVal = ChooseOneOption(Name, LookupMatchingNames(Name));
if (!PickedVal) return;
cout << "Value: ";
print(PickedVal->getType(),
getOperandValue(PickedVal, ECStack[CurFrame]));
- cout << endl;
+ cout << "\n";
printOperandInfo(PickedVal, ECStack[CurFrame]);
}
@@ -1353,7 +1356,7 @@ void Interpreter::printStackFrame(int FrameNo = -1) {
printValue(Args[i]->getType(), getOperandValue(Args[i], ECStack[FrameNo]));
}
- cout << ")" << endl;
+ cout << ")\n";
CW << *(ECStack[FrameNo].CurInst-(FrameNo != int(ECStack.size()-1)));
}