[vmkit-commits] [vmkit] r61136 - in /vmkit/trunk/lib: JnJVM/LLVMRuntime/runtime-boehm.ll JnJVM/LLVMRuntime/runtime-default.ll JnJVM/LLVMRuntime/runtime-isolate.ll JnJVM/LLVMRuntime/runtime-single.ll JnJVM/VMCore/JavaJIT.cpp JnJVM/VMCore/JnjvmModule.cpp Mvm/Runtime/LLVMRuntime.ll
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Wed Dec 17 06:31:27 PST 2008
Author: geoffray
Date: Wed Dec 17 08:31:16 2008
New Revision: 61136
URL: http://llvm.org/viewvc/llvm-project?rev=61136&view=rev
Log:
Set the LLVM type of the VT as an array of functions.
Modified:
vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-boehm.ll
vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-default.ll
vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-isolate.ll
vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-single.ll
vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp
vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
vmkit/trunk/lib/Mvm/Runtime/LLVMRuntime.ll
Modified: vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-boehm.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-boehm.ll?rev=61136&r1=61135&r2=61136&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-boehm.ll (original)
+++ vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-boehm.ll Wed Dec 17 08:31:16 2008
@@ -2,4 +2,4 @@
;;;;;;;;;;;;;;;;;;;; Collector specific methods ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-declare %JavaObject* @gcmalloc(i32, %VT)
+declare %JavaObject* @gcmalloc(i32, %VT*)
Modified: vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-default.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-default.ll?rev=61136&r1=61135&r2=61136&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-default.ll (original)
+++ vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-default.ll Wed Dec 17 08:31:16 2008
@@ -3,10 +3,10 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; A virtual table is an array of function pointers.
-%VT = type i32 (...)**
+%VT = type [0 x i32 (...)*]
;;; The root of all Java Objects: a VT, a class and a lock.
-%JavaObject = type { %VT, %JavaCommonClass*, i8* }
+%JavaObject = type { %VT*, %JavaCommonClass*, i8* }
;;; Types for Java arrays. A size of 0 means an undefined size.
%JavaArray = type { %JavaObject, i8* }
@@ -55,7 +55,7 @@
declare i32 @arrayLength(%JavaObject*) readnone
;;; getVT - Get the VT of the object.
-declare %VT @getVT(%JavaObject*) readnone
+declare %VT* @getVT(%JavaObject*) readnone
;;; getClass - Get the class of an object.
declare %JavaCommonClass* @getClass(%JavaObject*) readnone
@@ -64,7 +64,7 @@
declare i8* @getLock(%JavaObject*)
;;; getVTFromClass - Get the VT of a class from its runtime representation.
-declare %VT @getVTFromClass(%JavaClass*) readnone
+declare %VT* @getVTFromClass(%JavaClass*) readnone
;;; getObjectSizeFromClass - Get the size of a class from its runtime
;;; representation.
@@ -185,7 +185,7 @@
declare void @jniProceedPendingException()
declare i8* @getSJLJBuffer()
-declare %JavaObject* @gcmalloc(i32, %VT)
+declare %JavaObject* @gcmalloc(i32, %VT*)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Debugging methods ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Modified: vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-isolate.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-isolate.ll?rev=61136&r1=61135&r2=61136&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-isolate.ll (original)
+++ vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-isolate.ll Wed Dec 17 08:31:16 2008
@@ -2,13 +2,13 @@
;;;;;;;;;;;;;;;;;;;;;;;;; Isolate specific types ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-%Jnjvm = type {%VT, %JavaClass*, [9 x %JavaClass*]}
+%Jnjvm = type { %VT*, %JavaClass*, [9 x %JavaClass*] }
%JavaCommonClass = type { %JavaCommonClass**, i32, [32 x %JavaObject*],
i16, %JavaClass**, i16, %UTF8*, %JavaClass*, i8* }
-%JavaClass = type { %JavaCommonClass, i32, %VT, [32 x %TaskClassMirror], i8*,
+%JavaClass = type { %JavaCommonClass, i32, %VT*, [32 x %TaskClassMirror], i8*,
%JavaField*, i16, %JavaField*, i16, %JavaMethod*, i16,
%JavaMethod*, i16, i8*, %ArrayUInt8*, i8*, %Attribut*,
i16, %JavaClass**, i16, %JavaClass*, i16, i8, i32, i32, i8*,
Modified: vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-single.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-single.ll?rev=61136&r1=61135&r2=61136&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-single.ll (original)
+++ vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-single.ll Wed Dec 17 08:31:16 2008
@@ -6,7 +6,7 @@
%JavaClass**, i16, %UTF8*, %JavaClass*, i8* }
-%JavaClass = type { %JavaCommonClass, i32, %VT, [1 x %TaskClassMirror], i8*,
+%JavaClass = type { %JavaCommonClass, i32, %VT*, [1 x %TaskClassMirror], i8*,
%JavaField*, i16, %JavaField*, i16, %JavaMethod*, i16,
%JavaMethod*, i16, i8*, %ArrayUInt8*, i8*, %Attribut*,
i16, %JavaClass**, i16, %JavaClass*, i16, i8, i32, i32, i8*,
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp?rev=61136&r1=61135&r2=61136&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp Wed Dec 17 08:31:16 2008
@@ -114,14 +114,16 @@
Value* VT = CallInst::Create(module->GetVTFunction, args[0], "",
currentBlock);
- Value* indexes2; //[3];
+ Value* indexes2[2];
+ indexes2[0] = module->constantZero;
+
#ifdef ISOLATE_SHARING
Value* indexesCtp; //[3];
#endif
if (meth) {
LLVMMethodInfo* LMI = module->getMethodInfo(meth);
ConstantInt* Offset = LMI->getOffset();
- indexes2 = Offset;
+ indexes2[1] = Offset;
#ifdef ISOLATE_SHARING
indexesCtp = ConstantInt::get(Type::Int32Ty,
Offset->getZExtValue() * -1);
@@ -130,7 +132,7 @@
Value* val = getConstantPoolAt(index, module->VirtualLookupFunction,
Type::Int32Ty, args[0], true);
- indexes2 = val;
+ indexes2[1] = val;
#ifdef ISOLATE_SHARING
Value* mul = BinaryOperator::CreateMul(val, module->constantMinusOne,
"", currentBlock);
@@ -138,9 +140,11 @@
#endif
}
- Value* FuncPtr = GetElementPtrInst::Create(VT, indexes2, "", currentBlock);
+ Value* FuncPtr = GetElementPtrInst::Create(VT, indexes2, indexes2 + 2, "",
+ currentBlock);
Value* Func = new LoadInst(FuncPtr, "", currentBlock);
+
Func = new BitCastInst(Func, LSI->getVirtualPtrType(), "", currentBlock);
#ifdef ISOLATE_SHARING
Value* CTP = GetElementPtrInst::Create(VT, indexesCtp, "", currentBlock);
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp?rev=61136&r1=61135&r2=61136&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp Wed Dec 17 08:31:16 2008
@@ -536,7 +536,7 @@
COPY(ArrayObject)
#undef COPY
-
+
}
#endif
@@ -1041,7 +1041,7 @@
Module* module = this;
initialModule = this;
- VTType = module->getTypeByName("VT");
+ VTType = PointerType::getUnqual(module->getTypeByName("VT"));
#ifdef ISOLATE_SHARING
JnjvmType =
Modified: vmkit/trunk/lib/Mvm/Runtime/LLVMRuntime.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Runtime/LLVMRuntime.ll?rev=61136&r1=61135&r2=61136&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Runtime/LLVMRuntime.ll (original)
+++ vmkit/trunk/lib/Mvm/Runtime/LLVMRuntime.ll Wed Dec 17 08:31:16 2008
@@ -3,7 +3,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; A virtual table is an array of function pointers.
-%VT = type i32 (...)**
+%VT = type [0 x i32 (...)*]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Printing functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
More information about the vmkit-commits
mailing list