[vmkit-commits] [vmkit] r108057 - in /vmkit/trunk/lib/J3: Classpath/ClasspathConstructor.inc Classpath/ClasspathMethod.inc Classpath/ClasspathVMRuntime.inc Classpath/ClasspathVMStackWalker.inc Classpath/JavaUpcalls.cpp Compiler/JavaJITCompiler.cpp VMCore/JavaClass.cpp VMCore/JavaString.cpp VMCore/JavaString.h VMCore/Jnjvm.cpp VMCore/JnjvmClassLoader.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Sat Jul 10 13:53:56 PDT 2010


Author: geoffray
Date: Sat Jul 10 15:53:56 2010
New Revision: 108057

URL: http://llvm.org/viewvc/llvm-project?rev=108057&view=rev
Log:
Change allocation of temporary data that use new with the ThreadAllocator.


Modified:
    vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc
    vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc
    vmkit/trunk/lib/J3/Classpath/ClasspathVMRuntime.inc
    vmkit/trunk/lib/J3/Classpath/ClasspathVMStackWalker.inc
    vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp
    vmkit/trunk/lib/J3/Compiler/JavaJITCompiler.cpp
    vmkit/trunk/lib/J3/VMCore/JavaClass.cpp
    vmkit/trunk/lib/J3/VMCore/JavaString.cpp
    vmkit/trunk/lib/J3/VMCore/JavaString.h
    vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp
    vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc?rev=108057&r1=108056&r2=108057&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc Sat Jul 10 15:53:56 2010
@@ -95,9 +95,10 @@
 
   if (isAbstract(cl->access)) vm->instantiationException(cl);
 
+  mvm::ThreadAllocator allocator;
   // Allocate a buffer to store the arguments.
-  jvalue* buf = size ? new jvalue[size] : NULL;
-  if (size) memset(buf, 0, size * sizeof(jvalue));
+  jvalue* buf = size ? 
+      (jvalue*)allocator.Allocate(size * sizeof(jvalue)) : NULL;
 
   if (nbArgs == size) {
     UserCommonClass* _cl = UserCommonClass::resolvedImplClass(vm, Clazz, false);
@@ -123,7 +124,6 @@
         excp = th->getJavaException();
       } END_CATCH;
       if (excp) {
-        if (size) delete[] buf;
         if (JavaObject::getClass(excp)->isAssignableFrom(vm->upcalls->newException)) {
           th->clearException();
           // If it's an exception, we encapsule it in an
@@ -136,17 +136,14 @@
         return NULL;
       }
     } else {
-      if (size) delete[] buf;
       vm->illegalArgumentException("class is not a regular class");
       return NULL;
     }
   } else {
-    if (size) delete[] buf;
     vm->illegalArgumentException("wrong number of arguments");
     return NULL;
   }
  
-  if (size) delete[] buf;
   return res;
 }
 

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc?rev=108057&r1=108056&r2=108057&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc Sat Jul 10 15:53:56 2010
@@ -115,8 +115,9 @@
   Signdef* sign = meth->getSignature();
   sint32 size = sign->nbArguments;
 
