[vmkit-commits] [vmkit] r200836 - Do not directly see anymore TLS computation in j3codegen.cc

Gael Thomas gael.thomas at lip6.fr
Wed Feb 5 04:58:30 PST 2014


Author: gthomas
Date: Wed Feb  5 06:58:30 2014
New Revision: 200836

URL: http://llvm.org/viewvc/llvm-project?rev=200836&view=rev
Log:
Do not directly see anymore TLS computation in j3codegen.cc

Modified:
    vmkit/branches/mcjit/include/j3/j3codegen.h
    vmkit/branches/mcjit/include/j3/j3meta.def
    vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc

Modified: vmkit/branches/mcjit/include/j3/j3codegen.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3codegen.h?rev=200836&r1=200835&r2=200836&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3codegen.h (original)
+++ vmkit/branches/mcjit/include/j3/j3codegen.h Wed Feb  5 06:58:30 2014
@@ -204,7 +204,6 @@ namespace j3 {
 #undef _x
 		llvm::GlobalValue* gvTypeInfo;            /* typename void* */
 		llvm::Function*    gcRoot;             
-		llvm::Function*    frameAddress;
 		llvm::Function*    stackMap;
 		llvm::Function*    patchPoint64;
 		llvm::Function*    patchPointVoid;

Modified: vmkit/branches/mcjit/include/j3/j3meta.def
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3meta.def?rev=200836&r1=200835&r2=200836&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3meta.def (original)
+++ vmkit/branches/mcjit/include/j3/j3meta.def Wed Feb  5 06:58:30 2014
@@ -25,6 +25,7 @@ _x(funcCXAEndCatch,                 "__c
 _x(funcFake,                        "j3::J3::forceSymbolDefinition()", 0)
 
 _x(funcJ3ThreadGet,                 "j3::J3Thread::get()", 0)
+_x(funcJ3ThreadGetP,                "j3::J3Thread::get(void*)", 0)
 _x(funcVMKitThreadGet,              "vmkit::Thread::get()", 0)
 _x(funcVMKitThreadGetP,             "vmkit::Thread::get(void*)", 0)
 _x(funcJ3ThreadJniEnv,              "j3::J3Thread::jniEnv()", 0)

Modified: vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc?rev=200836&r1=200835&r2=200836&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc Wed Feb  5 06:58:30 2014
@@ -86,8 +86,6 @@ J3CodeGen::J3CodeGen(vmkit::BumpAllocato
 
 	gcRoot                   = vm->getGCRoot(module);
 
-	frameAddress             = llvm::Intrinsic::getDeclaration(module, llvm::Intrinsic::frameaddress);
-
 #if 0
 	//stackMap       = llvm::Intrinsic::getDeclaration(module, llvm::Intrinsic::experimental_stackmap);
 	//patchPointVoid = llvm::Intrinsic::getDeclaration(module, llvm::Intrinsic::experimental_patchpoint_i64);
@@ -230,13 +228,13 @@ llvm::Value* J3CodeGen::typeDescriptor(J
 }
 
 llvm::Value* J3CodeGen::spToCurrentThread(llvm::Value* sp) {
-	return builder.CreateIntToPtr(builder.CreateAnd(builder.CreatePtrToInt(sp, uintPtrTy),
-																									llvm::ConstantInt::get(uintPtrTy, vmkit::Thread::getThreadMask())),
-																 vm->typeJ3Thread);
+	if(sp->getType()->isIntegerTy())
+		sp = builder.CreateIntToPtr(sp, funcJ3ThreadGetP->getFunctionType()->getParamType(0));
+	return builder.CreateCall(funcJ3ThreadGetP, sp);
 }
 
 llvm::Value* J3CodeGen::currentThread() {
-	return spToCurrentThread(builder.CreateCall(frameAddress, builder.getInt32(0)));
+	return builder.CreateCall(funcJ3ThreadGet);
 }
 
 void J3CodeGen::monitorEnter(llvm::Value* obj) {
@@ -257,7 +255,7 @@ void J3CodeGen::monitorEnter(llvm::Value
 	
 	builder.CreateStore(builder.CreateIntToPtr(header, recordPtrTy), recordPtr);
 	builder.CreateCondBr(builder.CreateICmpEQ(currentThread(), spToCurrentThread(header)),
-												stackLocked, tryStackLock);
+											 stackLocked, tryStackLock);
 
 	/* try to stack lock */
 	builder.SetInsertPoint(tryStackLock);
@@ -304,7 +302,7 @@ void J3CodeGen::monitorExit(llvm::Value*
 	llvm::Value* header = builder.CreateLoad(headerPtr);
 	
 	builder.CreateCondBr(builder.CreateICmpEQ(currentThread(), spToCurrentThread(header)),
-												stackUnlock, monitorUnlock);
+											 stackUnlock, monitorUnlock);
 	
 	/* ok, I'm the owner */
 	builder.SetInsertPoint(stackUnlock);





More information about the vmkit-commits mailing list