[vmkit-commits] [vmkit] r109973 - in /vmkit/trunk/lib: J3/Classpath/ClasspathConstructor.inc J3/Classpath/ClasspathMethod.inc J3/Classpath/ClasspathVMThread.inc J3/Compiler/JavaAOTCompiler.cpp J3/VMCore/JavaClass.cpp J3/VMCore/JavaRuntimeJIT.cpp J3/VMCore/Jnjvm.cpp Mvm/StaticGCPass/StaticGCPass.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Sun Aug 1 05:41:16 PDT 2010


Author: geoffray
Date: Sun Aug  1 07:41:16 2010
New Revision: 109973

URL: http://llvm.org/viewvc/llvm-project?rev=109973&view=rev
Log:
Methods that use gc_root should not be made static. Make StaticGCPass ensure they are not.


Modified:
    vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc
    vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc
    vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc
    vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
    vmkit/trunk/lib/J3/VMCore/JavaClass.cpp
    vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp
    vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp
    vmkit/trunk/lib/Mvm/StaticGCPass/StaticGCPass.cpp

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc?rev=109973&r1=109972&r2=109973&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc Sun Aug  1 07:41:16 2010
@@ -69,14 +69,14 @@
   return res;
 }
 
-static JavaObject* proceedConstructor(JavaObjectConstructor* cons,
-                                      ArrayObject* args,
-                                      JavaObject* Clazz, jint index) 
+JavaObject* proceedConstructor(JavaObjectConstructor* cons,
+                               ArrayObject* args,
+                               JavaObject* Clazz, jint index) 
   __attribute__ ((noinline));
  
