[vmkit-commits] [vmkit] r61987 - /vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Fri Jan 9 03:49:29 PST 2009
Author: geoffray
Date: Fri Jan 9 05:49:21 2009
New Revision: 61987
URL: http://llvm.org/viewvc/llvm-project?rev=61987&view=rev
Log:
Fix linkage of global variables.
Modified:
vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp?rev=61987&r1=61986&r2=61987&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp Fri Jan 9 05:49:21 2009
@@ -155,7 +155,7 @@
const llvm::Type* Ty = JavaClassArrayType;
GlobalVariable* varGV =
- new GlobalVariable(Ty, false, GlobalValue::ExternalLinkage,
+ new GlobalVariable(Ty, false, GlobalValue::InternalLinkage,
Constant::getNullValue(Ty), "", this);
arrayClasses.insert(std::make_pair((ClassArray*)classDef, varGV));
@@ -182,9 +182,10 @@
constant_pool_iterator End = constantPools.end();
constant_pool_iterator I = constantPools.find(ctp);
if (I == End) {
- varGV = new GlobalVariable(ConstantPoolType->getContainedType(0), false,
- GlobalValue::ExternalLinkage,
- 0, "", this);
+ const Type* Ty = ConstantPoolType->getContainedType(0);
+ varGV = new GlobalVariable(Ty, false,
+ GlobalValue::InternalLinkage,
+ Constant::getNullValue(Ty), "", this);
constantPools.insert(std::make_pair(ctp, varGV));
return varGV;
} else {
@@ -244,7 +245,7 @@
const llvm::Type* Ty = LCI->getVirtualType();
GlobalVariable* varGV =
new GlobalVariable(Ty->getContainedType(0), false,
- GlobalValue::ExternalLinkage,
+ GlobalValue::InternalLinkage,
0, "", this);
Constant* res = ConstantExpr::getCast(Instruction::BitCast, varGV,
JavaObjectType);
@@ -269,7 +270,7 @@
} else {
GlobalVariable* varGV =
new GlobalVariable(EnveloppeType->getContainedType(0), false,
- GlobalValue::ExternalLinkage, 0, "", this);
+ GlobalValue::InternalLinkage, 0, "", this);
enveloppes.insert(std::make_pair(enveloppe, varGV));
Constant* C = CreateConstantFromEnveloppe(enveloppe);
@@ -295,7 +296,7 @@
GlobalVariable* varGV =
new GlobalVariable(Ty->getContainedType(0), false,
- GlobalValue::ExternalLinkage, 0, "", this);
+ GlobalValue::InternalLinkage, 0, "", this);
Constant* res = ConstantExpr::getCast(Instruction::BitCast, varGV,
JavaObjectType);
@@ -542,8 +543,8 @@
}
Function* func = Function::Create(JnjvmModule::MarkAndTraceType,
- GlobalValue::ExternalLinkage,
- "markAndTraceObject",
+ GlobalValue::InternalLinkage,
+ "",
this);
Constant* zero = mvm::MvmModule::constantZero;
@@ -1228,7 +1229,7 @@
if (I == End) {
Constant* C = CreateConstantFromUTF8(val);
GlobalVariable* varGV = new GlobalVariable(C->getType(), true,
- GlobalValue::ExternalLinkage,
+ GlobalValue::InternalLinkage,
C, "", this);
Constant* res = ConstantExpr::getCast(Instruction::BitCast, varGV,
@@ -1496,8 +1497,16 @@
char* buf = (char*)alloca(3 + JNI_NAME_PRE_LEN + 1 +
((mnlen + clen + mtlen) << 1));
- methodDef->jniConsFromMethOverloaded(buf + 1);
- memcpy(buf, "JnJVM", 5);
+ bool jnjvm = false;
+ if (isNative(methodDef->access)) {
+ // Verify if it's defined by JnJVM
+ JCL->nativeLookup(methodDef, jnjvm, buf);
+ }
+
+ if (!jnjvm) {
+ methodDef->jniConsFromMethOverloaded(buf + 1);
+ memcpy(buf, "JnJVM", 5);
+ }
methodFunction = Function::Create(getFunctionType(),
GlobalValue::GhostLinkage, buf, Mod);
@@ -1645,7 +1654,7 @@
Function* res = Function::Create(virt ? getVirtualBufType() :
getStaticBufType(),
- GlobalValue::ExternalLinkage, name, Mod);
+ GlobalValue::InternalLinkage, name, Mod);
BasicBlock* currentBlock = BasicBlock::Create("enter", res);
Function::arg_iterator i = res->arg_begin();
@@ -1703,7 +1712,7 @@
Function* res = Function::Create(virt ? getVirtualBufType() :
getStaticBufType(),
- GlobalValue::ExternalLinkage, name, Mod);
+ GlobalValue::InternalLinkage, name, Mod);
BasicBlock* currentBlock = BasicBlock::Create("enter", res);
Function::arg_iterator i = res->arg_begin();
@@ -2324,12 +2333,6 @@
void JnjvmModule::CreateStaticInitializer() {
- // Set the linkage of all functions to External, so that the printer does
- // not complain.
- for (Module::iterator i = begin(), e = end(); i != e; ++i) {
- i->setLinkage(GlobalValue::ExternalLinkage);
- }
-
std::vector<const llvm::Type*> llvmArgs;
llvmArgs.push_back(ptrType); // class loader
llvmArgs.push_back(JavaCommonClassType); // cl
More information about the vmkit-commits
mailing list