[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