[llvm-commits] [vmkit] r51481 - in /vmkit/trunk/lib/JnJVM: Classpath/ClasspathConstructor.cpp Classpath/ClasspathMethod.cpp Classpath/ClasspathVMField.cpp VMCore/JavaClass.cpp VMCore/JavaClass.h VMCore/JavaJIT.cpp VMCore/JavaMetaJIT.cpp VMCore/JavaTypes.cpp VMCore/JavaTypes.h VMCore/JnjvmModule.cpp VMCore/NativeUtil.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Fri May 23 08:39:42 PDT 2008


Author: geoffray
Date: Fri May 23 10:39:41 2008
New Revision: 51481

URL: http://llvm.org/viewvc/llvm-project?rev=51481&view=rev
Log:
Lazily create method and field signatures.
Inline some functions.


Modified:
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMField.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
    vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaMetaJIT.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h
    vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
    vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp

Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp?rev=51481&r1=51480&r2=51481&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp Fri May 23 10:39:41 2008
@@ -56,7 +56,7 @@
   JavaMethod* meth = (JavaMethod*)_meth;
   ArrayObject* args = (ArrayObject*)_args;
   sint32 nbArgs = args ? args->size : 0;
-  sint32 size = meth->signature->args.size();
+  sint32 size = meth->getSignature()->args.size();
   Jnjvm* vm = JavaThread::get()->isolate;
 
   void** buf = (void**)alloca(size * sizeof(uint64));
@@ -70,8 +70,8 @@
 
       JavaObject* res = cl->doNew(vm);
     
-      for (std::vector<Typedef*>::iterator i = meth->signature->args.begin(),
-           e = meth->signature->args.end(); i != e; ++i, ++index) {
+      for (std::vector<Typedef*>::iterator i = meth->getSignature()->args.begin(),
+           e = meth->getSignature()->args.end(); i != e; ++i, ++index) {
         NativeUtil::decapsulePrimitive(vm, buf, args->at(index), *i);
       }
       

Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp?rev=51481&r1=51480&r2=51481&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp Fri May 23 10:39:41 2008
@@ -41,7 +41,7 @@
  jobject Meth) {
   JavaMethod* meth = (JavaMethod*)Classpath::methodSlot->getVirtualInt32Field((JavaObject*)Meth);
   JavaObject* loader = meth->classDef->classLoader;
-  return (jclass)NativeUtil::getClassType(loader, meth->signature->ret);
+  return (jclass)NativeUtil::getClassType(loader, meth->getSignature()->ret);
 }
 
 
@@ -65,7 +65,7 @@
   JavaMethod* meth = (JavaMethod*)_meth;
   ArrayObject* args = (ArrayObject*)_args;
   sint32 nbArgs = args ? args->size : 0;
-  sint32 size = meth->signature->args.size();
+  sint32 size = meth->getSignature()->args.size();
   Jnjvm* vm = JavaThread::get()->isolate;
   JavaObject* obj = (JavaObject*)_obj;
 
@@ -87,8 +87,8 @@
     }
 
     
-    for (std::vector<Typedef*>::iterator i = meth->signature->args.begin(),
-         e = meth->signature->args.end(); i != e; ++i, ++index) {
+    for (std::vector<Typedef*>::iterator i = meth->getSignature()->args.begin(),
+         e = meth->getSignature()->args.end(); i != e; ++i, ++index) {
       NativeUtil::decapsulePrimitive(vm, buf, args->at(index), *i);
     }
     
@@ -120,7 +120,7 @@
     } \
     
     JavaObject* res = 0;
-    const AssessorDesc* retType = meth->signature->ret->funcs;
+    const AssessorDesc* retType = meth->getSignature()->ret->funcs;
     if (retType == AssessorDesc::dVoid) {
       res = 0;
       uint32 val = 0;

Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMField.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMField.cpp?rev=51481&r1=51480&r2=51481&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMField.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMField.cpp Fri May 23 10:39:41 2008
@@ -35,7 +35,7 @@
 jobject obj) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)obj);
   JavaObject* loader = field->classDef->classLoader;
-  CommonClass* cl = field->signature->assocClass(loader);
+  CommonClass* cl = field->getSignature()->assocClass(loader);
   return (jclass)cl->getClassDelegatee();
 }
 
@@ -45,7 +45,7 @@
 #endif
 jobject Field, jobject obj) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