-static JavaObject* proceedConstructor(JavaObjectConstructor* cons,
-                                      ArrayObject* args,
-                                      JavaObject* Clazz, jint index) {
+JavaObject* proceedConstructor(JavaObjectConstructor* cons,
+                               ArrayObject* args,
+                               JavaObject* Clazz, jint index) {
   JavaObject* res = 0;
   JavaObject* excp = 0;
 

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc?rev=109973&r1=109972&r2=109973&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc Sun Aug  1 07:41:16 2010
@@ -90,12 +90,12 @@
   return res;
 }
 
-static JavaObject* proceedMethod(JavaObjectMethod* Meth, JavaObject* obj,
-                                 ArrayObject* args, JavaObject* Cl, jint index) 
+JavaObject* proceedMethod(JavaObjectMethod* Meth, JavaObject* obj,
+                          ArrayObject* args, JavaObject* Cl, jint index) 
   __attribute__((noinline));
 
-static JavaObject* proceedMethod(JavaObjectMethod* Meth, JavaObject* obj,
-                                 ArrayObject* args, JavaObject* Cl, jint index) {
+JavaObject* proceedMethod(JavaObjectMethod* Meth, JavaObject* obj,
+                          ArrayObject* args, JavaObject* Cl, jint index) {
 
   JavaObject* res = 0;
   JavaObject* exc = 0;

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc?rev=109973&r1=109972&r2=109973&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc Sun Aug  1 07:41:16 2010
@@ -32,7 +32,7 @@
   return JavaThread::get()->currentThread();
 }
 
-static void start(JavaThread* thread) {
+void start(JavaThread* thread) {
 
   JavaObjectVMThread* vmThread = NULL;
   JavaObject* javaThread = NULL;

Modified: vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp?rev=109973&r1=109972&r2=109973&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp Sun Aug  1 07:41:16 2010
@@ -1901,10 +1901,10 @@
 
 
 
-static void extractFiles(ArrayUInt8* bytes,
-                         JavaAOTCompiler* M,
-                         JnjvmBootstrapLoader* bootstrapLoader,
-                         std::vector<Class*>& classes) {
+void extractFiles(ArrayUInt8* bytes,
+                  JavaAOTCompiler* M,
+                  JnjvmBootstrapLoader* bootstrapLoader,
+                  std::vector<Class*>& classes) {
   ZipArchive archive(bytes, bootstrapLoader->allocator);
    
   mvm::ThreadAllocator allocator; 

Modified: vmkit/trunk/lib/J3/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaClass.cpp?rev=109973&r1=109972&r2=109973&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaClass.cpp Sun Aug  1 07:41:16 2010
@@ -716,7 +716,7 @@
 }
 
 
-static void internalLoadExceptions(JavaMethod& meth) {
+void internalLoadExceptions(JavaMethod& meth) {
   
   Attribut* codeAtt = meth.lookupAttribut(Attribut::codeAttribut);
    

Modified: vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp?rev=109973&r1=109972&r2=109973&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp Sun Aug  1 07:41:16 2010
@@ -252,8 +252,8 @@
 }
 
 // Throws if one of the dimension is negative.
-static JavaObject* multiCallNewIntern(UserClassArray* cl, uint32 len,
-                                      sint32* dims, Jnjvm* vm) {
+JavaObject* multiCallNewIntern(UserClassArray* cl, uint32 len,
+                               sint32* dims, Jnjvm* vm) {
   assert(len > 0 && "Negative size given by VMKit");
  
   JavaObject* _res = cl->doNew(dims[0], vm);

Modified: vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp?rev=109973&r1=109972&r2=109973&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp Sun Aug  1 07:41:16 2010
@@ -487,8 +487,8 @@
 }
   
 
-static JavaString* CreateNoSuchMsg(CommonClass* cl, const UTF8* name,
-                                   Jnjvm* vm) {
+JavaString* CreateNoSuchMsg(CommonClass* cl, const UTF8* name,
+                            Jnjvm* vm) {
   ArrayUInt16* msg = NULL;
   JavaString* str = NULL;
   llvm_gcroot(msg, 0);
@@ -564,7 +564,7 @@
         upcalls->InitAbstractMethodError, str);
 }
 
-static JavaString* CreateUnableToLoad(const UTF8* name, Jnjvm* vm) {
+JavaString* CreateUnableToLoad(const UTF8* name, Jnjvm* vm) {
   ArrayUInt16* msg = NULL;
   JavaString* str = NULL;
   llvm_gcroot(msg, 0);
@@ -603,7 +603,7 @@
   return str;
 }
 
-static JavaString* CreateUnableToLoad(JavaString* name, Jnjvm* vm) {
+JavaString* CreateUnableToLoad(JavaString* name, Jnjvm* vm) {
   JavaString* str = NULL;
   ArrayUInt16* msg = NULL;
   llvm_gcroot(msg, 0);
@@ -828,8 +828,8 @@
 }
 
 
-static char* findInformation(Jnjvm* vm, ArrayUInt8* manifest, const char* entry,
-                             uint32 len) {
+char* findInformation(Jnjvm* vm, ArrayUInt8* manifest, const char* entry,
+                      uint32 len) {
   llvm_gcroot(manifest, 0);
   sint32 index = sys_strnstr((char*)ArrayUInt8::getElements(manifest), entry);
   if (index != -1) {

Modified: vmkit/trunk/lib/Mvm/StaticGCPass/StaticGCPass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/StaticGCPass/StaticGCPass.cpp?rev=109973&r1=109972&r2=109973&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/StaticGCPass/StaticGCPass.cpp (original)
+++ vmkit/trunk/lib/Mvm/StaticGCPass/StaticGCPass.cpp Sun Aug  1 07:41:16 2010
@@ -14,6 +14,8 @@
 #include "llvm/Pass.h"
 #include "llvm/Support/raw_ostream.h"
 
+#include <cstdio>
+
 using namespace llvm;
 
 namespace {
@@ -47,6 +49,7 @@
     F->eraseFromParent();
   }
 
+  bool error = false;
   for (Value::use_iterator I = gcrootFun->use_begin(),
        E = gcrootFun->use_end(); I != E; ++I) {
     if (Instruction* II = dyn_cast<Instruction>(I)) {
@@ -57,9 +60,17 @@
   }
 
   for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) {
+    if (I->hasGC() && I->hasInternalLinkage()) {
+      error = true;
+      fprintf(stderr, "Method %s has static linkage but uses gc_root. "
+                      "Functions using gc_root should not have static linkage.\n",
+                      I->getName().data());
+    }
     if (I->hasGC() && !strcmp(I->getGC(), "vmkit")) I->setGC("ocaml");
   }
 
+  if (error) abort();
+
   return true;
 }
 





More information about the vmkit-commits mailing list