[vmkit-commits] [vmkit] r86534 - in /vmkit/trunk: Makefile.rules lib/Mvm/Compiler/InlineMalloc.cpp mmtk/Makefile mmtk/mmtk-alloc/ mmtk/mmtk-alloc/Makefile mmtk/mmtk-alloc/Selected.cpp mmtk/mmtk-fake/Makefile mmtk/mmtk-fake/Selected.cpp mmtk/mmtk-j3/Selected.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Mon Nov 9 01:07:04 PST 2009
Author: geoffray
Date: Mon Nov 9 03:07:02 2009
New Revision: 86534
URL: http://llvm.org/viewvc/llvm-project?rev=86534&view=rev
Log:
Meta-circularity always requires some hacks...
Added:
vmkit/trunk/mmtk/mmtk-alloc/
vmkit/trunk/mmtk/mmtk-alloc/Makefile
vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp
Modified:
vmkit/trunk/Makefile.rules
vmkit/trunk/lib/Mvm/Compiler/InlineMalloc.cpp
vmkit/trunk/mmtk/Makefile
vmkit/trunk/mmtk/mmtk-fake/Makefile
vmkit/trunk/mmtk/mmtk-fake/Selected.cpp
vmkit/trunk/mmtk/mmtk-j3/Selected.cpp
Modified: vmkit/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/Makefile.rules?rev=86534&r1=86533&r2=86534&view=diff
==============================================================================
--- vmkit/trunk/Makefile.rules (original)
+++ vmkit/trunk/Makefile.rules Mon Nov 9 03:07:02 2009
@@ -127,15 +127,15 @@
ifdef RUN_ANT
ifdef ANT
-ADDITIONAL_ARGS := -load-bc=$(LibDir)/MMTKRuntime.bc -load-bc=$(LibDir)/MMTKFake.bc
+ADDITIONAL_ARGS := -load-bc=$(LibDir)/MMTKRuntime.bc
all::
$(Verb) $(ANT)
$(Echo) Building $(BuildMode) $(JARNAME).jar $(notdir $@)
- $(Verb) $(LOPT) -load=$(LibDir)/JITGCPass$(SHLIBEXT) -std-compile-opts -JITGCPass -f $(LibDir)/MMTKRuntime.bc -o $(LibDir)/MMTKRuntime.bc
- $(Verb) $(VMJC) -std-compile-opts $(ADDITIONAL_ARGS) -load=$(LibDir)/MMTKMagic$(SHLIBEXT) -LowerMagic -verify $(JARNAME).jar -disable-exceptions -disable-cooperativegc -with-clinit=org/mmtk/vm/VM,org/mmtk/utility/*,org/mmtk/policy/*,org/j3/config/* -Dmmtk.hostjvm=org.j3.mmtk.Factory -o $(JARNAME).bc -Dmmtk.properties=vmkit.properties -disable-stubs -assume-compiled
+ $(Verb) $(LOPT) -load=$(LibDir)/JITGCPass$(SHLIBEXT) -std-compile-opts -JITGCPass -f $(LibDir)/MMTKAlloc.bc -o $(LibDir)/MMTKAlloc.bc
+ $(Verb) $(VMJC) -std-compile-opts $(ADDITIONAL_ARGS) -load=$(LibDir)/MMTKFake$(SHLIBEXT) -load=$(LibDir)/MMTKMagic$(SHLIBEXT) -LowerMagic -verify $(JARNAME).jar -disable-exceptions -disable-cooperativegc -with-clinit=org/mmtk/vm/VM,org/mmtk/utility/*,org/mmtk/policy/*,org/j3/config/* -Dmmtk.hostjvm=org.j3.mmtk.Factory -o $(JARNAME).bc -Dmmtk.properties=vmkit.properties -disable-stubs -assume-compiled
$(Verb) $(LOPT) -load=$(LibDir)/MMTKMagic$(SHLIBEXT) -std-compile-opts -LowerJavaRT -f $(JARNAME).bc -o $(JARNAME)-optimized.bc
- $(Verb) $(LLVMLD) -r -o $(LibDir)/FinalMMTk.bc $(JARNAME)-optimized.bc $(LibDir)/MMTKRuntime.bc
+ $(Verb) $(LLVMLD) -r -o $(LibDir)/FinalMMTk.bc $(LibDir)/MMTKAlloc.bc $(JARNAME)-optimized.bc $(LibDir)/MMTKRuntime.bc
$(Verb) $(LOPT) -std-compile-opts $(LibDir)/FinalMMTk.bc -o $(LibDir)/FinalMMTk.bc
Modified: vmkit/trunk/lib/Mvm/Compiler/InlineMalloc.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Compiler/InlineMalloc.cpp?rev=86534&r1=86533&r2=86534&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Compiler/InlineMalloc.cpp (original)
+++ vmkit/trunk/lib/Mvm/Compiler/InlineMalloc.cpp Mon Nov 9 03:07:02 2009
@@ -9,11 +9,16 @@
#include "llvm/Constants.h"
#include "llvm/GlobalVariable.h"
-#include "llvm/Pass.h"
#include "llvm/Function.h"
#include "llvm/Instructions.h"
+#include "llvm/Module.h"
+#include "llvm/Pass.h"
#include "llvm/Support/CallSite.h"
#include "llvm/Support/Debug.h"
+#include "llvm/Support/raw_ostream.h"
+#include "llvm/Transforms/Utils/Cloning.h"
+
+#include "mvm/JIT.h"
using namespace llvm;
@@ -36,6 +41,8 @@
bool InlineMalloc::runOnFunction(Function& F) {
+ Function* Malloc = mvm::MvmModule::globalModule->getFunction("gcmalloc");
+ if (Malloc->isDeclaration()) return false;
bool Changed = false;
for (Function::iterator BI = F.begin(), BE = F.end(); BI != BE; BI++) {
BasicBlock *Cur = BI;
@@ -47,6 +54,11 @@
if (CI) {
Function* F = Call.getCalledFunction();
if (F && F->getName() == "gcmalloc") {
+ if (dyn_cast<Constant>(Call.getArgument(0))) {
+ Call.setCalledFunction(mvm::MvmModule::globalModule->getFunction("gcmalloc"));
+ Changed |= InlineFunction(Call, 0, mvm::MvmModule::TheTargetData);
+ break;
+ }
}
}
}
Modified: vmkit/trunk/mmtk/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/Makefile?rev=86534&r1=86533&r2=86534&view=diff
==============================================================================
--- vmkit/trunk/mmtk/Makefile (original)
+++ vmkit/trunk/mmtk/Makefile Mon Nov 9 03:07:02 2009
@@ -8,7 +8,7 @@
##===----------------------------------------------------------------------===##
LEVEL = ..
-DIRS = magic mmtk-j3 mmtk-fake java
+DIRS = magic mmtk-j3 mmtk-fake mmtk-alloc java
include $(LEVEL)/Makefile.config
Added: vmkit/trunk/mmtk/mmtk-alloc/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-alloc/Makefile?rev=86534&view=auto
==============================================================================
--- vmkit/trunk/mmtk/mmtk-alloc/Makefile (added)
+++ vmkit/trunk/mmtk/mmtk-alloc/Makefile Mon Nov 9 03:07:02 2009
@@ -0,0 +1,26 @@
+##===- mmtk/mmtk-j3/Makefile -------------------------------*- Makefile -*-===##
+#
+# The vmkit project
+#
+# This file is distributed under the University of Illinois Open Source
+# License. See LICENSE.TXT for details.
+#
+##===----------------------------------------------------------------------===##
+
+LEVEL = ../..
+
+include $(LEVEL)/Makefile.config
+
+ifeq ($(WITH_LLVM_GCC), 1)
+ MODULE_NAME = MMTKAlloc
+else
+ LIBRARYNAME = MMTKAlloc
+endif
+
+LOADABLE_MODULE = 1
+USEDLIBS =
+
+CXX.Flags += -I$(PROJ_OBJ_DIR)/../../lib/JnJVM/VMCore
+
+include $(LEVEL)/Makefile.common
+
Added: vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp?rev=86534&view=auto
==============================================================================
--- vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp (added)
+++ vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp Mon Nov 9 03:07:02 2009
@@ -0,0 +1,38 @@
+//===-------- Selected.cpp - Implementation of the Selected class --------===//
+//
+// The VMKit project
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "JavaArray.h"
+#include "JavaClass.h"
+#include "JavaObject.h"
+#include "JavaThread.h"
+#include "MutatorThread.h"
+
+using namespace jnjvm;
+
+extern "C" void* JnJVM_org_mmtk_plan_marksweep_MSMutator_alloc__IIIII(uintptr_t Mutator, int32_t sz, int32_t align, int32_t offset, int32_t allocator, int32_t site) __attribute__((always_inline));
+extern "C" int32_t JnJVM_org_mmtk_plan_MutatorContext_checkAllocator__III(uintptr_t Mutator, int32_t bytes, int32_t align, int32_t allocator) __attribute__((always_inline));
+extern "C" void JnJVM_org_mmtk_plan_marksweep_MSMutator_postAlloc__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_ObjectReference_2II(uintptr_t Mutator, uintptr_t ref, uintptr_t typeref,
+ int32_t bytes, int32_t allocator) __attribute__((always_inline));
+
+extern "C" void* gcmalloc(size_t sz, void* _VT) {
+ gc* res = 0;
+ llvm_gcroot(res, 0);
+ VirtualTable* VT = (VirtualTable*)_VT;
+ sz = llvm::RoundUpToAlignment(sz, sizeof(void*));
+ uintptr_t Mutator = mvm::MutatorThread::get()->MutatorContext;
+ int allocator = JnJVM_org_mmtk_plan_MutatorContext_checkAllocator__III(Mutator, sz, 0, 0);
+ res = (gc*)JnJVM_org_mmtk_plan_marksweep_MSMutator_alloc__IIIII(Mutator, sz, 0, 0, allocator, 0);
+ res->setVirtualTable(VT);
+ JnJVM_org_mmtk_plan_marksweep_MSMutator_postAlloc__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_ObjectReference_2II(Mutator, (uintptr_t)res, (uintptr_t)VT, sz, allocator);
+
+ if (VT->destructor) {
+ mvm::Thread::get()->MyVM->addFinalizationCandidate(res);
+ }
+ return res;
+}
Modified: vmkit/trunk/mmtk/mmtk-fake/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-fake/Makefile?rev=86534&r1=86533&r2=86534&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-fake/Makefile (original)
+++ vmkit/trunk/mmtk/mmtk-fake/Makefile Mon Nov 9 03:07:02 2009
@@ -11,12 +11,7 @@
include $(LEVEL)/Makefile.config
-ifeq ($(WITH_LLVM_GCC), 1)
- MODULE_NAME = MMTKFake
-else
- LIBRARYNAME = MMTKFake
-endif
-
+LIBRARYNAME = MMTKFake
LOADABLE_MODULE = 1
USEDLIBS =
Modified: vmkit/trunk/mmtk/mmtk-fake/Selected.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-fake/Selected.cpp?rev=86534&r1=86533&r2=86534&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-fake/Selected.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-fake/Selected.cpp Mon Nov 9 03:07:02 2009
@@ -20,11 +20,16 @@
int32_t site);
-extern "C" void* JnJVM_org_mmtk_plan_marksweep_MSMutator_alloc__IIIII(uintptr_t Mutator, int32_t sz, int32_t align, int32_t offset, int32_t allocator, int32_t site) {
- return internalMalloc(Mutator, sz, align, offset, allocator, site);
-}
-extern "C" int32_t JnJVM_org_mmtk_plan_MutatorContext_checkAllocator__III(uintptr_t Mutator, int32_t bytes, int32_t align, int32_t allocator) {
- return allocator;
+
+extern "C" void* gcmalloc(size_t sz, void* _VT) {
+ gc* res = 0;
+ VirtualTable* VT = (VirtualTable*)_VT;
+ sz = llvm::RoundUpToAlignment(sz, sizeof(void*));
+ res = internalMalloc(0, sz, 0, 0, 0, 0);
+ res->setVirtualTable(VT);
+
+ if (VT->destructor) {
+ mvm::Thread::get()->MyVM->addFinalizationCandidate(res);
+ }
+ return res;
}
-extern "C" void JnJVM_org_mmtk_plan_marksweep_MSMutator_postAlloc__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_ObjectReference_2II(uintptr_t Mutator, uintptr_t ref, uintptr_t typeref,
- int32_t bytes, int32_t allocator) {}
Modified: vmkit/trunk/mmtk/mmtk-j3/Selected.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/Selected.cpp?rev=86534&r1=86533&r2=86534&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/Selected.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/Selected.cpp Mon Nov 9 03:07:02 2009
@@ -18,27 +18,3 @@
extern "C" JavaObject* Java_org_j3_config_Selected_00024Mutator_get__() {
return (JavaObject*)mvm::MutatorThread::get()->MutatorContext;
}
-
-
-
-extern "C" void* JnJVM_org_mmtk_plan_marksweep_MSMutator_alloc__IIIII(uintptr_t Mutator, int32_t sz, int32_t align, int32_t offset, int32_t allocator, int32_t site) __attribute__((always_inline));
-extern "C" int32_t JnJVM_org_mmtk_plan_MutatorContext_checkAllocator__III(uintptr_t Mutator, int32_t bytes, int32_t align, int32_t allocator) __attribute__((always_inline));
-extern "C" void JnJVM_org_mmtk_plan_marksweep_MSMutator_postAlloc__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_ObjectReference_2II(uintptr_t Mutator, uintptr_t ref, uintptr_t typeref,
- int32_t bytes, int32_t allocator) __attribute__((always_inline));
-
-extern "C" void* gcmalloc(size_t sz, void* _VT) {
- gc* res = 0;
- llvm_gcroot(res, 0);
- VirtualTable* VT = (VirtualTable*)_VT;
- sz = llvm::RoundUpToAlignment(sz, sizeof(void*));
- uintptr_t Mutator = mvm::MutatorThread::get()->MutatorContext;
- int allocator = JnJVM_org_mmtk_plan_MutatorContext_checkAllocator__III(Mutator, sz, 0, 0);
- res = (gc*)JnJVM_org_mmtk_plan_marksweep_MSMutator_alloc__IIIII(Mutator, sz, 0, 0, allocator, 0);
- res->setVirtualTable(VT);
- JnJVM_org_mmtk_plan_marksweep_MSMutator_postAlloc__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_ObjectReference_2II(Mutator, (uintptr_t)res, (uintptr_t)VT, sz, allocator);
-
- if (VT->destructor) {
- mvm::Thread::get()->MyVM->addFinalizationCandidate(res);
- }
- return res;
-}
More information about the vmkit-commits
mailing list