[vmkit-commits] [vmkit] r198244 - remove most of the uses of the data layout

Gael Thomas gael.thomas at lip6.fr
Mon Dec 30 12:39:07 PST 2013


Author: gthomas
Date: Mon Dec 30 14:39:07 2013
New Revision: 198244

URL: http://llvm.org/viewvc/llvm-project?rev=198244&view=rev
Log:
remove most of the uses of the data layout

Modified:
    vmkit/branches/mcjit/include/j3/j3codegen.h
    vmkit/branches/mcjit/include/j3/j3method.h
    vmkit/branches/mcjit/include/j3/j3object.h
    vmkit/branches/mcjit/include/vmkit/gc.h
    vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc
    vmkit/branches/mcjit/lib/j3/vm/j3method.cc
    vmkit/branches/mcjit/lib/j3/vm/j3object.cc
    vmkit/branches/mcjit/lib/vmkit/gc.cc

Modified: vmkit/branches/mcjit/include/j3/j3codegen.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3codegen.h?rev=198244&r1=198243&r2=198244&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3codegen.h (original)
+++ vmkit/branches/mcjit/include/j3/j3codegen.h Mon Dec 30 14:39:07 2013
@@ -63,6 +63,7 @@ namespace j3 {
 		uint32_t*              pendingBranchs;
 		uint32_t               topPendingBranchs;
 
+		llvm::Type*            uintPtrTy;
 		llvm::Value*           nullValue;
 
 		llvm::MDNode*          dbgInfo;

Modified: vmkit/branches/mcjit/include/j3/j3method.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3method.h?rev=198244&r1=198243&r2=198244&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3method.h (original)
+++ vmkit/branches/mcjit/include/j3/j3method.h Mon Dec 30 14:39:07 2013
@@ -36,7 +36,7 @@ namespace j3 {
 	public:
 		J3MethodType(J3Type** args, size_t nbArgs);
 
-		llvm::FunctionType* unsafe_llvmFunctionType();                   /* only call while compiler locked */
+		llvm::FunctionType* unsafe_llvmFunctionType();                   /* call only while compiler locked */
 		uint32_t            nbIns() { return _nbIns; }
 		J3Type*             out() { return _out; }
 		J3Type*             ins(uint32_t idx) { return _ins[idx]; }
@@ -94,9 +94,9 @@ namespace j3 {
 
 		J3Method*           resolve(J3ObjectHandle* obj);
 
-		llvm::Function*     nativeLLVMFunction(llvm::Module* module);
+		llvm::Function*     unsafe_nativeLLVMFunction(llvm::Module* module); /* call only while compiler locked */
 		llvm::GlobalValue*  llvmDescriptor(llvm::Module* module);
-		llvm::Function*     unsafe_llvmFunction(bool isStub, llvm::Module* module, J3Class* from=0); /* only call while compiler locked */
+		llvm::Function*     unsafe_llvmFunction(bool isStub, llvm::Module* module, J3Class* from=0); /* call only while compiler locked */
 
 		uint32_t            index();
 		uint32_t*           indexPtr() { return &_index; }

Modified: vmkit/branches/mcjit/include/j3/j3object.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3object.h?rev=198244&r1=198243&r2=198244&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3object.h (original)
+++ vmkit/branches/mcjit/include/j3/j3object.h Mon Dec 30 14:39:07 2013
@@ -108,7 +108,7 @@ namespace j3 {
 		static void monitorEnter(J3Object* obj);
 		static void monitorExit(J3Object* obj);
 
-		static J3Object* allocate(J3VirtualTable* vt, size_t n);
+		static J3Object* allocate(J3VirtualTable* vt, uintptr_t n);
 		static J3Object* doNewNoInit(J3Class* cl);
 		static J3Object* doNew(J3Class* cl);
 	public:
@@ -125,7 +125,7 @@ namespace j3 {
 
 	private:
 		uint32_t _length;
-		static J3Object* doNew(J3ArrayClass* cl, uint32_t length);
+		static J3Object* doNew(J3ArrayClass* cl, uintptr_t length);
 
 	public:
 

Modified: vmkit/branches/mcjit/include/vmkit/gc.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/vmkit/gc.h?rev=198244&r1=198243&r2=198244&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/vmkit/gc.h (original)
+++ vmkit/branches/mcjit/include/vmkit/gc.h Mon Dec 30 14:39:07 2013
@@ -6,7 +6,7 @@
 namespace vmkit {
 	class GC {
 	public:
-		static void* allocate(size_t sz);
+		static void* allocate(uintptr_t sz);
 	};
 };
 

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=198244&r1=198243&r2=198244&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc Mon Dec 30 14:39:07 2013
@@ -59,6 +59,8 @@ J3CodeGen::J3CodeGen(vmkit::BumpAllocato
 
 	builder = &_builder;
 
+	uintPtrTy = builder->getIntPtrTy(vm->dataLayout());
+
 #define _x(name, id)														\
 	name = vm->introspectFunction(module(), id);
 #include "j3/j3meta.def"
@@ -87,7 +89,7 @@ J3CodeGen::J3CodeGen(vmkit::BumpAllocato
 #endif
 
 	nullValue = builder
-		->CreateIntToPtr(llvm::ConstantInt::get(builder->getIntPtrTy(vm->dataLayout()), (uintptr_t)0),
+		->CreateIntToPtr(llvm::ConstantInt::get(uintPtrTy, (uintptr_t)0),
 										 vm->typeJ3ObjectPtr);
 
 	if(J3Cst::isNative(method->access()))
@@ -163,10 +165,8 @@ llvm::Value* J3CodeGen::unflatten(llvm::
 }
 
 llvm::Value* J3CodeGen::spToCurrentThread(llvm::Value* sp) {
-	llvm::Type* type = builder->getIntPtrTy(vm->dataLayout());
-
-	return builder->CreateIntToPtr(builder->CreateAnd(builder->CreatePtrToInt(sp, type),
-																										llvm::ConstantInt::get(type, vmkit::Thread::getThreadMask())),
+	return builder->CreateIntToPtr(builder->CreateAnd(builder->CreatePtrToInt(sp, uintPtrTy),
+																										llvm::ConstantInt::get(uintPtrTy, vmkit::Thread::getThreadMask())),
 																 vm->typeJ3Thread);
 }
 
@@ -175,7 +175,6 @@ llvm::Value* J3CodeGen::currentThread()
 }
 
 void J3CodeGen::monitorEnter(llvm::Value* obj) {
-	llvm::Type* uintPtrTy = builder->getIntPtrTy(vm->dataLayout());
 	llvm::Type* recordTy = vm->typeJ3LockRecord;
 	llvm::Type* recordPtrTy = vm->typeJ3LockRecord->getPointerTo();
 
@@ -225,7 +224,6 @@ void J3CodeGen::monitorEnter(llvm::Value
 }
 
 void J3CodeGen::monitorExit(llvm::Value* obj) {
-	llvm::Type* uintPtrTy = builder->getIntPtrTy(vm->dataLayout());
 	llvm::Type* recordPtrTy = vm->typeJ3LockRecord->getPointerTo();
 
 	llvm::BasicBlock* ok = forwardBranch("unlock-ok", codeReader->tell(), 0, 0);
@@ -405,7 +403,6 @@ void J3CodeGen::invokeSpecial(uint32_t i
 }
 
 llvm::Value* J3CodeGen::fieldOffset(llvm::Value* obj, J3Field* f) {
-	llvm::Type* uintPtrTy = builder->getIntPtrTy(vm->dataLayout());
 	return builder->CreateIntToPtr(builder->CreateAdd(builder->CreatePtrToInt(obj, uintPtrTy),
 																										llvm::ConstantInt::get(uintPtrTy, f->offset())),
 																 f->type()->llvmType()->getPointerTo());
@@ -480,12 +477,11 @@ llvm::Value* J3CodeGen::arrayLength(llvm
 
 void J3CodeGen::newArray(J3ArrayClass* array) {
 	initialiseJ3Type(array);
-	llvm::DataLayout* layout = vm->dataLayout();
 	llvm::Value* length = stack.pop();
 	llvm::Value* nbb = 
-		builder->CreateAdd(builder->getInt64(layout->getTypeAllocSize(array->llvmType()->getContainedType(0))),
-											 builder->CreateMul(builder->getInt64(layout->getTypeAllocSize(array->component()->llvmType())), 
-																					builder->CreateZExtOrBitCast(length, builder->getInt64Ty())));
+		builder->CreateAdd(llvm::ConstantInt::get(uintPtrTy, sizeof(J3ArrayObject)),
+											 builder->CreateMul(llvm::ConstantInt::get(uintPtrTy, 1 << array->component()->logSize()),
+																					builder->CreateZExtOrBitCast(length, uintPtrTy)));
 	
 	llvm::Value* res = builder->CreateCall2(funcJ3ObjectAllocate, vt(array), nbb);
 
@@ -1574,7 +1570,7 @@ void J3CodeGen::generateJava() {
 void J3CodeGen::generateNative() {
 	std::vector<llvm::Value*> args;
 
-	llvm::Function* nat = method->nativeLLVMFunction(module());
+	llvm::Function* nat = method->unsafe_nativeLLVMFunction(module());
 
 	llvm::Value* res;
 	llvm::Value* thread = currentThread();

Modified: vmkit/branches/mcjit/lib/j3/vm/j3method.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3method.cc?rev=198244&r1=198243&r2=198244&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3method.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3method.cc Mon Dec 30 14:39:07 2013
@@ -363,7 +363,7 @@ llvm::Type* J3Method::doNativeType(J3Typ
 		return t;
 }
 
-llvm::Function* J3Method::nativeLLVMFunction(llvm::Module* module) {
+llvm::Function* J3Method::unsafe_nativeLLVMFunction(llvm::Module* module) {
 	J3ClassLoader* loader = cl()->loader();
 	J3Mangler      mangler(cl());
 

Modified: vmkit/branches/mcjit/lib/j3/vm/j3object.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3object.cc?rev=198244&r1=198243&r2=198244&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3object.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3object.cc Mon Dec 30 14:39:07 2013
@@ -272,7 +272,7 @@ volatile uintptr_t* J3Object::header() {
 	return &_header; 
 }
 
-J3Object* J3Object::allocate(J3VirtualTable* vt, size_t n) {
+J3Object* J3Object::allocate(J3VirtualTable* vt, uintptr_t n) {
 	J3Object* res = (J3Object*)vmkit::GC::allocate(n);
 	res->_vt = vt;
 	res->_header = 1;
@@ -366,12 +366,8 @@ J3Monitor* J3Object::monitor() {
 /*
  *    ---   J3ArrayObject ---
  */
-J3Object* J3ArrayObject::doNew(J3ArrayClass* cl, uint32_t length) {
-	llvm::DataLayout* layout = cl->loader()->vm()->dataLayout();
-	J3ArrayObject* res = 
-		(J3ArrayObject*)allocate(cl->vtAndResolve(),
-														 layout->getTypeAllocSize(cl->llvmType()->getContainedType(0))
-														 + layout->getTypeAllocSize(cl->component()->llvmType()) * length);
+J3Object* J3ArrayObject::doNew(J3ArrayClass* cl, uintptr_t length) {
+	J3ArrayObject* res = (J3ArrayObject*)allocate(cl->vtAndResolve(), sizeof(J3ArrayObject) + (1 << cl->component()->logSize()) * length);
 
 	res->_length = length;
 

Modified: vmkit/branches/mcjit/lib/vmkit/gc.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/vmkit/gc.cc?rev=198244&r1=198243&r2=198244&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/vmkit/gc.cc (original)
+++ vmkit/branches/mcjit/lib/vmkit/gc.cc Mon Dec 30 14:39:07 2013
@@ -3,6 +3,6 @@
 
 using namespace vmkit;
 
-void* GC::allocate(size_t sz) {
+void* GC::allocate(uintptr_t sz) {
 	return calloc(sz, 1);
 }





More information about the vmkit-commits mailing list