-  const AssessorDesc* ass = field->signature->funcs;
+  const AssessorDesc* ass = field->getSignature()->funcs;
   
   if (isStatic(field->access)) 
     JavaThread::get()->isolate->initialiseClass(field->classDef);
@@ -80,7 +80,7 @@
 #endif
 jobject Field, jobject obj) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
-  const AssessorDesc* ass = field->signature->funcs;
+  const AssessorDesc* ass = field->getSignature()->funcs;
   
   if (isStatic(field->access)) 
     JavaThread::get()->isolate->initialiseClass(field->classDef);
@@ -118,7 +118,7 @@
 #endif
 jobject Field, jobject obj) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
-  const AssessorDesc* ass = field->signature->funcs;
+  const AssessorDesc* ass = field->getSignature()->funcs;
   
   if (isStatic(field->access)) 
     JavaThread::get()->isolate->initialiseClass(field->classDef);
@@ -142,7 +142,7 @@
 #endif
 jobject Field, jobject obj) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
-  const AssessorDesc* ass = field->signature->funcs;
+  const AssessorDesc* ass = field->getSignature()->funcs;
   
   if (isStatic(field->access)) 
     JavaThread::get()->isolate->initialiseClass(field->classDef);
@@ -184,7 +184,7 @@
 #endif
 jobject Field, jobject obj) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
-  const AssessorDesc* ass = field->signature->funcs;
+  const AssessorDesc* ass = field->getSignature()->funcs;
   
   if (isStatic(field->access)) 
     JavaThread::get()->isolate->initialiseClass(field->classDef);
@@ -207,7 +207,7 @@
 #endif
 jobject Field, jobject obj) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
-  const AssessorDesc* ass = field->signature->funcs;
+  const AssessorDesc* ass = field->getSignature()->funcs;
   
   if (isStatic(field->access)) 
     JavaThread::get()->isolate->initialiseClass(field->classDef);
@@ -231,7 +231,7 @@
 #endif
 jobject Field, jobject obj) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
-  const AssessorDesc* ass = field->signature->funcs;
+  const AssessorDesc* ass = field->getSignature()->funcs;
   
   if (isStatic(field->access)) 
     JavaThread::get()->isolate->initialiseClass(field->classDef);
@@ -258,7 +258,7 @@
 #endif
 jobject Field, jobject obj) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
-  const AssessorDesc* ass = field->signature->funcs;
+  const AssessorDesc* ass = field->getSignature()->funcs;
   
   if (isStatic(field->access)) 
     JavaThread::get()->isolate->initialiseClass(field->classDef);
@@ -304,7 +304,7 @@
 #endif
 jobject Field, jobject _obj) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
-  Typedef* type = field->signature;
+  Typedef* type = field->getSignature();
   const AssessorDesc* ass = type->funcs;
   JavaObject* obj = (JavaObject*)_obj;
   Jnjvm* vm = JavaThread::get()->isolate;
@@ -398,9 +398,9 @@
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
   void** buf = (void**)alloca(sizeof(uint64));
   void* _buf = (void*)buf;
-  NativeUtil::decapsulePrimitive(JavaThread::get()->isolate, buf, (JavaObject*)val, field->signature);
+  NativeUtil::decapsulePrimitive(JavaThread::get()->isolate, buf, (JavaObject*)val, field->getSignature());
 
-  const AssessorDesc* ass = field->signature->funcs;
+  const AssessorDesc* ass = field->getSignature()->funcs;
   
   if (isStatic(field->access)) 
     JavaThread::get()->isolate->initialiseClass(field->classDef);
@@ -454,7 +454,7 @@
 #endif
 jobject Field, jobject obj, jboolean val) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
-  const AssessorDesc* ass = field->signature->funcs;
+  const AssessorDesc* ass = field->getSignature()->funcs;
   
   if (isStatic(field->access)) 
     JavaThread::get()->isolate->initialiseClass(field->classDef);
@@ -476,7 +476,7 @@
 #endif
 jobject Field, jobject _obj, jbyte val) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
-  const AssessorDesc* ass = field->signature->funcs;
+  const AssessorDesc* ass = field->getSignature()->funcs;
   JavaObject* obj = (JavaObject*)_obj;
   
   if (isStatic(field->access)) 
@@ -518,7 +518,7 @@
 #endif
 jobject Field, jobject obj, jchar val) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
-  const AssessorDesc* ass = field->signature->funcs;
+  const AssessorDesc* ass = field->getSignature()->funcs;
   
   if (isStatic(field->access)) 
     JavaThread::get()->isolate->initialiseClass(field->classDef);
