[vmkit-commits] [vmkit] r145386 - /vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Mon Nov 28 22:55:47 PST 2011


Author: geoffray
Date: Tue Nov 29 00:55:47 2011
New Revision: 145386

URL: http://llvm.org/viewvc/llvm-project?rev=145386&view=rev
Log:
Protect the strings link list of a class loader when creating a new link.


Modified:
    vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp

Modified: vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp?rev=145386&r1=145385&r2=145386&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp Tue Nov 29 00:55:47 2011
@@ -1045,13 +1045,14 @@
 
 JavaString** StringList::addString(JnjvmClassLoader* JCL, JavaString* obj) {
   llvm_gcroot(obj, 0);
+  JCL->lock.lock();
   if (length == MAXIMUM_STRINGS) {
     StringList* next = new(JCL->allocator, "StringList") StringList();
     next->prev = this;
     JCL->strings = next;
+    JCL->lock.unlock();
     return next->addString(JCL, obj);
   } else {
-    JCL->lock.lock();
     vmkit::Collector::objectReferenceNonHeapWriteBarrier(
         (gc**)&(strings[length]), (gc*)obj);
     JavaString** res = &strings[length++];





More information about the vmkit-commits mailing list