[vmkit-commits] [vmkit] r91457 - in /vmkit/trunk: include/jnjvm/ lib/JnJVM/Compiler/ lib/JnJVM/LLVMRuntime/ lib/JnJVM/VMCore/

Nicolas Geoffray nicolas.geoffray at lip6.fr
Tue Dec 15 13:55:42 PST 2009


Author: geoffray
Date: Tue Dec 15 15:55:42 2009
New Revision: 91457

URL: http://llvm.org/viewvc/llvm-project?rev=91457&view=rev
Log:
Remove JavaCache and Enveloppe classes, which are not needed anymore.


Removed:
    vmkit/trunk/lib/JnJVM/VMCore/JavaCache.h
Modified:
    vmkit/trunk/include/jnjvm/JnjvmModule.h
    vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp
    vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp
    vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp
    vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.h
    vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp
    vmkit/trunk/lib/JnJVM/Compiler/JavaJITOpcodes.cpp
    vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp
    vmkit/trunk/lib/JnJVM/Compiler/LowerConstantCalls.cpp
    vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-default.ll
    vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
    vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.h
    vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h
    vmkit/trunk/lib/JnJVM/VMCore/LinkJavaRuntime.h

Modified: vmkit/trunk/include/jnjvm/JnjvmModule.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/jnjvm/JnjvmModule.h?rev=91457&r1=91456&r2=91457&view=diff

==============================================================================
--- vmkit/trunk/include/jnjvm/JnjvmModule.h (original)
+++ vmkit/trunk/include/jnjvm/JnjvmModule.h Tue Dec 15 15:55:42 2009
@@ -37,12 +37,10 @@
 
 class ArrayObject;
 class Attribut;
-class CacheNode;
 class CommonClass;
 class Class;
 class ClassArray;
 class ClassPrimitive;
-class Enveloppe;
 class JavaConstantPool;
 class JavaField;
 class JavaMethod;
@@ -232,8 +230,6 @@
   static const llvm::Type* JavaClassArrayType;
   static const llvm::Type* JavaClassPrimitiveType;
   static const llvm::Type* JavaCacheType;
-  static const llvm::Type* EnveloppeType;
-  static const llvm::Type* CacheNodeType;
   static const llvm::Type* ConstantPoolType;
   static const llvm::Type* UTF8Type;
   static const llvm::Type* JavaMethodType;
@@ -282,9 +278,7 @@
   llvm::Function* GetArrayClassFunction;
 
 #ifdef ISOLATE_SHARING
-  llvm::Function* GetCtpCacheNodeFunction;
   llvm::Function* GetCtpClassFunction;
-  llvm::Function* EnveloppeLookupFunction;
   llvm::Function* GetJnjvmExceptionClassFunction;
   llvm::Function* GetJnjvmArrayClassFunction;
   llvm::Function* StaticCtpLookupFunction;
@@ -457,7 +451,6 @@
   virtual llvm::Constant* getVirtualTable(JavaVirtualTable*) = 0;
   virtual llvm::Constant* getMethodInClass(JavaMethod* meth) = 0;
   
-  virtual llvm::Constant* getEnveloppe(Enveloppe* enveloppe) = 0;
   virtual llvm::Constant* getString(JavaString* str) = 0;
   virtual llvm::Constant* getStringPtr(JavaString** str) = 0;
   virtual llvm::Constant* getConstantPool(JavaConstantPool* ctp) = 0;
@@ -564,7 +557,6 @@
   virtual llvm::Constant* getVirtualTable(JavaVirtualTable*);
   virtual llvm::Constant* getMethodInClass(JavaMethod* meth);
   
-  virtual llvm::Constant* getEnveloppe(Enveloppe* enveloppe);
   virtual llvm::Constant* getString(JavaString* str);
   virtual llvm::Constant* getStringPtr(JavaString** str);
   virtual llvm::Constant* getConstantPool(JavaConstantPool* ctp);
@@ -633,7 +625,6 @@
   virtual llvm::Constant* getVirtualTable(JavaVirtualTable*);
   virtual llvm::Constant* getMethodInClass(JavaMethod* meth);
   
-  virtual llvm::Constant* getEnveloppe(Enveloppe* enveloppe);
   virtual llvm::Constant* getString(JavaString* str);
   virtual llvm::Constant* getStringPtr(JavaString** str);
   virtual llvm::Constant* getConstantPool(JavaConstantPool* ctp);
