[vmkit-commits] [vmkit] r89504 - /vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Fri Nov 20 14:58:07 PST 2009


Author: geoffray
Date: Fri Nov 20 16:58:07 2009
New Revision: 89504

URL: http://llvm.org/viewvc/llvm-project?rev=89504&view=rev
Log:
Do not allocate the opcodeInfos array on stack, it could be too big for it.


Modified:
    vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp Fri Nov 20 16:58:07 2009
@@ -788,7 +788,7 @@
   currentBlock = curBB;
   endExceptionBlock = endExBlock;
 
-  opcodeInfos = (Opinfo*)alloca(codeLen * sizeof(Opinfo));
+  opcodeInfos = new Opinfo[codeLen];
   memset(opcodeInfos, 0, codeLen * sizeof(Opinfo));
   for (uint32 i = 0; i < codeLen; ++i) {
     opcodeInfos[i].exceptionBlock = endExBlock;
@@ -936,6 +936,7 @@
   removeUnusedObjects(objectStack, module, TheCompiler->useCooperativeGC());
 
 
+  delete[] opcodeInfos;
   return endNode;
     
 }
@@ -974,7 +975,7 @@
   endExceptionBlock = createBasicBlock("endExceptionBlock");
   unifiedUnreachable = createBasicBlock("unifiedUnreachable"); 
 
-  opcodeInfos = (Opinfo*)alloca(codeLen * sizeof(Opinfo));
+  opcodeInfos = new Opinfo[codeLen];
   memset(opcodeInfos, 0, codeLen * sizeof(Opinfo));
   for (uint32 i = 0; i < codeLen; ++i) {
     opcodeInfos[i].exceptionBlock = endExceptionBlock;
@@ -1267,7 +1268,9 @@
   
   removeUnusedObjects(objectLocals, module, TheCompiler->useCooperativeGC());
   removeUnusedObjects(objectStack, module, TheCompiler->useCooperativeGC());
-  
+ 
+  delete[] opcodeInfos;
+
   PRINT_DEBUG(JNJVM_COMPILE, 1, COLOR_NORMAL, "--> end compiling %s.%s\n",
               UTF8Buffer(compilingClass->name).cString(),
               UTF8Buffer(compilingMethod->name).cString());





More information about the vmkit-commits mailing list