[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