@@ -657,8 +648,6 @@
   //--------------- Static compiler specific functions -----------------------//
   llvm::Constant* CreateConstantFromVT(JavaVirtualTable* VT);
   llvm::Constant* CreateConstantFromUTF8(const UTF8* val);
-  llvm::Constant* CreateConstantFromEnveloppe(Enveloppe* val);
-  llvm::Constant* CreateConstantFromCacheNode(CacheNode* CN);
   llvm::Constant* CreateConstantFromCommonClass(CommonClass* cl);
   llvm::Constant* CreateConstantFromClass(Class* cl);
   llvm::Constant* CreateConstantFromClassPrimitive(ClassPrimitive* cl);
@@ -688,7 +677,6 @@
   std::map<const Class*, llvm::Constant*> staticInstances;
   std::map<const JavaConstantPool*, llvm::Constant*> constantPools;
   std::map<const JavaString*, llvm::Constant*> strings;
-  std::map<const Enveloppe*, llvm::Constant*> enveloppes;
   std::map<const JavaMethod*, llvm::Constant*> nativeFunctions;
   std::map<const UTF8*, llvm::Constant*> utf8s;
   std::map<const Class*, llvm::Constant*> virtualMethods;
@@ -725,9 +713,6 @@
   typedef std::map<const JavaString*, llvm::Constant*>::iterator
     string_iterator;
   
-  typedef std::map<const Enveloppe*, llvm::Constant*>::iterator
-    enveloppe_iterator;
-  
   typedef std::map<const JavaMethod*, llvm::Constant*>::iterator
     native_function_iterator;
   

Modified: vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp?rev=91457&r1=91456&r2=91457&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp Tue Dec 15 15:55:42 2009
@@ -19,7 +19,6 @@
 
 #include "mvm/JIT.h"
 
-#include "JavaCache.h"
 #include "JavaConstantPool.h"
 #include "JavaJIT.h"
 #include "JavaString.h"

Modified: vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp?rev=91457&r1=91456&r2=91457&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp Tue Dec 15 15:55:42 2009
@@ -21,7 +21,6 @@
 #include "jnjvm/JnjvmModule.h"
 
 #include "JavaArray.h"
-#include "JavaCache.h"
 #include "JavaConstantPool.h"
 #include "JavaString.h"
 #include "JavaThread.h"
@@ -193,23 +192,6 @@
   abort();
 }
 
-Constant* JavaAOTCompiler::getEnveloppe(Enveloppe* enveloppe) {
-  enveloppe_iterator SI = enveloppes.find(enveloppe);
-  if (SI != enveloppes.end()) {
-    return SI->second;
-  } else {
-    Module& Mod = *getLLVMModule();
-    GlobalVariable* varGV = 
-      new GlobalVariable(Mod, JnjvmModule::EnveloppeType->getContainedType(0),
-                         false, GlobalValue::InternalLinkage, 0, "");
-    enveloppes.insert(std::make_pair(enveloppe, varGV));
-    
-    Constant* C = CreateConstantFromEnveloppe(enveloppe);
-    varGV->setInitializer(C);
-    return varGV;
-  }
-}
-
 Constant* JavaAOTCompiler::getJavaClass(CommonClass* cl) {
   java_class_iterator End = javaClasses.end();
   java_class_iterator I = javaClasses.find(cl);
@@ -769,43 +751,6 @@
 }
 
 
