[vmkit-commits] [vmkit] r120561 - in /vmkit/branches/multi-vm: include/j3/J3Intrinsics.h include/mvm/JIT.h include/mvm/Threads/Thread.h lib/J3/Compiler/ExceptionsCheck.inc lib/J3/Compiler/J3Intrinsics.cpp lib/J3/Compiler/JavaJIT.cpp lib/J3/Compiler/JavaJIT.h lib/J3/LLVMRuntime/runtime-default.ll lib/J3/VMCore/JavaThread.cpp lib/J3/VMCore/JavaThread.h lib/J3/VMCore/Jnjvm.cpp lib/J3/VMCore/VirtualTables.cpp lib/Mvm/CommonThread/ctthread.cpp lib/Mvm/Compiler/JIT.cpp lib/Mvm/Compiler/mvm-runtime.ll
Gael Thomas
gael.thomas at lip6.fr
Tue Nov 30 23:22:08 PST 2010
Author: gthomas
Date: Wed Dec 1 01:22:08 2010
New Revision: 120561
URL: http://llvm.org/viewvc/llvm-project?rev=120561&view=rev
Log:
Move pendingException in mvm::Thread. Don't forget to trace the JavaThread.
Modified:
vmkit/branches/multi-vm/include/j3/J3Intrinsics.h
vmkit/branches/multi-vm/include/mvm/JIT.h
vmkit/branches/multi-vm/include/mvm/Threads/Thread.h
vmkit/branches/multi-vm/lib/J3/Compiler/ExceptionsCheck.inc
vmkit/branches/multi-vm/lib/J3/Compiler/J3Intrinsics.cpp
vmkit/branches/multi-vm/lib/J3/Compiler/JavaJIT.cpp
vmkit/branches/multi-vm/lib/J3/Compiler/JavaJIT.h
vmkit/branches/multi-vm/lib/J3/LLVMRuntime/runtime-default.ll
vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.cpp
vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.h
vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.cpp
vmkit/branches/multi-vm/lib/J3/VMCore/VirtualTables.cpp
vmkit/branches/multi-vm/lib/Mvm/CommonThread/ctthread.cpp
vmkit/branches/multi-vm/lib/Mvm/Compiler/JIT.cpp
vmkit/branches/multi-vm/lib/Mvm/Compiler/mvm-runtime.ll
Modified: vmkit/branches/multi-vm/include/j3/J3Intrinsics.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/include/j3/J3Intrinsics.h?rev=120561&r1=120560&r2=120561&view=diff
==============================================================================
--- vmkit/branches/multi-vm/include/j3/J3Intrinsics.h (original)
+++ vmkit/branches/multi-vm/include/j3/J3Intrinsics.h Wed Dec 1 01:22:08 2010
@@ -29,6 +29,7 @@
const llvm::Type* JavaArrayObjectType;
const llvm::Type* JavaObjectType;
+ const llvm::Type* JavaObjectPtrType;
const llvm::Type* JavaArrayType;
const llvm::Type* JavaCommonClassType;
const llvm::Type* JavaClassType;
Modified: vmkit/branches/multi-vm/include/mvm/JIT.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/include/mvm/JIT.h?rev=120561&r1=120560&r2=120561&view=diff
==============================================================================
--- vmkit/branches/multi-vm/include/mvm/JIT.h (original)
+++ vmkit/branches/multi-vm/include/mvm/JIT.h Wed Dec 1 01:22:08 2010
@@ -182,6 +182,8 @@
llvm::Constant* OffsetVMInThreadConstant;
llvm::Constant* OffsetCXXExceptionInThreadConstant;
llvm::Constant* OffsetVMDataInThreadConstant;
+ llvm::Constant* OffsetPendingExceptionInThreadConstant;
+
llvm::Constant* OffsetThreadInMutatorThreadConstant;
};
Modified: vmkit/branches/multi-vm/include/mvm/Threads/Thread.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/include/mvm/Threads/Thread.h?rev=120561&r1=120560&r2=120561&view=diff
==============================================================================
--- vmkit/branches/multi-vm/include/mvm/Threads/Thread.h (original)
+++ vmkit/branches/multi-vm/include/mvm/Threads/Thread.h Wed Dec 1 01:22:08 2010
@@ -34,6 +34,8 @@
#define END_CATCH }
#endif
+class gc;
+
namespace mvm {
class MethodInfo;
@@ -150,6 +152,8 @@
this->mut = m;
}
+ virtual void tracer(uintptr_t closure) = 0;
+
virtual ~VMThreadData() {} // force the construction of a VT
};
@@ -160,11 +164,12 @@
public:
Thread() {
#ifdef RUNTIME_DWARF_EXCEPTIONS
- internalPendingException = 0;
+ internalPendingException = 0;
#else
- lastExceptionBuffer = 0;
+ lastExceptionBuffer = 0;
#endif
- lastKnownFrame = 0;
+ lastKnownFrame = 0;
+ pendingException = 0;
}
/// yield - Yield the processor to another thread.
@@ -240,10 +245,10 @@
public:
- /// tracer - Does nothing. Used for child classes which may defined
- /// a tracer.
+ /// tracer - trace the pendingException and the vmData
///
- virtual void tracer(uintptr_t closure) {}
+ virtual void tracer(uintptr_t closure);
+
void scanStack(uintptr_t closure);
void* getLastSP() { return lastSP; }
@@ -351,6 +356,10 @@
/// vmData - vm specific data
///
VMThreadData* vmData;
+
+ /// pendingException - the pending exception
+ ///
+ gc* pendingException;
};
#ifndef RUNTIME_DWARF_EXCEPTIONS
Modified: vmkit/branches/multi-vm/lib/J3/Compiler/ExceptionsCheck.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/Compiler/ExceptionsCheck.inc?rev=120561&r1=120560&r2=120561&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/Compiler/ExceptionsCheck.inc (original)
+++ vmkit/branches/multi-vm/lib/J3/Compiler/ExceptionsCheck.inc Wed Dec 1 01:22:08 2010
@@ -8,7 +8,7 @@
res->setDebugLoc(DL);
if (TheCompiler->hasExceptionsEnabled()) {
- Value* javaExceptionPtr = getJavaExceptionPtr(getJavaThreadPtr(getMutatorThreadPtr()));
+ Value* exceptionPtr = getPendingExceptionPtr(getMutatorThreadPtr());
// Get the Java exception.
Value* obj = 0;
@@ -28,13 +28,13 @@
// Make the load volatile to force the instruction after the call.
// Otherwise, LLVM will merge the load with a previous load because
// the function is readnone.
- obj = new LoadInst(javaExceptionPtr, "", TheCompiler->useCooperativeGC(), currentBlock);
+ obj = new LoadInst(exceptionPtr, "", TheCompiler->useCooperativeGC(), currentBlock);
test = new BitCastInst(res, intrinsics->JavaObjectType, "", currentBlock);
test = new ICmpInst(*currentBlock, ICmpInst::ICMP_EQ, test, obj, "");
Value* T = new ICmpInst(*currentBlock, ICmpInst::ICMP_NE, obj, zero, "");
test = BinaryOperator::CreateAnd(test, T, "", currentBlock);
} else {
- obj = new LoadInst(javaExceptionPtr, "", currentBlock);
+ obj = new LoadInst(exceptionPtr, "", currentBlock);
test = new ICmpInst(*currentBlock, ICmpInst::ICMP_NE, obj, zero, "");
}
@@ -61,7 +61,7 @@
res->setDebugLoc(DL);
if (TheCompiler->hasExceptionsEnabled()) {
- Value* javaExceptionPtr = getJavaExceptionPtr(getJavaThreadPtr(getMutatorThreadPtr()));
+ Value* exceptionPtr = getPendingExceptionPtr(getMutatorThreadPtr());
// Get the Java exception.
Value* obj = 0;
@@ -74,13 +74,13 @@
F == intrinsics->GetConstantPoolAtFunction ||
F == intrinsics->GetArrayClassFunction ||
F == intrinsics->GetClassDelegateeFunction) {
- obj = new LoadInst(javaExceptionPtr, "", TheCompiler->useCooperativeGC(), currentBlock);
+ obj = new LoadInst(exceptionPtr, "", TheCompiler->useCooperativeGC(), currentBlock);
test = new BitCastInst(res, intrinsics->JavaObjectType, "", currentBlock);
test = new ICmpInst(*currentBlock, ICmpInst::ICMP_EQ, test, obj, "");
Value* T = new ICmpInst(*currentBlock, ICmpInst::ICMP_NE, obj, zero, "");
test = BinaryOperator::CreateAnd(test, T, "", currentBlock);
} else {
- obj = new LoadInst(javaExceptionPtr, "", currentBlock);
+ obj = new LoadInst(exceptionPtr, "", currentBlock);
test = new ICmpInst(*currentBlock, ICmpInst::ICMP_NE, obj, zero, "");
}
@@ -108,7 +108,7 @@
res->setDebugLoc(DL);
if (TheCompiler->hasExceptionsEnabled()) {
- Value* javaExceptionPtr = getJavaExceptionPtr(getJavaThreadPtr(getMutatorThreadPtr()));
+ Value* exceptionPtr = getPendingExceptionPtr(getMutatorThreadPtr());
// Get the Java exception.
Value* obj = 0;
@@ -121,13 +121,13 @@
F == intrinsics->GetConstantPoolAtFunction ||
F == intrinsics->GetArrayClassFunction ||
F == intrinsics->GetClassDelegateeFunction) {
- obj = new LoadInst(javaExceptionPtr, "", TheCompiler->useCooperativeGC(), currentBlock);
+ obj = new LoadInst(exceptionPtr, "", TheCompiler->useCooperativeGC(), currentBlock);
test = new BitCastInst(res, intrinsics->JavaObjectType, "", currentBlock);
test = new ICmpInst(*currentBlock, ICmpInst::ICMP_EQ, test, obj, "");
Value* T = new ICmpInst(*currentBlock, ICmpInst::ICMP_NE, obj, zero, "");
test = BinaryOperator::CreateAnd(test, T, "", currentBlock);
} else {
- obj = new LoadInst(javaExceptionPtr, "", currentBlock);
+ obj = new LoadInst(exceptionPtr, "", currentBlock);
test = new ICmpInst(*currentBlock, ICmpInst::ICMP_NE, obj, zero, "");
}
@@ -152,7 +152,7 @@
res->setDebugLoc(DL);
if (TheCompiler->hasExceptionsEnabled()) {
- Value* javaExceptionPtr = getJavaExceptionPtr(getJavaThreadPtr(getMutatorThreadPtr()));
+ Value* exceptionPtr = getPendingExceptionPtr(getMutatorThreadPtr());
// Get the Java exception.
Value* obj = 0;
@@ -165,13 +165,13 @@
F == intrinsics->GetConstantPoolAtFunction ||
F == intrinsics->GetArrayClassFunction ||
F == intrinsics->GetClassDelegateeFunction) {
- obj = new LoadInst(javaExceptionPtr, "", TheCompiler->useCooperativeGC(), currentBlock);
+ obj = new LoadInst(exceptionPtr, "", TheCompiler->useCooperativeGC(), currentBlock);
test = new BitCastInst(res, intrinsics->JavaObjectType, "", currentBlock);
test = new ICmpInst(*currentBlock, ICmpInst::ICMP_EQ, test, obj, "");
Value* T = new ICmpInst(*currentBlock, ICmpInst::ICMP_NE, obj, zero, "");
test = BinaryOperator::CreateAnd(test, T, "", currentBlock);
} else {
- obj = new LoadInst(javaExceptionPtr, "", currentBlock);
+ obj = new LoadInst(exceptionPtr, "", currentBlock);
test = new ICmpInst(*currentBlock, ICmpInst::ICMP_NE, obj, zero, "");
}
@@ -210,9 +210,9 @@
void JavaJIT::throwException(Value* obj) {
JITVerifyNull(obj);
- Value* javaExceptionPtr = getJavaExceptionPtr(getJavaThreadPtr(getMutatorThreadPtr()));
+ Value* exceptionPtr = getPendingExceptionPtr(getMutatorThreadPtr());
- new StoreInst(obj, javaExceptionPtr, currentBlock);
+ new StoreInst(obj, exceptionPtr, currentBlock);
if (currentExceptionBlock != endExceptionBlock) {
Instruction* insn = currentExceptionBlock->begin();
PHINode* node = dyn_cast<PHINode>(insn);
@@ -458,10 +458,10 @@
currentBlock = cur->javaHandler;
// First thing in the handler: clear the exception.
- Value* javaExceptionPtr = getJavaExceptionPtr(getJavaThreadPtr(getMutatorThreadPtr()));
+ Value* exceptionPtr = getPendingExceptionPtr(getMutatorThreadPtr());
// Clear exceptions.
- new StoreInst(intrinsics->JavaObjectNullConstant, javaExceptionPtr,
+ new StoreInst(intrinsics->JavaObjectNullConstant, exceptionPtr,
currentBlock);
#if defined(SERVICE)
Modified: vmkit/branches/multi-vm/lib/J3/Compiler/J3Intrinsics.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/Compiler/J3Intrinsics.cpp?rev=120561&r1=120560&r2=120561&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/Compiler/J3Intrinsics.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/Compiler/J3Intrinsics.cpp Wed Dec 1 01:22:08 2010
@@ -46,6 +46,8 @@
JavaObjectType =
PointerType::getUnqual(module->getTypeByName("JavaObject"));
+ JavaObjectPtrType = PointerType::getUnqual(JavaObjectType);
+
JavaArrayType =
PointerType::getUnqual(module->getTypeByName("JavaArray"));
@@ -140,7 +142,6 @@
OffsetInitializedInTaskClassMirrorConstant = constantOne;
OffsetJNIInJavaThreadConstant = ConstantInt::get(Type::getInt32Ty(Context), 1);
- OffsetJavaExceptionInJavaThreadConstant = ConstantInt::get(Type::getInt32Ty(Context), 2);
ClassReadyConstant = ConstantInt::get(Type::getInt8Ty(Context), ready);
Modified: vmkit/branches/multi-vm/lib/J3/Compiler/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/Compiler/JavaJIT.cpp?rev=120561&r1=120560&r2=120561&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/Compiler/JavaJIT.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/Compiler/JavaJIT.cpp Wed Dec 1 01:22:08 2010
@@ -305,6 +305,15 @@
return GetElementPtrInst::Create(mutatorThreadPtr, GEP, GEP + 3, "", currentBlock);
}
+llvm::Value* JavaJIT::getPendingExceptionPtr(llvm::Value* mutatorThreadPtr) {
+ Value* GEP[3] = { intrinsics->constantZero,
+ intrinsics->OffsetThreadInMutatorThreadConstant,
+ intrinsics->OffsetPendingExceptionInThreadConstant };
+
+ Value* res = GetElementPtrInst::Create(mutatorThreadPtr, GEP, GEP + 3, "", currentBlock);
+ return new BitCastInst(res, intrinsics->JavaObjectPtrType, "", currentBlock);
+}
+
llvm::Value* JavaJIT::getJavaThreadPtr(llvm::Value* mutatorThreadPtr) {
Value* GEP[3] = { intrinsics->constantZero,
intrinsics->OffsetThreadInMutatorThreadConstant,
@@ -323,13 +332,6 @@
return new BitCastInst(res, intrinsics->ptrType, "", currentBlock);
}
-llvm::Value* JavaJIT::getJavaExceptionPtr(llvm::Value* javaThreadPtr) {
- Value* GEP[2] = { intrinsics->constantZero,
- intrinsics->OffsetJavaExceptionInJavaThreadConstant };
-
- return GetElementPtrInst::Create(javaThreadPtr, GEP, GEP + 2, "", currentBlock);
-}
-
extern "C" void j3ThrowExceptionFromJIT();
Modified: vmkit/branches/multi-vm/lib/J3/Compiler/JavaJIT.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/Compiler/JavaJIT.h?rev=120561&r1=120560&r2=120561&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/Compiler/JavaJIT.h (original)
+++ vmkit/branches/multi-vm/lib/J3/Compiler/JavaJIT.h Wed Dec 1 01:22:08 2010
@@ -152,14 +152,14 @@
/// getCXXExceptionPtr - Emit code to get a pointer to internalPendingException.
llvm::Value* getCXXExceptionPtr(llvm::Value* mutatorThreadPtr);
+ /// getPendingExceptionPtr - Emit code to get a pointer to the Java pending exception
+ llvm::Value* getPendingExceptionPtr(llvm::Value* mutatorThreadPtr);
+
/// getJavaThreadPtr - Emit code to get a pointer to the current JavaThread.
llvm::Value* getJavaThreadPtr(llvm::Value* mutatorThreadPtr);
/// getJNIEnvPtr - Emit code to get a pointer to JNIEnv
llvm::Value* getJNIEnvPtr(llvm::Value* javaThreadPtr);
-
- /// getJavaExceptionPtr - Emit code to get a pointer to the Java pending exception
- llvm::Value* getJavaExceptionPtr(llvm::Value* javaThreadPtr);
//===------------------------- Debugging support --------------------------===//
Modified: vmkit/branches/multi-vm/lib/J3/LLVMRuntime/runtime-default.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/LLVMRuntime/runtime-default.ll?rev=120561&r1=120560&r2=120561&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/LLVMRuntime/runtime-default.ll (original)
+++ vmkit/branches/multi-vm/lib/J3/LLVMRuntime/runtime-default.ll Wed Dec 1 01:22:08 2010
@@ -24,7 +24,10 @@
;;; Field 3: The static instance
%TaskClassMirror = type { i8, i1, i8* }
-%JavaThread = type { %VMThreadData, i8*, %JavaObject* }
+;;; The Java Thread
+;;; Field 1: VMThreadData parent
+;;; Field 2: void* jniEnv
+%JavaThread = type { %VMThreadData, i8* }
%JavaConstantPool = type { %JavaClass*, i32, i8*, i32*, i8** }
Modified: vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.cpp?rev=120561&r1=120560&r2=120561&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.cpp Wed Dec 1 01:22:08 2010
@@ -21,7 +21,6 @@
JavaThread::JavaThread(mvm::MutatorThread* mut, Jnjvm* isolate)
: mvm::VMThreadData(mut) {
- pendingException = NULL;
jniEnv = isolate->jniEnv;
localJNIRefs = new JNILocalReferences();
currentAddedReferences = NULL;
@@ -66,13 +65,12 @@
JavaThread* JavaThread::setPendingException(JavaObject *obj) {
llvm_gcroot(obj, 0);
- assert(JavaThread::get()->pendingException == 0 && "pending exception already there?");
- mvm::Thread* mut = mvm::Thread::get();
- j3Thread(mut)->pendingException = obj;
+ assert(mvm::Thread::get()->pendingException == 0 && "pending exception already there?");
+ mvm::Thread::get()->pendingException = obj;
}
void JavaThread::throwIt() {
- assert(JavaThread::get()->pendingException);
+ assert(mvm::Thread::get()->pendingException);
mvm::Thread::get()->internalThrowException();
}
Modified: vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.h?rev=120561&r1=120560&r2=120561&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.h (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.h Wed Dec 1 01:22:08 2010
@@ -71,10 +71,6 @@
/// jniEnv - The JNI environment of the thread.
///
void* jniEnv;
-
- /// pendingException - The Java exception currently pending.
- ///
- JavaObject* pendingException;
/// javaThread - The Java representation of this thread.
///
@@ -171,12 +167,12 @@
/// clearPendingException - Clear the pending exception.
//
- void clearPendingException() { pendingException = 0; }
+ void clearPendingException() { mut->pendingException = 0; }
/// getPendingException - Return the pending exception.
///
JavaObject* getPendingException() {
- return pendingException;
+ return (JavaObject*)mut->pendingException;
}
/// throwFromJNI - Throw an exception after executing JNI code.
Modified: vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.cpp?rev=120561&r1=120560&r2=120561&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.cpp Wed Dec 1 01:22:08 2010
@@ -1209,7 +1209,7 @@
} END_CATCH;
exc = JavaThread::get()->getPendingException();
- printf("Exception: %p\n", exc);
+
if (exc != NULL) {
JavaThread* th = JavaThread::get();
th->clearPendingException();
Modified: vmkit/branches/multi-vm/lib/J3/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/VMCore/VirtualTables.cpp?rev=120561&r1=120560&r2=120561&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/VirtualTables.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/VirtualTables.cpp Wed Dec 1 01:22:08 2010
@@ -254,8 +254,7 @@
//
// The threads must trace:
// (1) Their stack (already done by the GC in the case of GCMmap2 or Boehm)
-// (2) Their pending exception if there is one.
-// (3) The java.lang.Thread delegate.
+// (2) The java.lang.Thread delegate.
//===----------------------------------------------------------------------===//
@@ -328,7 +327,6 @@
}
void JavaThread::tracer(uintptr_t closure) {
- mvm::Collector::markAndTraceRoot(&pendingException, closure);
mvm::Collector::markAndTraceRoot(&javaThread, closure);
mvm::Collector::markAndTraceRoot(&vmThread, closure);
#ifdef SERVICE
Modified: vmkit/branches/multi-vm/lib/Mvm/CommonThread/ctthread.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/Mvm/CommonThread/ctthread.cpp?rev=120561&r1=120560&r2=120561&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/Mvm/CommonThread/ctthread.cpp (original)
+++ vmkit/branches/multi-vm/lib/Mvm/CommonThread/ctthread.cpp Wed Dec 1 01:22:08 2010
@@ -30,6 +30,11 @@
using namespace mvm;
+void Thread::tracer(uintptr_t closure) {
+ mvm::Collector::markAndTraceRoot(&pendingException, closure);
+ vmData->tracer(closure);
+}
+
int Thread::kill(void* tid, int signo) {
return pthread_kill((pthread_t)tid, signo);
}
Modified: vmkit/branches/multi-vm/lib/Mvm/Compiler/JIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/Mvm/Compiler/JIT.cpp?rev=120561&r1=120560&r2=120561&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/Mvm/Compiler/JIT.cpp (original)
+++ vmkit/branches/multi-vm/lib/Mvm/Compiler/JIT.cpp Wed Dec 1 01:22:08 2010
@@ -331,6 +331,8 @@
OffsetDoYieldInThreadConstant = ConstantInt::get(Type::getInt32Ty(Context), 4);
OffsetCXXExceptionInThreadConstant = ConstantInt::get(Type::getInt32Ty(Context), 11);
OffsetVMDataInThreadConstant = ConstantInt::get(Type::getInt32Ty(Context), 12);
+ OffsetPendingExceptionInThreadConstant = ConstantInt::get(Type::getInt32Ty(Context), 13);
+
OffsetThreadInMutatorThreadConstant = ConstantInt::get(Type::getInt32Ty(Context), 0);
}
Modified: vmkit/branches/multi-vm/lib/Mvm/Compiler/mvm-runtime.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/Mvm/Compiler/mvm-runtime.ll?rev=120561&r1=120560&r2=120561&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/Mvm/Compiler/mvm-runtime.ll (original)
+++ vmkit/branches/multi-vm/lib/Mvm/Compiler/mvm-runtime.ll Wed Dec 1 01:22:08 2010
@@ -20,7 +20,8 @@
;;; field 10: void* lastKnownFrame
;;; field 11: void* lastExceptionBuffer
;;; field 12: void* vmData
-%Thread = type { %CircularBase, i32, i8*, i8*, i1, i1, i1, i8*, i8*, i8*, i8*, i8*, i8* }
+;;; field 13: gc* pendingException
+%Thread = type { %CircularBase, i32, i8*, i8*, i1, i1, i1, i8*, i8*, i8*, i8*, i8*, i8*, i8* }
%VMThreadData = type { %VT*, %Thread* }
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
More information about the vmkit-commits
mailing list