[vmkit-commits] [vmkit] r62220 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaObject.cpp JnjvmModule.cpp JnjvmModule.h
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Wed Jan 14 05:24:04 PST 2009
Author: geoffray
Date: Wed Jan 14 07:24:02 2009
New Revision: 62220
URL: http://llvm.org/viewvc/llvm-project?rev=62220&view=rev
Log:
Add the print function in statically compiled virtual tables.
Modified:
vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp
vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp?rev=62220&r1=62219&r2=62220&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp Wed Jan 14 07:24:02 2009
@@ -75,12 +75,18 @@
return res;
}
-void JavaObject::print(mvm::PrintBuffer* buf) const {
+extern "C" void printJavaObject(const JavaObject* obj, mvm::PrintBuffer* buf) {
buf->write("JavaObject<");
- CommonClass::printClassName(classOf->getName(), buf);
+ CommonClass::printClassName(obj->classOf->getName(), buf);
+ fprintf(stderr, "%p\n", ((void**)obj->getVirtualTable())[9]);
buf->write(">");
}
+void JavaObject::print(mvm::PrintBuffer* buf) const {
+ printJavaObject(this, buf);
+}
+
+
void JavaObject::waitIntern(struct timeval* info, bool timed) {
if (owner()) {
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp?rev=62220&r1=62219&r2=62220&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp Wed Jan 14 07:24:02 2009
@@ -37,6 +37,7 @@
llvm::Constant* JnjvmModule::PrimitiveArrayVT;
llvm::Constant* JnjvmModule::ReferenceArrayVT;
llvm::Function* JnjvmModule::StaticInitializer;
+llvm::Function* JnjvmModule::ObjectPrinter;
llvm::Function* JnjvmModule::NativeLoader;
extern void* JavaArrayVT[];
@@ -1264,14 +1265,20 @@
Function* Finalizer = LMI->getMethod();
Elemts.push_back(Finalizer ?
ConstantExpr::getCast(Instruction::BitCast, Finalizer, PTy) : N);
- Elemts.push_back(N); // Delete
+
+ // Delete
+ Elemts.push_back(N);
// Tracer
Function* Tracer = makeTracer(classDef, false);
Elemts.push_back(Tracer ?
ConstantExpr::getCast(Instruction::BitCast, Tracer, PTy) : N);
- Elemts.push_back(N); // Printer
- Elemts.push_back(N); // Hashcode
+
+ // Printer
+ Elemts.push_back(ConstantExpr::getBitCast(ObjectPrinter, PTy));
+
+ // Hashcode
+ Elemts.push_back(N);
for (uint32 i = VT_NB_FUNCS; i < size; ++i) {
JavaMethod* meth = ((JavaMethod**)VT)[i];
@@ -2035,6 +2042,11 @@
NativeLoader = Function::Create(FTy, GlobalValue::ExternalLinkage,
"vmjcNativeLoader", this);
+
+ llvmArgs.clear();
+ FTy = FunctionType::get(Type::VoidTy, llvmArgs, false);
+ ObjectPrinter = Function::Create(FTy, GlobalValue::ExternalLinkage,
+ "printJavaObject", this);
} else {
PrimitiveArrayVT = ConstantExpr::getIntToPtr(ConstantInt::get(Type::Int64Ty,
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h?rev=62220&r1=62219&r2=62220&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h Wed Jan 14 07:24:02 2009
@@ -239,6 +239,7 @@
static llvm::Constant* ReferenceArrayVT;
static llvm::Function* StaticInitializer;
+ static llvm::Function* ObjectPrinter;
public:
More information about the vmkit-commits
mailing list