@@ -555,7 +555,7 @@
 #endif
 jobject Field, jobject obj, jshort val) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
-  const AssessorDesc* ass = field->signature->funcs;
+  const AssessorDesc* ass = field->getSignature()->funcs;
   
   if (isStatic(field->access)) 
     JavaThread::get()->isolate->initialiseClass(field->classDef);
@@ -592,7 +592,7 @@
 #endif
 jobject Field, jobject obj, jint val) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
-  const AssessorDesc* ass = field->signature->funcs;
+  const AssessorDesc* ass = field->getSignature()->funcs;
   
   if (isStatic(field->access)) 
     JavaThread::get()->isolate->initialiseClass(field->classDef);
@@ -625,7 +625,7 @@
 #endif
 jobject Field, jobject obj, jlong val) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
-  const AssessorDesc* ass = field->signature->funcs;
+  const AssessorDesc* ass = field->getSignature()->funcs;
   
   if (isStatic(field->access)) 
     JavaThread::get()->isolate->initialiseClass(field->classDef);
@@ -654,7 +654,7 @@
 #endif
 jobject Field, jobject obj, jfloat val) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
-  const AssessorDesc* ass = field->signature->funcs;
+  const AssessorDesc* ass = field->getSignature()->funcs;
   
   if (isStatic(field->access)) 
     JavaThread::get()->isolate->initialiseClass(field->classDef);