-Constant* JavaAOTCompiler::CreateConstantFromCacheNode(CacheNode* CN) {
-  const StructType* STy = 
-    dyn_cast<StructType>(JnjvmModule::CacheNodeType->getContainedType(0));
-
-  std::vector<Constant*> Elmts;
-  Elmts.push_back(Constant::getNullValue(STy->getContainedType(0)));
-  Elmts.push_back(Constant::getNullValue(STy->getContainedType(1)));
-  Elmts.push_back(Constant::getNullValue(STy->getContainedType(2)));
-  Elmts.push_back(getEnveloppe(CN->enveloppe));
-  
-  return ConstantStruct::get(STy, Elmts);
-}
-
-Constant* JavaAOTCompiler::CreateConstantFromEnveloppe(Enveloppe* val) {
-  
-  const StructType* STy = 
-    dyn_cast<StructType>(JnjvmModule::EnveloppeType->getContainedType(0));
-  const StructType* CNTy = 
-    dyn_cast<StructType>(JnjvmModule::CacheNodeType->getContainedType(0));
-  
-  std::vector<Constant*> Elmts;
-  
-  Constant* firstCache = CreateConstantFromCacheNode(val->firstCache);
-  Elmts.push_back(new GlobalVariable(*getLLVMModule(), CNTy, false,
-                                     GlobalValue::InternalLinkage,
-                                     firstCache, ""));
-  Elmts.push_back(getUTF8(val->methodName));
-  Elmts.push_back(getUTF8(val->methodSign));
-
-  Elmts.push_back(Constant::getNullValue(Type::getInt32Ty(getGlobalContext())));
-  Elmts.push_back(getNativeClass(val->classDef));
-  Elmts.push_back(firstCache);
-
-  return ConstantStruct::get(STy, Elmts);
-  
-}
-
 Constant* JavaAOTCompiler::CreateConstantFromAttribut(Attribut& attribut) {
   const StructType* STy = 
     dyn_cast<StructType>(JnjvmModule::AttributType->getContainedType(0));
@@ -991,14 +936,6 @@
   // nbAttributs
   MethodElts.push_back(ConstantInt::get(Type::getInt16Ty(getGlobalContext()), method.nbAttributs));
   
-  // enveloppes
-  // already allocated by the JIT, don't reallocate them.
-  MethodElts.push_back(Constant::getNullValue(JnjvmModule::EnveloppeType));
-  
-  // nbEnveloppes
-  // 0 because we're not allocating here.
-  MethodElts.push_back(ConstantInt::get(Type::getInt16Ty(getGlobalContext()), 0));
-  
   // classDef
   MethodElts.push_back(getNativeClass(method.classDef));
   
@@ -1698,8 +1635,6 @@
           (unsigned long long int) constantPools.size());
   fprintf(stderr, "Number of strings                   : %llu\n", 
           (unsigned long long int) strings.size());
-  fprintf(stderr, "Number of enveloppes                : %llu\n", 
-          (unsigned long long int) enveloppes.size());
   fprintf(stderr, "Number of native functions          : %llu\n", 
           (unsigned long long int) nativeFunctions.size());
   fprintf(stderr, "----------------- Total size in .data ------------------\n");

Modified: vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp?rev=91457&r1=91456&r2=91457&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp Tue Dec 15 15:55:42 2009
@@ -26,7 +26,6 @@
 
 #include "debug.h"
 #include "JavaArray.h"
-#include "JavaCache.h"
 #include "JavaClass.h"
 #include "JavaConstantPool.h"
 #include "JavaObject.h"
@@ -907,7 +906,6 @@
   readExceptionTable(reader, codeLen);
 
   exploreOpcodes(&compilingClass->bytes->elements[start], codeLen);
