[vmkit-commits] [vmkit] r73608 - in /vmkit/trunk/lib/N3: Mono/Mono.cpp VMCore/N3Initialise.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Wed Jun 17 02:50:49 PDT 2009


Author: geoffray
Date: Wed Jun 17 04:50:29 2009
New Revision: 73608

URL: http://llvm.org/viewvc/llvm-project?rev=73608&view=rev
Log:
Disable finalizers for now and workaround for Mono bootstrap.
Also add a couple of missing VT initialization.


Modified:
    vmkit/trunk/lib/N3/Mono/Mono.cpp
    vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp

Modified: vmkit/trunk/lib/N3/Mono/Mono.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/Mono/Mono.cpp?rev=73608&r1=73607&r2=73608&view=diff

==============================================================================
--- vmkit/trunk/lib/N3/Mono/Mono.cpp (original)
+++ vmkit/trunk/lib/N3/Mono/Mono.cpp Wed Jun 17 04:50:29 2009
@@ -117,7 +117,8 @@
 }
 
 extern "C" void System_Threading_Monitor_Monitor_exit(VMObject* obj) {
-  obj->unlock();
+  // TODO: There's a bug in the bootstrap, see why
+  if (obj->lockObj->owner()) obj->unlock();
 }
 
 extern "C" bool System_Threading_Monitor_Monitor_try_enter(VMObject* obj, int ms) {

Modified: vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp?rev=73608&r1=73607&r2=73608&view=diff

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp Wed Jun 17 04:50:29 2009
@@ -166,13 +166,15 @@
 
 # define INIT(X) { \
   X fake; \
-  X::VT = ((VirtualTable**)(void*)(&fake))[0]; }
+  X::VT = ((VirtualTable**)(void*)(&fake))[0];\
+  ((void**)X::VT)[0] = 0; }
   
   INIT(Assembly);
   INIT(Header);
   INIT(Property);
   INIT(Param);
   INIT(Section);
+  INIT(Stream);
   INIT(Table);
   INIT(VMArray);
   INIT(ArrayUInt8);
@@ -188,6 +190,7 @@
   INIT(UTF8);
   INIT(VMCommonClass);
   INIT(VMClass);
+  INIT(VMClassPointer);
   INIT(VMGenericClass);
   INIT(VMClassArray);
   INIT(VMMethod);
@@ -202,6 +205,7 @@
   INIT(N3);
   INIT(Reader);
   INIT(UTF8Map);
+  INIT(AssemblyMap);
   INIT(ClassNameMap);
   INIT(ClassTokenMap);
   INIT(FieldTokenMap);





More information about the vmkit-commits mailing list