-  jvalue* buf = size ? new jvalue[size] : 0;
-  if (size) memset(buf, 0, size * sizeof(jvalue));
+  mvm::ThreadAllocator allocator;
+  jvalue* buf = size ?
+      (jvalue*)allocator.Allocate(size * sizeof(jvalue)) : NULL;
   
   if (nbArgs == size) {
     UserCommonClass* _cl = UserCommonClass::resolvedImplClass(vm, Cl, false);

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMRuntime.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMRuntime.inc?rev=108057&r1=108056&r2=108057&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMRuntime.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMRuntime.inc Sat Jul 10 15:53:56 2010
@@ -118,14 +118,13 @@
   JnjvmClassLoader* loader = 
     JnjvmClassLoader::getJnjvmLoaderFromJavaObject(javaLoader, vm);
 
-  char* buf = JavaString::strToAsciiz(str);
+  mvm::ThreadAllocator allocator;
+  char* buf = JavaString::strToAsciiz(str, &allocator);
   
   res = loader->loadLib(buf);
  
   if (res) callOnLoad(res, loader, vm);
 
-  delete[] buf;
-  
   END_NATIVE_EXCEPTION
 
   return res != 0;

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMStackWalker.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMStackWalker.inc?rev=108057&r1=108056&r2=108057&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMStackWalker.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMStackWalker.inc Sat Jul 10 15:53:56 2010
@@ -41,7 +41,8 @@
   Jnjvm* vm = th->getJVM();
   uint32 length = th->getFrameContextLength();
   
-  uintptr_t* buffer = new uintptr_t[length];
+  mvm::ThreadAllocator allocator;  
+  uintptr_t* buffer = (uintptr_t*)allocator.Allocate(length * sizeof(uintptr_t));
   
   uint32 finalSize = th->getJavaFrameContext((void**)buffer);
   

Modified: vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp?rev=108057&r1=108056&r2=108057&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp Sat Jul 10 15:53:56 2010
@@ -536,9 +536,9 @@
   
   BEGIN_NATIVE_EXCEPTION(0)
 
-  char* buf = JavaString::strToAsciiz(str);
+  mvm::ThreadAllocator allocator;
+  char* buf = JavaString::strToAsciiz(str, &allocator);
   char* res = getenv(buf);
-  delete[] buf;
   if (res) {
     Jnjvm* vm = JavaThread::get()->getJVM();
     ret = vm->asciizToStr(res);

Modified: vmkit/trunk/lib/J3/Compiler/JavaJITCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaJITCompiler.cpp?rev=108057&r1=108056&r2=108057&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaJITCompiler.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaJITCompiler.cpp Sat Jul 10 15:53:56 2010
@@ -428,7 +428,8 @@
   mvm::MvmModule::initialise();
   mvm::Collector::initialise();
  
-  char** newArgv = new char*[argc + 1];
+  mvm::ThreadAllocator allocator;
+  char** newArgv = (char**)allocator.Allocate((argc + 1) * sizeof(char*));
   memcpy(newArgv + 1, argv, argc * sizeof(void*));
   newArgv[0] = newArgv[1];
   newArgv[1] = mainClass;

Modified: vmkit/trunk/lib/J3/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaClass.cpp?rev=108057&r1=108056&r2=108057&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaClass.cpp Sat Jul 10 15:53:56 2010
@@ -865,9 +865,10 @@
 
 void Class::readMethods(Reader& reader) {
   uint16 nbMethods = reader.readU2();
+  mvm::ThreadAllocator allocator;
   if (isAbstract(access)) {
-    virtualMethods = new JavaMethod[nbMethods];
-    memset(virtualMethods, 0, nbMethods * sizeof(JavaMethod));
+    virtualMethods = (JavaMethod*)
+      allocator.Allocate(nbMethods * sizeof(JavaMethod));
   } else {
     virtualMethods =
       new(classLoader->allocator, "Methods") JavaMethod[nbMethods];
@@ -910,7 +911,6 @@
         realMethods[j++].initialise(this, cur->name, cur->type, cur->access);
       }
     }
-    delete[] virtualMethods;
     virtualMethods = realMethods;
   }
 }

Modified: vmkit/trunk/lib/J3/VMCore/JavaString.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaString.cpp?rev=108057&r1=108056&r2=108057&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaString.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaString.cpp Sat Jul 10 15:53:56 2010
@@ -56,6 +56,20 @@
   return buf;
 }
 