-  nbEnveloppes = 0;
 
   if (returnType != Type::getVoidTy(getGlobalContext())) {
     endNode = PHINode::Create(returnType, "", endBlock);
@@ -1126,11 +1124,6 @@
   readExceptionTable(reader, codeLen);
   
   exploreOpcodes(&compilingClass->bytes->elements[start], codeLen);
-  compilingMethod->enveloppes = 
-    new (compilingClass->classLoader->allocator, "Enveloppes")
-    Enveloppe[nbEnveloppes];
-  compilingMethod->nbEnveloppes = nbEnveloppes;
-  nbEnveloppes = 0;
  
   endBlock = createBasicBlock("end");
 
@@ -2188,88 +2181,6 @@
   
   JITVerifyNull(args[0]);
  
-
-#if 0
-
-
-  Value* zero = module->constantZero;
-  Value* one = module->constantOne;
-
-#ifndef ISOLATE_SHARING
-  // ok now the cache
-  Enveloppe& enveloppe = buggyVirtual ?
-    *(new (compilingClass->classLoader->allocator, "Enveloppe") Enveloppe()) :
-    compilingMethod->enveloppes[nbEnveloppes++];
-  if (!inlining)
-    enveloppe.initialise(compilingClass, name, signature->keyName);
-   
-  Value* llvmEnv = TheCompiler->getEnveloppe(&enveloppe);
-#else
-  Value* llvmEnv = getConstantPoolAt(index,
-                                     module->EnveloppeLookupFunction,
-                                     module->EnveloppeType, 0, false);
-#endif
-
-  Value* args1[2] = { zero, zero };
-  Value* cachePtr = GetElementPtrInst::Create(llvmEnv, args1, args1 + 2,
-                                              "", currentBlock);
-  Value* cache = new LoadInst(cachePtr, "", currentBlock);
-
-  Value* VT = CallInst::Create(module->GetVTFunction, args[0], "",
-                               currentBlock);
-  Value* args3[2] = { zero, one };
-  Value* lastCiblePtr = GetElementPtrInst::Create(cache, args3, args3 + 2, "",
-                                                  currentBlock);
-  Value* lastCible = new LoadInst(lastCiblePtr, "", currentBlock);
-
-  Value* cmp = new ICmpInst(*currentBlock, ICmpInst::ICMP_EQ, VT, lastCible,
-                            "");
-  
-  BasicBlock* ifTrue = createBasicBlock("cache ok");
-  BasicBlock* ifFalse = createBasicBlock("cache not ok");
-  BranchInst::Create(ifTrue, ifFalse, cmp, currentBlock);
-  
-  currentBlock = ifFalse;
-  Value* _meth = invoke(module->InterfaceLookupFunction, cache, args[0],
-                        "", ifFalse);
-  Value* meth = new BitCastInst(_meth, virtualPtrType, "", 
-                                currentBlock);
-#ifdef ISOLATE_SHARING
-  Value* cache2 = new LoadInst(cachePtr, "", currentBlock);
-  Value* newCtpCache = CallInst::Create(module->GetCtpCacheNodeFunction,
-                                        cache2, "", currentBlock);
-  args.push_back(newCtpCache);
-#endif
-  Value* ret = invoke(meth, args, "", currentBlock);
-  if (node) {
-    node->addIncoming(ret, currentBlock);
-  }
-  BranchInst::Create(endBlock, currentBlock);
-
-  currentBlock = ifTrue;
-
-  Value* methPtr = GetElementPtrInst::Create(cache, args1, args1 + 2,
-                                             "", currentBlock);
-
-  _meth = new LoadInst(methPtr, "", currentBlock);
-  meth = new BitCastInst(_meth, virtualPtrType, "", currentBlock);
-  
-#ifdef ISOLATE_SHARING
-  args.pop_back();
-  cache = new LoadInst(cachePtr, "", currentBlock);
-  newCtpCache = CallInst::Create(module->GetCtpCacheNodeFunction,
-                                 cache, "", currentBlock);
-  args.push_back(newCtpCache);
-#endif
-  ret = invoke(meth, args, "", currentBlock);
-  BranchInst::Create(endBlock, currentBlock);
-
-  if (node) {
-    node->addIncoming(ret, currentBlock);
-  }
-
-#else
-
   CommonClass* cl = 0;
   JavaMethod* meth = 0;
   ctpInfo->infoOfMethod(index, ACC_VIRTUAL, cl, meth);
@@ -2375,7 +2286,6 @@
   int32_indvar->addIncoming(int32_indvar_next, currentBlock);
   ptr_table_0_lcssa->addIncoming(ptr_37, currentBlock);
       
-#endif
   currentBlock = endBlock;
   if (node) {
     if (node->getType() == module->JavaObjectType) {

Modified: vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.h?rev=91457&r1=91456&r2=91457&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.h (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.h Tue Dec 15 15:55:42 2009
@@ -67,7 +67,6 @@
  
   /// JavaJIT - Default constructor.
   JavaJIT(JavaLLVMCompiler* C, JavaMethod* meth, llvm::Function* func) {
-    nbEnveloppes = 0;
     compilingMethod = meth;
     compilingClass = meth->classDef;
     upcalls = compilingClass->classLoader->bootstrapLoader->upcalls;
@@ -463,10 +462,6 @@
   llvm::Instruction* invoke(llvm::Value *F, const char* Name,
                             llvm::BasicBlock *InsertAtEnd);
   
-  /// nbEnveloppes - Number of enveloppes (ie invokeinterface) in this
-  /// method.
-  uint32 nbEnveloppes;
-
 //===--------------------- Yield point support  ---------------------------===//
 
   void checkYieldPoint();

Modified: vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp?rev=91457&r1=91456&r2=91457&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp Tue Dec 15 15:55:42 2009
@@ -112,13 +112,6 @@
   return ConstantExpr::getIntToPtr(CI, Ty);
 }
 
-Constant* JavaJITCompiler::getEnveloppe(Enveloppe* enveloppe) {
-  assert(enveloppe && "No enveloppe given");
-  ConstantInt* CI = ConstantInt::get(Type::getInt64Ty(getGlobalContext()),
-                                     uint64(enveloppe));
-  return ConstantExpr::getIntToPtr(CI, JnjvmModule::EnveloppeType);
-}
-
 Constant* JavaJITCompiler::getJavaClass(CommonClass* cl) {
   JavaObject* obj = cl->getClassDelegatee(JavaThread::get()->getJVM());
   assert(obj && "Delegatee not created");

Modified: vmkit/trunk/lib/JnJVM/Compiler/JavaJITOpcodes.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JavaJITOpcodes.cpp?rev=91457&r1=91456&r2=91457&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaJITOpcodes.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaJITOpcodes.cpp Tue Dec 15 15:55:42 2009
@@ -2561,7 +2561,6 @@
         break;
       
       case INVOKEINTERFACE :
-        ++nbEnveloppes;
         i += 4;
         break;
 

Modified: vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp?rev=91457&r1=91456&r2=91457&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp Tue Dec 15 15:55:42 2009
@@ -42,8 +42,6 @@
 const llvm::Type* JnjvmModule::JavaArrayDoubleType = 0;
 const llvm::Type* JnjvmModule::JavaArrayLongType = 0;
 const llvm::Type* JnjvmModule::JavaArrayObjectType = 0;
-const llvm::Type* JnjvmModule::CacheNodeType = 0;
-const llvm::Type* JnjvmModule::EnveloppeType = 0;
 const llvm::Type* JnjvmModule::ConstantPoolType = 0;
 const llvm::Type* JnjvmModule::UTF8Type = 0;
 const llvm::Type* JnjvmModule::JavaFieldType = 0;
@@ -148,12 +146,6 @@
   JavaArrayObjectType =
     PointerType::getUnqual(module->getTypeByName("ArrayObject"));
 
-  CacheNodeType =
-    PointerType::getUnqual(module->getTypeByName("CacheNode"));
-  
-  EnveloppeType =
-    PointerType::getUnqual(module->getTypeByName("Enveloppe"));
-  
   JavaFieldType =
     PointerType::getUnqual(module->getTypeByName("JavaField"));
   JavaMethodType =
@@ -254,8 +246,6 @@
   module->addTypeName("ArrayFloat", JavaArrayFloatType->getContainedType(0));
   module->addTypeName("ArrayDouble", JavaArrayDoubleType->getContainedType(0));
   module->addTypeName("ArrayObject", JavaArrayObjectType->getContainedType(0));
-  module->addTypeName("CacheNode", CacheNodeType->getContainedType(0)); 
-  module->addTypeName("Enveloppe", EnveloppeType->getContainedType(0));
    
   InterfaceLookupFunction = module->getFunction("jnjvmInterfaceLookup");
   MultiCallNewFunction = module->getFunction("jnjvmMultiCallNew");
@@ -325,8 +315,6 @@
   GetFinalObjectFieldFunction = module->getFunction("getFinalObjectField");
 
 #ifdef ISOLATE_SHARING
-  EnveloppeLookupFunction = module->getFunction("jnjvmEnveloppeLookup");
-  GetCtpCacheNodeFunction = module->getFunction("getCtpCacheNode");
   GetCtpClassFunction = module->getFunction("getCtpClass");
   GetJnjvmExceptionClassFunction = 
     module->getFunction("getJnjvmExceptionClass");

Modified: vmkit/trunk/lib/JnJVM/Compiler/LowerConstantCalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/LowerConstantCalls.cpp?rev=91457&r1=91456&r2=91457&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/LowerConstantCalls.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/LowerConstantCalls.cpp Tue Dec 15 15:55:42 2009
@@ -755,15 +755,6 @@
           Value* VT = new LoadInst(VTPtr, "", CI);
           CI->replaceAllUsesWith(VT);
           CI->eraseFromParent();
-        } else if (V == module->GetCtpCacheNodeFunction) {
-          Changed = true;
-          Value* val = Call.getArgument(0); 
-          Value* indexes[2] = { module->constantZero, module->constantFour };
-          Value* VTPtr = GetElementPtrInst::Create(val, indexes,
-                                                   indexes + 2, "", CI);
-          Value* VT = new LoadInst(VTPtr, "", CI);
-          CI->replaceAllUsesWith(VT);
-          CI->eraseFromParent();
         } else if (V == module->GetJnjvmArrayClassFunction) {
           Changed = true;
           Value* val = Call.getArgument(0); 

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=91457&r1=91456&r2=91457&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-default.ll (original)
+++ vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-default.ll Tue Dec 15 15:55:42 2009
@@ -21,13 +21,6 @@
 %ArrayUInt32 = type { %JavaObject, i8*, [0 x i32] }
 %ArrayUInt8 = type { %JavaObject, i8*, [0 x i8] }
 
-;;; The CacheNode type. The first field is the last called method.
-%CacheNode = type { i8*, %VT*, %CacheNode*, %Enveloppe* }
-
-;;; The Enveloppe type, which contains the first cache and all the info
-;;; to lookup in the constant pool.
-%Enveloppe = type { %CacheNode*, %UTF8*, %UTF8*, i32, %JavaClass*, %CacheNode }
-
 ;;; The task class mirror.
 ;;; Field 1: The class state
 ;;; Field 2: The initialization state
@@ -45,7 +38,7 @@
 %JavaField = type { i8*, i16, %UTF8*, %UTF8*, %Attribut*, i16, %JavaClass*, i32,
                     i16, i8* }
 
-%JavaMethod = type { i8*, i16, %Attribut*, i16, %Enveloppe*, i16, %JavaClass*,
+%JavaMethod = type { i8*, i16, %Attribut*, i16, %JavaClass*,
                      %UTF8*, %UTF8*, i8, i8*, i32, i8* }
 
 %JavaClassPrimitive = type { %JavaCommonClass, i32 }

Removed: vmkit/trunk/lib/JnJVM/VMCore/JavaCache.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaCache.h?rev=91456&view=auto

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaCache.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaCache.h (removed)
@@ -1,120 +0,0 @@
-//===------- JavaCache.h - Inline cache for virtual calls -----------------===//
-//
-//                              JnJVM
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// Caches in JnJVM are used when invoking interface methods in the JVM
-// bytecode. A cache is a linked-list of {class, method pointer} pairs that
-// were already encountered during the execution of the program. Its efficiency
-// is based on the hypothesis that for one invokeinterface location, the "this"
-// arguments will share most of the times the same class.
-//
-// At a given time, the first entry in the linked list is the last class of the
-// "this" parameter.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef JNJVM_JAVA_CACHE_H
-#define JNJVM_JAVA_CACHE_H
-
-#include "mvm/Allocator.h"
-#include "mvm/Object.h"
-#include "mvm/Threads/Locks.h"
-
-#include "types.h"
-
-#include "JnjvmConfig.h"
-#include "UTF8.h"
-
-namespace jnjvm {
-
-class Enveloppe;
-class JavaVirtualTable;
-
-/// CacheNode - A {class, method pointer} pair.
-class CacheNode : public mvm::PermanentObject {
-public:
-
-  /// methPtr - The method pointer of this cache.
-  void* methPtr;
-
-  /// lastCible - The VT corresponding to this cache.
-  JavaVirtualTable* lastCible;
-
-  /// next - The next cache.
-  CacheNode* next;
-  
-  /// enveloppe - The container to which this class belongs to.
-  Enveloppe* enveloppe;
-
-  /// CacheNode - Creates a CacheNode with empty values.
-  CacheNode(Enveloppe* E) {
-    lastCible = 0;
-    methPtr = 0;
-    next = 0;
-    enveloppe = E;
-  }
-};
-
-/// Enveloppe - A reference to the linked list of CacheNode.
-class Enveloppe : public mvm::PermanentObject {
-public:
-  
-  /// firstCache - The first entry in the linked list, hence the last
-  /// class occurence for a given invokeinterface call.
-  ///
-  CacheNode *firstCache;
-  
-  /// methodName - The name of the method to be called.
-  ///
-  const UTF8* methodName;
-
-  /// methodSign - The signature of the method to be called.
-  ///
-  const UTF8* methodSign;
-
-  /// cacheLock - The linked list may be modified by concurrent thread. This
-  /// lock ensures that the list stays consistent.
-  ///
-  mvm::SpinLock cacheLock;
-
-  /// classDef - The class that is defining the enveloppe.
-  ///
-  Class* classDef;
-  
-  /// bootCache - The first cache allocated for the enveloppe.
-  ///
-  CacheNode bootCache;
-
-  /// Enveloppe - Default constructor. Does nothing.
-  ///
-  Enveloppe() : bootCache(this) {}
-
-  /// Enveloppe - Allocates the linked list with the given name and signature
-  /// so as the resolution process knows which interface method the
-  /// invokeinterface bytecode refers to.
-  ///
-  Enveloppe(Class* C, const UTF8* name, const UTF8* sign) :
-    bootCache(this) {
-    
-    initialise(C, name, sign);
-  }
-
-  /// initialise - Initialises the enveloppe, and allocates the first cache.
-  ///
-  void initialise(Class* C, const UTF8* name, const UTF8* sign) {
-    classDef = C;
-    firstCache = &bootCache;
-    methodName = name;
-    methodSign = sign;
-  }
-
-};
-
-} // end namespace jnjvm
-
-#endif

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp?rev=91457&r1=91456&r2=91457&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Tue Dec 15 15:55:42 2009
@@ -14,7 +14,6 @@
 
 #include "ClasspathReflect.h"
 #include "JavaArray.h"
-#include "JavaCache.h"
 #include "JavaClass.h"
 #include "JavaCompiler.h"
 #include "JavaConstantPool.h"
@@ -145,11 +144,6 @@
     classDef->classLoader->allocator.Deallocate(cur);
   }
   
-  for (uint32 i = 0; i < nbEnveloppes; ++i) {
-    Enveloppe* cur = &(enveloppes[i]);
-    cur->~Enveloppe();
-    classDef->classLoader->allocator.Deallocate(cur);
-  }
 }
 
 UserClassPrimitive* CommonClass::toPrimitive(Jnjvm* vm) const {
@@ -645,7 +639,6 @@
   canBeInlined = false;
   offset = 0;
   JInfo = 0;
-  enveloppes = 0;
 }
 
 void JavaField::initialise(Class* cl, const UTF8* N, const UTF8* T, uint16 A) {

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h?rev=91457&r1=91456&r2=91457&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Tue Dec 15 15:55:42 2009
@@ -32,7 +32,6 @@
 class ArrayObject;
 class ArrayUInt8;
 class ArrayUInt16;
-class Enveloppe;
 class Class;
 class ClassArray;
 class JavaArray;
@@ -1033,15 +1032,6 @@
   ///
   uint16 nbAttributs;
 
-  /// enveloppes - List of caches in this method. For all invokeinterface
-  /// bytecode there is a corresponding cache.
-  ///
-  Enveloppe* enveloppes;
-
-  /// nbEnveloppes - The number of enveloppes.
-  ///
-  uint16 nbEnveloppes;
-  
   /// classDef - The Java class where the method is defined.
   ///
   Class* classDef;

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.h?rev=91457&r1=91456&r2=91457&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.h Tue Dec 15 15:55:42 2009
@@ -11,9 +11,10 @@
 #define JNJVM_JAVA_CONSTANT_POOL_H
 
 #include "mvm/Allocator.h"
-
 #include "types.h"
 
+#include "UTF8.h"
+
 namespace jnjvm {
 
 class Class;
@@ -25,7 +26,6 @@
 class Signdef;
 class Typedef;
 
-
 /// JavaConstantPool - This class represents a Java constant pool, a place where
 /// a Java class makes external references such as classes and methods and
 /// stores constants such as integers or UTF8s.

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp?rev=91457&r1=91456&r2=91457&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp Tue Dec 15 15:55:42 2009
@@ -11,7 +11,6 @@
 
 #include "ClasspathReflect.h"
 #include "JavaArray.h"
-#include "JavaCache.h"
 #include "JavaClass.h"
 #include "JavaConstantPool.h"
 #include "JavaString.h"
@@ -25,91 +24,6 @@
 
 using namespace jnjvm;
 
-#if 0
-// Throws if the method is not found.
-extern "C" void* jnjvmInterfaceLookup(CacheNode* cache, JavaObject *obj) {
-
-  llvm_gcroot(obj, 0);
-
-  void* res = 0;
-
-  BEGIN_NATIVE_EXCEPTION(1)
-
-  
-  Enveloppe* enveloppe = cache->enveloppe;
-  JavaVirtualTable* ovt = (JavaVirtualTable*)obj->getVirtualTable();
-  
-#ifndef SERVICE
-  assert((obj->getClass()->isClass() && 
-          obj->getClass()->asClass()->isInitializing()) &&
-         "Class not ready in a virtual lookup.");
-#endif
-
-  enveloppe->cacheLock.acquire();
-  CacheNode* rcache = 0;
-  CacheNode* tmp = enveloppe->firstCache;
-  CacheNode* last = tmp;
-
-  while (tmp) {
-    if (ovt == tmp->lastCible) {
-      rcache = tmp;
-      break;
-    } else {
-      last = tmp;
-      tmp = tmp->next;
-    }
-  }
-
-  if (!rcache) {
-    UserCommonClass* ocl = ovt->cl;
-    UserClass* methodCl = 0;
-    UserClass* lookup = ocl->isArray() ? ocl->super : ocl->asClass();
-    JavaMethod* dmeth = lookup->lookupMethodDontThrow(enveloppe->methodName,
-                                                      enveloppe->methodSign,
-                                                      false, true, &methodCl);
-
-    if (!dmeth) {
-      enveloppe->cacheLock.release();
-      JavaThread::get()->getJVM()->noSuchMethodError(lookup,
-                                                     enveloppe->methodName);
-    }
-
-#if !defined(ISOLATE_SHARING) && !defined(SERVICE)
-    assert(dmeth->classDef->isInitializing() &&
-           "Class not ready in a virtual lookup.");
-#endif
-
-    // Are we the first cache?
-    if (cache == &(enveloppe->bootCache) && cache->lastCible == 0) {
-      rcache = cache;
-    } else {
-      mvm::BumpPtrAllocator& alloc = 
-        enveloppe->classDef->classLoader->allocator;
-      rcache = new(alloc, "CacheNode") CacheNode(enveloppe);
-    }
-    
-    rcache->methPtr = dmeth->compiledPtr();
-    rcache->lastCible = ovt;
-    
-  }
-
-  if (enveloppe->firstCache != rcache) {
-    CacheNode *f = enveloppe->firstCache;
-    enveloppe->firstCache = rcache;
-    last->next = rcache->next;
-    rcache->next = f;
-  }
-  
-  enveloppe->cacheLock.release();
-  
-  res = rcache->methPtr;
-  
-  END_NATIVE_EXCEPTION
-
-  return res; 
-}
-#endif
-
 extern "C" void* jnjvmInterfaceLookup(UserClass* caller, uint32 index) {
 
   void* res = 0;
@@ -730,14 +644,6 @@
 
 
 #ifdef ISOLATE_SHARING
-extern "C" void* jnjvmEnveloppeLookup(UserClass* cl, uint32 index) {
-  UserConstantPool* ctpInfo = cl->getConstantPool();
-  mvm::Allocator* allocator = cl->classLoader->allocator;
-  Enveloppe* enveloppe = new(allocator) Enveloppe(ctpInfo, index);
-  ctpInfo->ctpRes[index] = enveloppe;
-  return (void*)enveloppe;
-}
-
 extern "C" void* jnjvmStaticCtpLookup(UserClass* cl, uint32 index) {
   UserConstantPool* ctpInfo = cl->getConstantPool();
   JavaConstantPool* shared = ctpInfo->getSharedPool();

Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h?rev=91457&r1=91456&r2=91457&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h Tue Dec 15 15:55:42 2009
@@ -16,13 +16,13 @@
 
 #include "types.h"
 
-#include "UTF8.h"
 
 #include "mvm/Allocator.h"
 #include "mvm/Object.h"
 
 #include "JavaObject.h"
 #include "JnjvmConfig.h"
+#include "UTF8.h"
 
 namespace jnjvm {
 

Modified: vmkit/trunk/lib/JnJVM/VMCore/LinkJavaRuntime.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/LinkJavaRuntime.h?rev=91457&r1=91456&r2=91457&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/LinkJavaRuntime.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/LinkJavaRuntime.h Tue Dec 15 15:55:42 2009
@@ -13,7 +13,6 @@
 
 
 namespace jnjvm {
-  class CacheNode;
   class JavaObject;
   class UserClass;
   class UserClassArray;
@@ -26,7 +25,7 @@
 
 using namespace jnjvm;
 
-extern "C" void* jnjvmInterfaceLookup(CacheNode* cache, JavaObject *obj);
+extern "C" void* jnjvmInterfaceLookup(UserClass* caller, uint32 index);
 extern "C" void* jnjvmVirtualFieldLookup(UserClass* caller, uint32 index);
 extern "C" void* jnjvmStaticFieldLookup(UserClass* caller, uint32 index);
 extern "C" void* jnjvmVirtualTableLookup(UserClass* caller, uint32 index, ...);
@@ -71,7 +70,6 @@
 
 
 #ifdef ISOLATE_SHARING
-extern "C" void* jnjvmEnveloppeLookup(UserClass* cl, uint32 index);
 extern "C" void* jnjvmStaticCtpLookup(UserClass* cl, uint32 index);
 extern "C" UserConstantPool* jnjvmSpecialCtpLookup(UserConstantPool* ctpInfo,
                                                    uint32 index,
@@ -123,7 +121,6 @@
 #endif
 
 #ifdef ISOLATE_SHARING
-      (void) jnjvmEnveloppeLookup(0, 0);
       (void) jnjvmStaticCtpLookup(0, 0);
       (void) jnjvmSpecialCtpLookup(0, 0, 0);
 #endif





More information about the vmkit-commits mailing list