@@ -679,7 +679,7 @@
 #endif
 jobject Field, jobject obj, jdouble val) {
   JavaField* field = (JavaField*)Classpath::fieldSlot->getVirtualInt32Field((JavaObject*)Field);
-  const AssessorDesc* ass = field->signature->funcs;
+  const AssessorDesc* ass = field->getSignature()->funcs;
   
   if (isStatic(field->access)) 
     JavaThread::get()->isolate->initialiseClass(field->classDef);

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Fri May 23 10:39:41 2008
@@ -279,7 +279,7 @@
 const char* JavaMethod::printString() const {
   mvm::PrintBuffer *buf= mvm::PrintBuffer::alloc();
   buf->write("JavaMethod<");
-  signature->printWithSign(classDef, name, buf);
+  ((JavaMethod*)this)->getSignature()->printWithSign(classDef, name, buf);
   buf->write(">");
   return buf->contents()->cString();
 }
@@ -291,7 +291,7 @@
     buf->write("static ");
   else
     buf->write("virtual ");
-  signature->tPrintBuf(buf);
+  ((JavaMethod*)this)->getSignature()->tPrintBuf(buf);
   buf->write(" ");
   classDef->print(buf);
   buf->write("::");
@@ -479,7 +479,7 @@
 }
 
 void JavaField::initField(JavaObject* obj) {
-  const AssessorDesc* funcs = signature->funcs;
+  const AssessorDesc* funcs = getSignature()->funcs;
   Attribut* attribut = lookupAttribut(Attribut::constantAttribut);
 
   if (!attribut) {
@@ -579,7 +579,7 @@
     method->name = name;
     method->type = type;
     method->classDef = (Class*)this;
-    method->signature = (Signdef*)isolate->constructType(type);
+    method->_signature = 0;
     method->code = 0;
     method->access = access;
     method->canBeInlined = false;
@@ -602,7 +602,7 @@
     field->name = name;
     field->type = type;
     field->classDef = (Class*)this;
-    field->signature = isolate->constructType(type);
+    field->_signature = 0;
     field->ptrOffset = 0;
     field->access = access;
     map.insert(std::make_pair(CC, field));

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Fri May 23 10:39:41 2008
@@ -22,6 +22,7 @@
 #include "mvm/Threads/Locks.h"
 
 #include "JavaAccess.h"
+#include "Jnjvm.h"
 
 namespace jnjvm {
 
@@ -156,12 +157,10 @@
 #endif
   
 
-  typedef std::map<const FieldCmp, JavaField*, std::less<FieldCmp>,
-                gc_allocator<std::pair<const FieldCmp, JavaField*> > >::iterator
+  typedef std::map<const FieldCmp, JavaField*, std::less<FieldCmp> >::iterator
     field_iterator;
   
-  typedef std::map<const FieldCmp, JavaField*, std::less<FieldCmp>,
-                gc_allocator<std::pair<const FieldCmp, JavaField*> > > 
+  typedef std::map<const FieldCmp, JavaField*, std::less<FieldCmp> > 
     field_map;
   
   /// virtualFields - List of all the virtual fields defined in this class.
@@ -172,12 +171,10 @@
   ///
   field_map staticFields;
   
-  typedef std::map<const FieldCmp, JavaMethod*, std::less<FieldCmp>,
-                gc_allocator<std::pair<const FieldCmp, JavaMethod*> > >::iterator
+  typedef std::map<const FieldCmp, JavaMethod*, std::less<FieldCmp> >::iterator
     method_iterator;
   
-  typedef std::map<const FieldCmp, JavaMethod*, std::less<FieldCmp>,
-                gc_allocator<std::pair<const FieldCmp, JavaMethod*> > > 
+  typedef std::map<const FieldCmp, JavaMethod*, std::less<FieldCmp> > 
     method_map;
   
   /// virtualMethods - List of all the virtual methods defined by this class.
@@ -357,12 +354,13 @@
 
 
 class JavaMethod {
+  friend class CommonClass;
 private:
   void* _compiledPtr();
+  Signdef* _signature;
 public:
   ~JavaMethod();
   unsigned int access;
-  Signdef* signature;
   std::vector<Attribut*> attributs;
   std::vector<Enveloppe*> caches;
   Class* classDef;
@@ -381,6 +379,12 @@
     if (!code) return _compiledPtr();
     return code;
   }
+  
+  Signdef* getSignature() {
+    if(!_signature)
+      _signature = (Signdef*) classDef->isolate->constructType(type);
+    return _signature;
+  }
 
   uint32 invokeIntSpecialAP(Jnjvm* vm, JavaObject* obj, va_list ap);
   float invokeFloatSpecialAP(Jnjvm* vm, JavaObject* obj, va_list ap);
@@ -440,11 +444,13 @@
 };
 
 class JavaField  {
+  friend class CommonClass;
+private:
+  Typedef* _signature;
 public:
   ~JavaField();
   unsigned int access;
   const UTF8* name;
-  Typedef* signature;
   const UTF8* type;
   std::vector<Attribut*> attributs;
   Class* classDef;
@@ -452,6 +458,12 @@
   /// num - The index of the field in the field list.
   ///
   uint32 num;
+  
+  Typedef* getSignature() {
+    if(!_signature)
+      _signature = classDef->isolate->constructType(type);
+    return _signature;
+  }
 
   void initField(JavaObject* obj);
   Attribut* lookupAttribut(const UTF8* key);

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp Fri May 23 10:39:41 2008
@@ -69,7 +69,7 @@
   LLVMSignatureInfo* LSI = module->getSignatureInfo(signature);
   const llvm::FunctionType* virtualType = LSI->getVirtualType();
   FunctionType::param_iterator it  = virtualType->param_end();
-  makeArgs(it, index, args, signature->nbIn + 1);
+  makeArgs(it, index, args, signature->args.size() + 1);
   
   JITVerifyNull(args[0]); 
 
@@ -206,8 +206,8 @@
                       currentBlock);
   llvm::BranchInst::Create(executeBlock, endBlock, test, currentBlock);
 
-  if (compilingMethod->signature->ret->funcs != AssessorDesc::dVoid) {
-    uint8 id = compilingMethod->signature->ret->funcs->numId;
+  if (compilingMethod->getSignature()->ret->funcs != AssessorDesc::dVoid) {
+    uint8 id = compilingMethod->getSignature()->ret->funcs->numId;
     LLVMAssessorInfo& LAI = LLVMAssessorInfo::AssessorInfo[id];
     Constant* C = LAI.llvmNullConstant;
     endNode->addIncoming(C, currentBlock);
@@ -243,7 +243,7 @@
   
   
   LLVMSignatureInfo* LSI = 
-    module->getSignatureInfo(compilingMethod->signature);
+    module->getSignatureInfo(compilingMethod->getSignature());
   const llvm::Type* valPtrType = LSI->getNativePtrType();
   Value* valPtr = 
     ConstantExpr::getIntToPtr(ConstantInt::get(Type::Int64Ty, (uint64)natPtr),
@@ -373,7 +373,7 @@
   uint32 max = args.size();
 #endif
   std::vector<Typedef*>::iterator type = 
-    compilingMethod->signature->args.begin();
+    compilingMethod->getSignature()->args.begin();
   std::vector<Value*>::iterator i = args.begin();
 
   if (isVirtual(compilingMethod->access)) {
@@ -539,7 +539,7 @@
 #endif
   Function::arg_iterator i = func->arg_begin(); 
   std::vector<Typedef*>::iterator type = 
-    compilingMethod->signature->args.begin();
+    compilingMethod->getSignature()->args.begin();
 
   if (isVirtual(compilingMethod->access)) {
     new StoreInst(i, objectLocals[0], false, currentBlock);
@@ -1362,7 +1362,7 @@
   
   std::vector<Value*> args; 
   FunctionType::param_iterator it  = virtualType->param_end();
-  makeArgs(it, index, args, signature->nbIn + 1);
+  makeArgs(it, index, args, signature->args.size() + 1);
   JITVerifyNull(args[0]); 
 
   if (cl == Jnjvm::mathName) {
@@ -1407,7 +1407,7 @@
   
   std::vector<Value*> args; // size = [signature->nbIn + 2]; 
   FunctionType::param_iterator it  = staticType->param_end();
-  makeArgs(it, index, args, signature->nbIn);
+  makeArgs(it, index, args, signature->args.size());
   ctpInfo->markAsStaticCall(index);
 
   if (cl == Jnjvm::mathName) {
@@ -1833,7 +1833,7 @@
   std::vector<Value*> args; // size = [signature->nbIn + 3];
 
   FunctionType::param_iterator it  = virtualType->param_end();
-  makeArgs(it, index, args, signature->nbIn + 1);
+  makeArgs(it, index, args, signature->args.size() + 1);
   
   const llvm::Type* retType = virtualType->getReturnType();
   BasicBlock* endBlock = createBasicBlock("end virtual invoke");

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaMetaJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaMetaJIT.cpp Fri May 23 10:39:41 2008
@@ -100,13 +100,12 @@
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true); \
   \
   verifyNull(obj); \
-  JavaMethod* meth = obj->classOf->lookupMethod(name, type, false, true); \
-  \
-  void** buf = (void**)alloca(meth->signature->args.size() * sizeof(uint64)); \
+  Signdef* sign = getSignature(); \
+  void** buf = (void**)alloca(sign->args.size() * sizeof(uint64)); \
   void* _buf = (void*)buf; \
-  readArgs(buf, signature, ap); \
-  void* func = meth->compiledPtr();\
-  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(vm, func, obj, _buf);\
+  readArgs(buf, sign, ap); \
+  void* func = (((void***)obj)[0])[offset];\
+  return ((FUNC_TYPE_VIRTUAL_BUF)sign->getVirtualCallBuf())(vm, func, obj, _buf);\
 }\
 \
 TYPE JavaMethod::invoke##TYPE_NAME##SpecialAP(Jnjvm* vm, JavaObject* obj, va_list ap) {\
@@ -114,22 +113,24 @@
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true);\
   \
   verifyNull(obj);\
-  void** buf = (void**)alloca(this->signature->args.size() * sizeof(uint64)); \
+  Signdef* sign = getSignature(); \
+  void** buf = (void**)alloca(sign->args.size() * sizeof(uint64)); \
   void* _buf = (void*)buf; \
-  readArgs(buf, signature, ap); \
+  readArgs(buf, sign, ap); \
   void* func = this->compiledPtr();\
-  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(vm, func, obj, _buf);\
+  return ((FUNC_TYPE_VIRTUAL_BUF)sign->getVirtualCallBuf())(vm, func, obj, _buf);\
 }\
 \
 TYPE JavaMethod::invoke##TYPE_NAME##StaticAP(Jnjvm* vm, va_list ap) {\
   if (!classDef->isReady())\
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true);\
   \
-  void** buf = (void**)alloca(this->signature->args.size() * sizeof(uint64)); \
+  Signdef* sign = getSignature(); \
+  void** buf = (void**)alloca(sign->args.size() * sizeof(uint64)); \
   void* _buf = (void*)buf; \
-  readArgs(buf, signature, ap); \
+  readArgs(buf, sign, ap); \
   void* func = this->compiledPtr();\
-  return ((FUNC_TYPE_STATIC_BUF)signature->staticCallBuf())(vm, func, _buf);\
+  return ((FUNC_TYPE_STATIC_BUF)sign->getStaticCallBuf())(vm, func, _buf);\
 }\
 \
 TYPE JavaMethod::invoke##TYPE_NAME##VirtualBuf(Jnjvm* vm, JavaObject* obj, void* buf) {\
@@ -139,8 +140,9 @@
   verifyNull(obj);\
   JavaMethod* meth = obj->classOf->lookupMethod(name, type, false, true);\
   \
+  Signdef* sign = getSignature(); \
   void* func = meth->compiledPtr();\
-  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(vm, func, obj, buf);\
+  return ((FUNC_TYPE_VIRTUAL_BUF)sign->getVirtualCallBuf())(vm, func, obj, buf);\
 }\
 \
 TYPE JavaMethod::invoke##TYPE_NAME##SpecialBuf(Jnjvm* vm, JavaObject* obj, void* buf) {\
@@ -149,7 +151,8 @@
   \
   verifyNull(obj);\
   void* func = this->compiledPtr();\
-  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(vm, func, obj, buf);\
+  Signdef* sign = getSignature(); \
+  return ((FUNC_TYPE_VIRTUAL_BUF)sign->getVirtualCallBuf())(vm, func, obj, buf);\
 }\
 \
 TYPE JavaMethod::invoke##TYPE_NAME##StaticBuf(Jnjvm* vm, void* buf) {\
@@ -157,7 +160,8 @@
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true);\
   \
   void* func = this->compiledPtr();\
