[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