[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