-  return ((FUNC_TYPE_STATIC_BUF)signature->staticCallBuf())(vm, func, buf);\
+  Signdef* sign = getSignature(); \
+  return ((FUNC_TYPE_STATIC_BUF)sign->getStaticCallBuf())(vm, func, buf);\
 }\
 \
 TYPE JavaMethod::invoke##TYPE_NAME##Virtual(Jnjvm* vm, JavaObject* obj, ...) { \
@@ -193,10 +197,9 @@
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true); \
   \
   verifyNull(obj); \
-  JavaMethod* meth = obj->classOf->lookupMethod(name, type, false, true); \
-  \
-  void* func = (((void***)obj)[0])[meth->offset];\
-  return ((FUNC_TYPE_VIRTUAL_AP)signature->virtualCallAP())(vm, func, obj, ap);\
+  void* func = (((void***)obj)[0])[offset];\
+  Signdef* sign = getSignature(); \
+  return ((FUNC_TYPE_VIRTUAL_AP)sign->getVirtualCallAP())(vm, func, obj, ap);\
 }\
 \
 TYPE JavaMethod::invoke##TYPE_NAME##SpecialAP(Jnjvm* vm, JavaObject* obj, va_list ap) {\
@@ -205,7 +208,8 @@
   \
   verifyNull(obj);\
   void* func = this->compiledPtr();\
