[vmkit-commits] [vmkit] r186395 - Improved Java runtime JIT debug
Harris Bakiras
h.bakiras at gmail.com
Tue Jul 16 02:48:09 PDT 2013
Author: harris
Date: Tue Jul 16 04:48:09 2013
New Revision: 186395
URL: http://llvm.org/viewvc/llvm-project?rev=186395&view=rev
Log:
Improved Java runtime JIT debug
Modified:
vmkit/trunk/lib/j3/VMCore/JavaRuntimeJIT.cpp
Modified: vmkit/trunk/lib/j3/VMCore/JavaRuntimeJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaRuntimeJIT.cpp?rev=186395&r1=186394&r2=186395&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaRuntimeJIT.cpp Tue Jul 16 04:48:09 2013
@@ -22,6 +22,7 @@
#include "j3/OpcodeNames.def"
#include <cstdarg>
+#include <map>
using namespace j3;
@@ -530,16 +531,62 @@ extern "C" void* j3ResolveInterface(Java
return (void*)result;
}
+#if JNJVM_EXECUTE > 0
+std::map<void*, int> debugTabulations;
+std::map<void*, int>::iterator last = debugTabulations.end();
+#endif
+
extern "C" void j3PrintMethodStart(JavaMethod* meth) {
- fprintf(stderr, "[%p] executing %s.%s\n", (void*)vmkit::Thread::get(),
- UTF8Buffer(meth->classDef->name).cString(),
- UTF8Buffer(meth->name).cString());
+ vmkit::Thread* th = vmkit::Thread::get();
+
+#if JNJVM_EXECUTE > 0
+ if(last->first != th) {
+ last = debugTabulations.find(th);
+ if(last == debugTabulations.end()) {
+ last = debugTabulations.insert(std::make_pair(th, 2)).first;
+ }
+ }
+ int sizeTab = last->second;
+ last->second++;
+ char tabs [sizeTab];
+ for(int i = 0; i < sizeTab-1; i++)
+ tabs[i] = '-';
+ tabs[sizeTab-1] = '\0';
+
+ fprintf(stderr, "[%p] |%sexecuting %s.%s\n", (void*)th, tabs,
+ UTF8Buffer(meth->classDef->name).cString(),
+ UTF8Buffer(meth->name).cString());
+#else
+ fprintf(stderr, "[%p] executing %s.%s\n", (void*)th,
+ UTF8Buffer(meth->classDef->name).cString(),
+ UTF8Buffer(meth->name).cString());
+#endif
+
}
extern "C" void j3PrintMethodEnd(JavaMethod* meth) {
- fprintf(stderr, "[%p] return from %s.%s\n", (void*)vmkit::Thread::get(),
- UTF8Buffer(meth->classDef->name).cString(),
- UTF8Buffer(meth->name).cString());
+ vmkit::Thread* th = vmkit::Thread::get();
+
+#if JNJVM_EXECUTE > 0
+ if(last->first != th) {
+ last = debugTabulations.find(th);
+ }
+ last->second--;
+ int sizeTab = last->second;
+ char tabs [sizeTab];
+ for(int i = 0; i < sizeTab-1; i++)
+ tabs[i] = '-';
+ tabs[sizeTab-1] = '\0';
+
+ fprintf(stderr, "[%p] |%sreturn from %s.%s\n", (void*)th, tabs,
+ UTF8Buffer(meth->classDef->name).cString(),
+ UTF8Buffer(meth->name).cString());
+#else
+ fprintf(stderr, "[%p] return from %s.%s\n", (void*)th,
+ UTF8Buffer(meth->classDef->name).cString(),
+ UTF8Buffer(meth->name).cString());
+#endif
+
}
extern "C" void j3PrintExecution(uint32 opcode, uint32 index,
More information about the vmkit-commits
mailing list