[vmkit-commits] [vmkit] r121612 - in /vmkit/trunk: Makefile.rules mmtk/inline/InlineMethods.cpp mmtk/inline/Makefile mmtk/mmtk-alloc/Selected.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Sat Dec 11 03:19:09 PST 2010


Author: geoffray
Date: Sat Dec 11 05:19:09 2010
New Revision: 121612

URL: http://llvm.org/viewvc/llvm-project?rev=121612&view=rev
Log:
Put the code to inline write barriers, but disable reading the write barriers llvm generated files: the llvm-cpp tool is not robust enough to support multiple functions.


Modified:
    vmkit/trunk/Makefile.rules
    vmkit/trunk/mmtk/inline/InlineMethods.cpp
    vmkit/trunk/mmtk/inline/Makefile
    vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp

Modified: vmkit/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/Makefile.rules?rev=121612&r1=121611&r2=121612&view=diff
==============================================================================
--- vmkit/trunk/Makefile.rules (original)
+++ vmkit/trunk/Makefile.rules Sat Dec 11 05:19:09 2010
@@ -140,7 +140,10 @@
 	$(Verb) $(LOPT) -load=$(LibDir)/MMTKMagic$(SHLIBEXT) -std-compile-opts -LowerJavaRT -f $(JARNAME).bc -o $(JARNAME)-optimized.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
-	$(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=gcmalloc $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkInline.inc
+	$(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=gcmalloc $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkMallocInline.inc
+	$(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=fieldWriteBarrier $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkFieldWriteInline.inc
+	$(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=arrayWriteBarrier $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkArrayWriteInline.inc
+	$(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=nonHeapWriteBarrier $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkNonHeapWriteInline.inc
 endif
 
 endif

Modified: vmkit/trunk/mmtk/inline/InlineMethods.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/inline/InlineMethods.cpp?rev=121612&r1=121611&r2=121612&view=diff
==============================================================================
--- vmkit/trunk/mmtk/inline/InlineMethods.cpp (original)
+++ vmkit/trunk/mmtk/inline/InlineMethods.cpp Sat Dec 11 05:19:09 2010
@@ -19,12 +19,27 @@
 
 namespace mmtk {
 
-namespace mmtk_runtime {
-  #include "MMTkInline.inc"
+namespace mmtk_malloc {
+  #include "MMTkMallocInline.inc"
+}
+
+namespace mmtk_array_write {
+  #include "MMTkArrayWriteInline.inc"
+}
+
+namespace mmtk_field_write {
+  #include "MMTkFieldWriteInline.inc"
+}
+
+namespace mmtk_non_heap_write {
+  #include "MMTkNonHeapWriteInline.inc"
 }
 
 extern "C" void MMTk_InlineMethods(llvm::Module* module) {
-  mmtk_runtime::makeLLVMFunction(module);
+  mmtk_malloc::makeLLVMFunction(module);
+  //mmtk_field_write::makeLLVMFunction(module);
+  //mmtk_array_write::makeLLVMFunction(module);
+  //mmtk_non_heap_write::makeLLVMFunction(module);
 }
 
 }

Modified: vmkit/trunk/mmtk/inline/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/inline/Makefile?rev=121612&r1=121611&r2=121612&view=diff
==============================================================================
--- vmkit/trunk/mmtk/inline/Makefile (original)
+++ vmkit/trunk/mmtk/inline/Makefile Sat Dec 11 05:19:09 2010
@@ -14,3 +14,6 @@
 
 include $(LEVEL)/Makefile.common
 
+# Use CompileCommonOpts instead of CXX.Flags to make sure the flag is added
+# after the -Wall added by LLVM.
+CompileCommonOpts += -Wno-unused-variable

Modified: vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp?rev=121612&r1=121611&r2=121612&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-alloc/Selected.cpp Sat Dec 11 05:19:09 2010
@@ -77,20 +77,20 @@
   return res;
 }
 
-extern "C" void arrayWriteBarrier(gc* ref, gc** ptr, gc* value) {
+extern "C" void arrayWriteBarrier(void* ref, void** ptr, void* value) {
   JnJVM_org_j3_bindings_Bindings_arrayWriteBarrier__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_Address_2Lorg_vmmagic_unboxed_ObjectReference_2(
-      ref, ptr, value);
+      (gc*)ref, (gc**)ptr, (gc*)value);
   if (mvm::Thread::get()->doYield) mvm::Collector::collect();
 }
 
-extern "C" void fieldWriteBarrier(gc* ref, gc** ptr, gc* value) {
+extern "C" void fieldWriteBarrier(void* ref, void** ptr, void* value) {
   JnJVM_org_j3_bindings_Bindings_fieldWriteBarrier__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_Address_2Lorg_vmmagic_unboxed_ObjectReference_2(
-      ref, ptr, value);
+      (gc*)ref, (gc**)ptr, (gc*)value);
   if (mvm::Thread::get()->doYield) mvm::Collector::collect();
 }
 
-extern "C" void nonHeapWriteBarrier(gc** ptr, gc* value) {
-  JnJVM_org_j3_bindings_Bindings_nonHeapWriteBarrier__Lorg_vmmagic_unboxed_Address_2Lorg_vmmagic_unboxed_ObjectReference_2(ptr, value);
+extern "C" void nonHeapWriteBarrier(void** ptr, void* value) {
+  JnJVM_org_j3_bindings_Bindings_nonHeapWriteBarrier__Lorg_vmmagic_unboxed_Address_2Lorg_vmmagic_unboxed_ObjectReference_2((gc**)ptr, (gc*)value);
   if (mvm::Thread::get()->doYield) mvm::Collector::collect();
 }
 
@@ -181,15 +181,15 @@
 }
 
 void Collector::objectReferenceWriteBarrier(gc* ref, gc** slot, gc* value) {
-  fieldWriteBarrier(ref, slot, value);
+  fieldWriteBarrier((void*)ref, (void**)slot, (void*)value);
 }
 
 void Collector::objectReferenceArrayWriteBarrier(gc* ref, gc** slot, gc* value) {
-  arrayWriteBarrier(ref, slot, value);
+  arrayWriteBarrier((void*)ref, (void**)slot, (void*)value);
 }
 
 void Collector::objectReferenceNonHeapWriteBarrier(gc** slot, gc* value) {
-  nonHeapWriteBarrier(slot, value);
+  nonHeapWriteBarrier((void**)slot, (void*)value);
 }
 
 bool Collector::objectReferenceTryCASBarrier(gc* ref, gc** slot, gc* old, gc* value) {





More information about the vmkit-commits mailing list