-  return ((FUNC_TYPE_VIRTUAL_AP)signature->virtualCallAP())(vm, func, obj, ap);\
+  Signdef* sign = getSignature(); \
+  return ((FUNC_TYPE_VIRTUAL_AP)sign->getVirtualCallAP())(vm, func, obj, ap);\
 }\
 \
 TYPE JavaMethod::invoke##TYPE_NAME##StaticAP(Jnjvm* vm, va_list ap) {\
@@ -213,7 +217,8 @@
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true);\
   \
   void* func = this->compiledPtr();\
-  return ((FUNC_TYPE_STATIC_AP)signature->staticCallAP())(vm, func, ap);\
+  Signdef* sign = getSignature(); \
+  return ((FUNC_TYPE_STATIC_AP)sign->getStaticCallAP())(vm, func, ap);\
 }\
 \
 TYPE JavaMethod::invoke##TYPE_NAME##VirtualBuf(Jnjvm* vm, JavaObject* obj, void* buf) {\
@@ -221,10 +226,9 @@
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true);\
   \
   verifyNull(obj);\
-  JavaMethod* meth = obj->classOf->lookupMethod(name, type, false, true);\
-  \
-  void* func = meth->compiledPtr();\
-  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(vm, func, obj, buf);\
+  void* func = (((void***)obj)[0])[offset];\
+  Signdef* sign = getSignature(); \
+  return ((FUNC_TYPE_VIRTUAL_BUF)sign->getVirtualCallBuf())(vm, func, obj, buf);\
 }\
 \
 TYPE JavaMethod::invoke##TYPE_NAME##SpecialBuf(Jnjvm* vm, JavaObject* obj, void* buf) {\
@@ -233,7 +237,8 @@
   \
   verifyNull(obj);\
   void* func = this->compiledPtr();\
-  return ((FUNC_TYPE_VIRTUAL_BUF)signature->virtualCallBuf())(vm, func, obj, buf);\
+  Signdef* sign = getSignature(); \
+  return ((FUNC_TYPE_VIRTUAL_BUF)sign->getVirtualCallBuf())(vm, func, obj, buf);\
 }\
 \
 TYPE JavaMethod::invoke##TYPE_NAME##StaticBuf(Jnjvm* vm, void* buf) {\
