[vmkit-commits] [vmkit] r180346 - Fixed a bug in precompiler that caused segmentation fault in 64 bits.
Peter Senna Tschudin
peter.senna at gmail.com
Thu Apr 25 10:01:27 PDT 2013
Author: peter.senna
Date: Thu Apr 25 11:59:57 2013
New Revision: 180346
URL: http://llvm.org/viewvc/llvm-project?rev=180346&view=rev
Log:
Fixed a bug in precompiler that caused segmentation fault in 64 bits.
(cherry picked from commit dd29cbfbff6e1d8d00fb4e345d2ddb976932ad95)
Modified:
vmkit/trunk/include/vmkit/JIT.h
vmkit/trunk/lib/j3/Compiler/JavaAOTCompiler.cpp
vmkit/trunk/lib/j3/VMCore/JavaConstantPool.cpp
vmkit/trunk/lib/vmkit/Compiler/JIT.cpp
Modified: vmkit/trunk/include/vmkit/JIT.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/JIT.h?rev=180346&r1=180345&r2=180346&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/JIT.h (original)
+++ vmkit/trunk/include/vmkit/JIT.h Thu Apr 25 11:59:57 2013
@@ -166,6 +166,7 @@ public:
llvm::PointerType* ptrPtrType;
llvm::Type* arrayPtrType;
llvm::Type* pointerSizeType;
+ llvm::Type* UTF8SizeType;
};
Modified: vmkit/trunk/lib/j3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/JavaAOTCompiler.cpp?rev=180346&r1=180345&r2=180346&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/j3/Compiler/JavaAOTCompiler.cpp Thu Apr 25 11:59:57 2013
@@ -1477,7 +1477,7 @@ Constant* JavaAOTCompiler::CreateConstan
Constant* JavaAOTCompiler::CreateConstantFromUTF8(const UTF8* val) {
std::vector<Type*> Elemts;
ArrayType* ATy = ArrayType::get(Type::getInt16Ty(getLLVMContext()), val->size);
- Elemts.push_back(JavaIntrinsics.pointerSizeType);
+ Elemts.push_back(JavaIntrinsics.UTF8SizeType);
Elemts.push_back(ATy);
@@ -1485,7 +1485,7 @@ Constant* JavaAOTCompiler::CreateConstan
Elemts);
std::vector<Constant*> Cts;
- Cts.push_back(ConstantInt::get(JavaIntrinsics.pointerSizeType, val->size));
+ Cts.push_back(ConstantInt::get(JavaIntrinsics.UTF8SizeType, val->size));
ArrayRef<uint16_t> Vals(val->elements, val->size);
Cts.push_back(ConstantDataArray::get(getLLVMContext(), Vals));
Modified: vmkit/trunk/lib/j3/VMCore/JavaConstantPool.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaConstantPool.cpp?rev=180346&r1=180345&r2=180346&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaConstantPool.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaConstantPool.cpp Thu Apr 25 11:59:57 2013
@@ -508,10 +508,10 @@ JavaField* JavaConstantPool::lookupField
// don't throw if no field, the exception will be thrown just in time
if (field) {
if (!stat) {
- ctpRes[index] = (void*)field->ptrOffset;
+ ctpRes[index] = (void*)(uintptr_t)field->ptrOffset;
} else if (lookup->isReady()) {
void* S = field->classDef->getStaticInstance();
- ctpRes[index] = (void*)((uint64)S + field->ptrOffset);
+ ctpRes[index] = (void*)(uintptr_t)((uint64)S + field->ptrOffset);
}
}
return field;
Modified: vmkit/trunk/lib/vmkit/Compiler/JIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/vmkit/Compiler/JIT.cpp?rev=180346&r1=180345&r2=180346&view=diff
==============================================================================
--- vmkit/trunk/lib/vmkit/Compiler/JIT.cpp (original)
+++ vmkit/trunk/lib/vmkit/Compiler/JIT.cpp Thu Apr 25 11:59:57 2013
@@ -268,6 +268,8 @@ void BaseIntrinsics::init(llvm::Module*
pointerSizeType = module->getPointerSize() == Module::Pointer32 ?
Type::getInt32Ty(Context) : Type::getInt64Ty(Context);
+ UTF8SizeType = Type::getInt32Ty(Context);
+
// Constant declaration
constantLongMinusOne = ConstantInt::get(Type::getInt64Ty(Context), (uint64_t)-1);
constantLongZero = ConstantInt::get(Type::getInt64Ty(Context), 0);
More information about the vmkit-commits
mailing list