[vmkit-commits] [vmkit] r98518 - in /vmkit/trunk: lib/Mvm/Compiler/JIT.cpp mmtk/mmtk-j3/Memory.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Sun Mar 14 14:59:30 PDT 2010


Author: geoffray
Date: Sun Mar 14 16:59:30 2010
New Revision: 98518

URL: http://llvm.org/viewvc/llvm-project?rev=98518&view=rev
Log:
Allocate MMTk memory early on, to avoid collisions.


Modified:
    vmkit/trunk/lib/Mvm/Compiler/JIT.cpp
    vmkit/trunk/mmtk/mmtk-j3/Memory.cpp

Modified: vmkit/trunk/lib/Mvm/Compiler/JIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Compiler/JIT.cpp?rev=98518&r1=98517&r2=98518&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Compiler/JIT.cpp (original)
+++ vmkit/trunk/lib/Mvm/Compiler/JIT.cpp Sun Mar 14 16:59:30 2010
@@ -44,6 +44,8 @@
 #include "MutatorThread.h"
 #include "MvmGC.h"
 
+#include <sys/mman.h>
+
 using namespace mvm;
 using namespace llvm;
 
@@ -181,6 +183,20 @@
 #ifdef WITH_MMTK
   llvm::GlobalVariable* GV = globalModule->getGlobalVariable("MMTkCollectorSize", false);
   if (GV && executionEngine) {
+    // Allocate the memory for MMTk right now, to avoid conflicts with
+    // other allocators.
+#if defined (__MACH__)
+    uint32 flags = MAP_PRIVATE | MAP_ANON | MAP_FIXED;
+#else
+    uint32 flags = MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED;
+#endif
+    void* baseAddr = mmap((void*)0x30000000, 0x50000000, PROT_READ | PROT_WRITE,
+                          flags, -1, 0);
+    if (baseAddr == MAP_FAILED) {
+      perror("mmap");
+      abort();
+    }
+
     ConstantInt* C = dyn_cast<ConstantInt>(GV->getInitializer());
     uint64_t val = C->getZExtValue();
     MutatorThread::MMTkCollectorSize = val;

Modified: vmkit/trunk/mmtk/mmtk-j3/Memory.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/Memory.cpp?rev=98518&r1=98517&r2=98518&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/Memory.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/Memory.cpp Sun Mar 14 16:59:30 2010
@@ -34,18 +34,7 @@
 Java_org_j3_mmtk_Memory_dzmmap__Lorg_vmmagic_unboxed_Address_2I(JavaObject* M,
                                                                 void* start,
                                                                 sint32 size) {
-#if defined (__MACH__)
-  uint32 flags = MAP_PRIVATE | MAP_ANON | MAP_FIXED;
-#else
-  uint32 flags = MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED;
-#endif
-  void* baseAddr = mmap((void*)start, size, PROT_READ | PROT_WRITE, flags,
-                        -1, 0);
-  if (baseAddr == MAP_FAILED) {
-    perror("mmap");
-    JavaThread::get()->printBacktrace(); abort();
-  }
-
+  // Already mmapped during initialization.
   return 0;
 }
 





More information about the vmkit-commits mailing list