+char* JavaString::strToAsciiz(JavaString* self,
+                              mvm::ThreadAllocator* allocator) {
+  const ArrayUInt16* value = NULL;
+  llvm_gcroot(self, 0);
+  llvm_gcroot(value, 0);
+  value = JavaString::getValue(self);
+  char* buf = (char*)allocator->Allocate((self->count + 1) * sizeof(char));
+  for (sint32 i = 0; i < self->count; ++i) {
+    buf[i] = ArrayUInt16::getElement(value, i + self->offset);
+  }
+  buf[self->count] =  0; 
+  return buf;
+}
+
 const ArrayUInt16* JavaString::strToArray(JavaString* self, Jnjvm* vm) {
   ArrayUInt16* array = NULL;
   const ArrayUInt16* value = NULL;
@@ -112,8 +126,9 @@
   llvm_gcroot(self, 0);
   llvm_gcroot(value, 0);
   value = JavaString::getValue(self);
-  
-  uint16* java = new uint16[self->count];
+ 
+  mvm::ThreadAllocator allocator; 
+  uint16* java = (uint16*)allocator.Allocate(self->count * sizeof(uint16));
 
   for (sint32 i = 0; i < self->count; ++i) {
     uint16 cur = ArrayUInt16::getElement(value, self->offset + i);
@@ -122,6 +137,5 @@
   }
   
   const UTF8* res = map->lookupOrCreateReader(java, self->count);
-  delete[] java;
   return res;
 }

Modified: vmkit/trunk/lib/J3/VMCore/JavaString.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaString.h?rev=108057&r1=108056&r2=108057&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaString.h (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaString.h Sat Jul 10 15:53:56 2010
@@ -50,6 +50,7 @@
 
   static void stringDestructor(JavaString*);
   static char* strToAsciiz(JavaString* self);
+  static char* strToAsciiz(JavaString* self, mvm::ThreadAllocator* allocator);
   static const ArrayUInt16* strToArray(JavaString* self, Jnjvm* vm);
 
   /// javaToInternal - Replaces all '/' into '.'.

Modified: vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp?rev=108057&r1=108056&r2=108057&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp Sat Jul 10 15:53:56 2010
@@ -1506,8 +1506,9 @@
 // Helper function to run Jnjvm without JIT.
 extern "C" int StartJnjvmWithoutJIT(int argc, char** argv, char* mainClass) {
   mvm::Collector::initialise();
-  
-  char** newArgv = new char*[argc + 1];
+ 
+  mvm::ThreadAllocator allocator; 
+  char** newArgv = (char**)allocator.Allocate((argc + 1) * sizeof(char*));
   memcpy(newArgv + 1, argv, argc * sizeof(char*));
   newArgv[0] = newArgv[1];
   newArgv[1] = mainClass;
@@ -1517,8 +1518,6 @@
   mvm::VirtualMachine* vm = mvm::VirtualMachine::createJVM(JCL);
   vm->runApplication(argc + 1, newArgv);
   vm->waitForExit();
-
-  delete[] newArgv;
   
   return 0; 
 }

Modified: vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp?rev=108057&r1=108056&r2=108057&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp Sat Jul 10 15:53:56 2010
@@ -946,7 +946,7 @@
   mvm::ThreadAllocator threadAllocator;
   if (str != 0) {
     unsigned int len = strlen(str);
-    char* buf = new char[len + 1];
+    char* buf = (char*)threadAllocator.Allocate((len + 1) * sizeof(char));
     const char* cur = str;
     int top = 0;
     char c = 1;
@@ -985,7 +985,6 @@
       cur = cur + top + 1;
       top = 0;
     }
-    delete[] buf;
   }
 }
 
@@ -998,7 +997,8 @@
   uint32 pos = steps;
   bool isTab = (className->elements[0] == I_TAB ? true : false);
   uint32 n = steps + len + (isTab ? 0 : 2);
-  uint16* buf = new uint16[n];
+  mvm::ThreadAllocator allocator;
+  uint16* buf = (uint16*)allocator.Allocate(n * sizeof(uint16));
     
   for (uint32 i = 0; i < steps; i++) {
     buf[i] = I_TAB;
@@ -1018,7 +1018,6 @@
   }
 
   const UTF8* res = readerConstructUTF8(buf, n);
-  delete[] buf;
   return res;
 }
 





More information about the vmkit-commits mailing list