[vmkit-commits] [vmkit] r56146 - /vmkit/branches/isolate/lib/JnJVM/VMCore/JavaBacktrace.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Fri Sep 12 06:42:03 PDT 2008
Author: geoffray
Date: Fri Sep 12 08:42:01 2008
New Revision: 56146
URL: http://llvm.org/viewvc/llvm-project?rev=56146&view=rev
Log:
Implement getCallingClass for isolate environment.
Modified:
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaBacktrace.cpp
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaBacktrace.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaBacktrace.cpp?rev=56146&r1=56145&r2=56146&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaBacktrace.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaBacktrace.cpp Fri Sep 12 08:42:01 2008
@@ -104,13 +104,29 @@
return 0;
}
#else
-UserClass* JavaJIT::getCallingClassWalker() {
- fprintf(stderr, "implement me");
- abort();
-}
UserClass* JavaJIT::getCallingClass() {
- fprintf(stderr, "implement me");
- abort();
+ unsigned int* top;
+ register unsigned int **cur = ⊤
+ register unsigned int **max = (unsigned int**)mvm::Thread::get()->baseSP;
+
+ void* obj = 0;
+ int i = 0;
+
+ for(; cur<max; cur++) {
+ obj = (void*)(*cur);
+ obj = Collector::begOf(obj);
+ if (obj && ((mvm::Object*)obj)->getVirtualTable() == UserConstantPool::VT) {
+ if (i == 1) {
+ return ((UserConstantPool*)obj)->getClass();
+ }
+ ++i;
+ }
+ }
+ return 0;
+}
+
+UserClass* JavaJIT::getCallingClassWalker() {
+ return getCallingClass();
}
#endif
More information about the vmkit-commits
mailing list