@@ -241,7 +246,8 @@
     classDef->isolate->loadName(classDef->name, classDef->classLoader, true, true, true);\
   \
   void* func = this->compiledPtr();\
-  return ((FUNC_TYPE_STATIC_BUF)signature->staticCallBuf())(vm, func, buf);\
+  Signdef* sign = getSignature(); \
+  return ((FUNC_TYPE_STATIC_BUF)sign->getStaticCallBuf())(vm, func, buf);\
 }\
 \
 TYPE JavaMethod::invoke##TYPE_NAME##Virtual(Jnjvm* vm,JavaObject* obj, ...) { \

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp Fri May 23 10:39:41 2008
@@ -471,10 +471,6 @@
   humanPrintArgs(&args, buf);
 }
 
-unsigned int Signdef::nbInWithThis(unsigned int flag) {
-  return args.size() + (isStatic(flag) ? 0 : 1);
-}
-
 Signdef* Signdef::signDup(const UTF8* name, Jnjvm *vm) {
   std::vector<Typedef*> buf;
   uint32 len = (uint32)name->size;
@@ -508,7 +504,6 @@
   res->keyName = name;
   res->pseudoAssocClassName = name;
   res->funcs = 0;
-  res->nbIn = buf.size();
   res->_virtualCallBuf = 0;
   res->_staticCallBuf = 0;
   res->_virtualCallAP = 0;

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h Fri May 23 10:39:41 2008
@@ -143,30 +143,69 @@
 };
 
 class Signdef : public Typedef {
-public:
-  static VirtualTable *VT;
-  std::vector<Typedef*> args;
-  Typedef* ret;
+private:
   mvm::Code* _staticCallBuf;
   mvm::Code* _virtualCallBuf;
   mvm::Code* _staticCallAP;
   mvm::Code* _virtualCallAP;
-  uint32 nbIn;
+  
+  void* staticCallBuf();
+  void* virtualCallBuf();
+  void* staticCallAP();
+  void* virtualCallAP();
+
+public:
+  static VirtualTable *VT;
+  std::vector<Typedef*> args;
+  Typedef* ret;
   
   virtual void print(mvm::PrintBuffer* buf) const;
   virtual void TRACER;
 
   void printWithSign(CommonClass* cl, const UTF8* name, mvm::PrintBuffer* buf);
-  unsigned int nbInWithThis(unsigned int flag);
   static Signdef* signDup(const UTF8* name, Jnjvm* vm);
   
-  void* staticCallBuf();
-  void* virtualCallBuf();
-  void* staticCallAP();
-  void* virtualCallAP();
+  
+  void* getStaticCallBuf() {
+    if(!_staticCallBuf) return staticCallBuf();
+    return _staticCallBuf;
+  }
+
+  void* getVirtualCallBuf() {
+    if(!_virtualCallBuf) return virtualCallBuf();
+    return _virtualCallBuf;
+  }
+  
+  void* getStaticCallAP() {
+    if (!_staticCallAP) return staticCallAP();
+    return _staticCallAP;
+  }
 
+  void* getVirtualCallAP() {
+    if (!_virtualCallAP) return virtualCallAP();
+    return _virtualCallAP;
+  }
+  
+  void setStaticCallBuf(mvm::Code* code) {
+    _staticCallBuf = code;
+  }
+
+  void setVirtualCallBuf(mvm::Code* code) {
+    _virtualCallBuf = code;
+  }
+  
+  void setStaticCallAP(mvm::Code* code) {
+    _staticCallAP = code;
+  }
+
+  void setVirtualCallAP(mvm::Code* code) {
+    _virtualCallAP = code;
+  }
+  
+  
 };
 
