[vmkit-commits] [vmkit] r84429 - /vmkit/trunk/mmtk/magic/LowerJavaRT.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sun Oct 18 12:50:29 PDT 2009
Author: geoffray
Date: Sun Oct 18 14:50:28 2009
New Revision: 84429
URL: http://llvm.org/viewvc/llvm-project?rev=84429&view=rev
Log:
Add a checkAllocator alias.
Change calls to rt.jar to mmtk-j3 runtime.
Modified:
vmkit/trunk/mmtk/magic/LowerJavaRT.cpp
Modified: vmkit/trunk/mmtk/magic/LowerJavaRT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/magic/LowerJavaRT.cpp?rev=84429&r1=84428&r2=84429&view=diff
==============================================================================
--- vmkit/trunk/mmtk/magic/LowerJavaRT.cpp (original)
+++ vmkit/trunk/mmtk/magic/LowerJavaRT.cpp Sun Oct 18 14:50:28 2009
@@ -41,11 +41,25 @@
bool Changed = true;
for (Module::iterator I = M.begin(), E = M.end(); I != E;) {
- GlobalValue& GV = *I;
+ Function& GV = *I;
++I;
if (!strncmp(GV.getName().data(), "JnJVM_java", 10) ||
!strncmp(GV.getName().data(), "java", 4)) {
- GV.replaceAllUsesWith(Constant::getNullValue(GV.getType()));
+ if (!strcmp(GV.getName().data(), "JnJVM_java_lang_String_charAt__I")) {
+ Function* F = M.getFunction("MMTkCharAt");
+ if (!F)
+ F = Function::Create(GV.getFunctionType(),
+ GlobalValue::ExternalLinkage, "MMTkCharAt", &M);
+ GV.replaceAllUsesWith(F);
+ } else if (!strcmp(GV.getName().data(), "JnJVM_java_lang_Object_getClass__")) {
+ Function* F = M.getFunction("MMTkGetClass");
+ if (!F)
+ F = Function::Create(GV.getFunctionType(),
+ GlobalValue::ExternalLinkage, "MMTkGetClass", &M);
+ GV.replaceAllUsesWith(F);
+ } else {
+ GV.replaceAllUsesWith(Constant::getNullValue(GV.getType()));
+ }
GV.eraseFromParent();
}
}
@@ -95,8 +109,10 @@
Function* Alloc = M.getFunction("JnJVM_org_mmtk_plan_MutatorContext_alloc__IIIII");
Function* PostAlloc = M.getFunction("JnJVM_org_mmtk_plan_MutatorContext_postAlloc__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_ObjectReference_2II");
+ Function* CheckAlloc = M.getFunction("JnJVM_org_mmtk_plan_MutatorContext_checkAllocator__III");
uint32_t AllocIndex = 0;
uint32_t PostAllocIndex = 0;
+ uint32_t CheckAllocIndex = 0;
for (uint32_t i = 0; i < CA->getNumOperands(); ++i) {
ConstantExpr* CE = dyn_cast<ConstantExpr>(CA->getOperand(i));
if (CE) {
@@ -105,6 +121,8 @@
AllocIndex = i;
} else if (C == PostAlloc) {
PostAllocIndex = i;
+ } else if (C == CheckAlloc) {
+ CheckAllocIndex = i;
}
}
}
@@ -121,6 +139,12 @@
C = C->getOperand(0);
new GlobalAlias(C->getType(), GlobalValue::ExternalLinkage, "MMTkPostAlloc",
C, &M);
+
+ C = CA->getOperand(CheckAllocIndex);
+ C = C->getOperand(0);
+ new GlobalAlias(C->getType(), GlobalValue::ExternalLinkage, "MMTkCheckAllocator",
+ C, &M);
+
return Changed;
}
More information about the vmkit-commits
mailing list