+
 } // end namespace jnjvm
 
 #endif

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp Fri May 23 10:39:41 2008
@@ -270,7 +270,7 @@
   
   for (CommonClass::field_iterator i = fields.begin(), e = fields.end();
        i!= e; ++i) {
-    if (i->second->signature->funcs->doTrace) {
+    if (i->second->getSignature()->funcs->doTrace) {
       LLVMFieldInfo* LFI = getFieldInfo(i->second);
       std::vector<Value*> args; //size = 2
       args.push_back(zero);
@@ -330,7 +330,7 @@
     
     
     for (uint32 index = 0; index < classDef->virtualFields.size(); ++index) {
-      uint8 id = array[index]->signature->funcs->numId;
+      uint8 id = array[index]->getSignature()->funcs->numId;
       LLVMAssessorInfo& LAI = LLVMAssessorInfo::AssessorInfo[id];
       fields.push_back(LAI.llvmType);
     }
@@ -374,7 +374,7 @@
 
     for (uint32 index = 0; index < classDef->staticFields.size(); ++index) {
       JavaField* field = array[index];
-      uint8 id = field->signature->funcs->numId;
+      uint8 id = field->getSignature()->funcs->numId;
       LLVMAssessorInfo& LAI = LLVMAssessorInfo::AssessorInfo[id];
       fields.push_back(LAI.llvmType);
     }
@@ -493,7 +493,7 @@
 
 const FunctionType* LLVMMethodInfo::getFunctionType() {
   if (!functionType) {
-    LLVMSignatureInfo* LSI = module->getSignatureInfo(methodDef->signature);
+    LLVMSignatureInfo* LSI = module->getSignatureInfo(methodDef->getSignature());
     assert(LSI);
     if (isStatic(methodDef->access)) {
       functionType = LSI->getStaticType();
@@ -763,8 +763,8 @@
     // Lock here because we are called by arbitrary code
     llvm::MutexGuard locked(mvm::jit::executionEngine->lock);
     virtualBufFunction = createFunctionCallBuf(true);
-    signature->_virtualCallBuf = (mvm::Code*)
-      mvm::jit::executionEngine->getPointerToGlobal(virtualBufFunction);
+    signature->setVirtualCallBuf((mvm::Code*)
+      mvm::jit::executionEngine->getPointerToGlobal(virtualBufFunction));
   }
   return virtualBufFunction;
 }
@@ -774,8 +774,8 @@
     // Lock here because we are called by arbitrary code
     llvm::MutexGuard locked(mvm::jit::executionEngine->lock);
     virtualAPFunction = createFunctionCallAP(true);
-    signature->_virtualCallAP = (mvm::Code*)
-      mvm::jit::executionEngine->getPointerToGlobal(virtualAPFunction);
+    signature->setVirtualCallAP((mvm::Code*)
+      mvm::jit::executionEngine->getPointerToGlobal(virtualAPFunction));
   }
   return virtualAPFunction;
 }
@@ -785,8 +785,8 @@
     // Lock here because we are called by arbitrary code
     llvm::MutexGuard locked(mvm::jit::executionEngine->lock);
     staticBufFunction = createFunctionCallBuf(false);
-    signature->_staticCallBuf = (mvm::Code*)
-      mvm::jit::executionEngine->getPointerToGlobal(staticBufFunction);
+    signature->setStaticCallBuf((mvm::Code*)
+      mvm::jit::executionEngine->getPointerToGlobal(staticBufFunction));
   }
   return staticBufFunction;
 }
@@ -796,8 +796,8 @@
     // Lock here because we are called by arbitrary code
     llvm::MutexGuard locked(mvm::jit::executionEngine->lock);
     staticAPFunction = createFunctionCallAP(false);
-    signature->_staticCallAP = (mvm::Code*)
-      mvm::jit::executionEngine->getPointerToGlobal(staticAPFunction);
+    signature->setStaticCallAP((mvm::Code*)
+      mvm::jit::executionEngine->getPointerToGlobal(staticAPFunction));
   }
   return staticAPFunction;
 }
@@ -1051,7 +1051,7 @@
 
 void JnjvmModule::InitField(JavaField* field, JavaObject* obj, uint64 val) {
   
-  const AssessorDesc* funcs = field->signature->funcs;
+  const AssessorDesc* funcs = field->getSignature()->funcs;
   if (funcs == AssessorDesc::dLong) {
     ((sint64*)((uint64)obj + field->ptrOffset))[0] = val;
   } else if (funcs == AssessorDesc::dInt) {

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp Fri May 23 10:39:41 2008
@@ -381,7 +381,7 @@
 }
 
 ArrayObject* NativeUtil::getParameterTypes(JavaObject* loader, JavaMethod* meth) {
-  std::vector<Typedef*>& args = meth->signature->args;
+  std::vector<Typedef*>& args = meth->getSignature()->args;
   ArrayObject* res = ArrayObject::acons(args.size(), Classpath::classArrayClass,
                                         JavaThread::get()->isolate);
 





More information about the llvm-commits mailing list