[vmkit-commits] [vmkit] r73037 - in /vmkit/trunk: include/jnjvm/JnjvmModule.h lib/JnJVM/Compiler/JITInfo.cpp lib/JnJVM/Compiler/JavaAOTCompiler.cpp lib/JnJVM/Compiler/JavaJITCompiler.cpp lib/JnJVM/Compiler/JnjvmModule.cpp lib/JnJVM/LLVMRuntime/runtime-isolate.ll lib/JnJVM/LLVMRuntime/runtime-single.ll lib/JnJVM/VMCore/JavaClass.cpp lib/JnJVM/VMCore/JavaClass.h lib/JnJVM/VMCore/VirtualTables.cpp tools/vmjc/vmjc.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sun Jun 7 14:20:13 PDT 2009
Author: geoffray
Date: Sun Jun 7 16:20:13 2009
New Revision: 73037
URL: http://llvm.org/viewvc/llvm-project?rev=73037&view=rev
Log:
Delete all dynamically generated tracers.
Modified:
vmkit/trunk/include/jnjvm/JnjvmModule.h
vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp
vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp
vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp
vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp
vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-isolate.ll
vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-single.ll
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp
vmkit/trunk/tools/vmjc/vmjc.cpp
Modified: vmkit/trunk/include/jnjvm/JnjvmModule.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/jnjvm/JnjvmModule.h?rev=73037&r1=73036&r2=73037&view=diff
==============================================================================
--- vmkit/trunk/include/jnjvm/JnjvmModule.h (original)
+++ vmkit/trunk/include/jnjvm/JnjvmModule.h Sun Jun 7 16:20:13 2009
@@ -75,8 +75,6 @@
/// virtualSizeLLVM - The LLVM constant size of instances of this class.
///
llvm::ConstantInt* virtualSizeConstant;
- llvm::Function* virtualTracerFunction;
- llvm::Function* staticTracerFunction;
/// virtualType - The LLVM type of instance of this class.
///
const llvm::Type * virtualType;
@@ -87,16 +85,12 @@
public:
llvm::Value* getVirtualSize();
- llvm::Function* getStaticTracer();
- llvm::Function* getVirtualTracer();
const llvm::Type* getVirtualType();
const llvm::Type* getStaticType();
LLVMClassInfo(Class* cl) :
classDef(cl),
virtualSizeConstant(0),
- virtualTracerFunction(0),
- staticTracerFunction(0),
virtualType(0),
staticType(0) {}
};
@@ -232,14 +226,11 @@
static const llvm::Type* JnjvmType;
#endif
-#ifdef WITH_TRACER
- llvm::Function* MarkAndTraceFunction;
- static const llvm::FunctionType* MarkAndTraceType;
- llvm::Function* EmptyTracerFunction;
- llvm::Function* JavaObjectTracerFunction;
- llvm::Function* JavaArrayTracerFunction;
- llvm::Function* ArrayObjectTracerFunction;
-#endif
+ llvm::Function* EmptyTracerFunction;
+ llvm::Function* JavaObjectTracerFunction;
+ llvm::Function* JavaArrayTracerFunction;
+ llvm::Function* ArrayObjectTracerFunction;
+ llvm::Function* RegularObjectTracerFunction;
llvm::Function* GetSJLJBufferFunction;
llvm::Function* InterfaceLookupFunction;
@@ -359,12 +350,6 @@
llvm::ModuleProvider* TheModuleProvider;
JnjvmModule JavaIntrinsics;
-#ifdef WITH_TRACER
- llvm::Function* internalMakeTracer(Class* cl, bool stat);
- void traceAllFields(uint32, JavaField*, llvm::BasicBlock*, llvm::Value*);
- virtual llvm::Function* makeTracer(Class* cl, bool stat) = 0;
-#endif
-
void addJavaPasses();
private:
@@ -505,10 +490,6 @@
virtual llvm::Value* getIsolate(Jnjvm* vm, llvm::Value* Where);
#endif
-#ifdef WITH_TRACER
- virtual llvm::Function* makeTracer(Class* cl, bool stat);
-#endif
-
virtual ~JavaJITCompiler() {}
virtual llvm::Function* addCallback(Class* cl, uint16 index, Signdef* sign,
@@ -567,10 +548,6 @@
private:
-#ifdef WITH_TRACER
- virtual llvm::Function* makeTracer(Class* cl, bool stat);
-#endif
-
//--------------- Static compiler specific functions -----------------------//
llvm::Constant* CreateConstantFromVT(JavaVirtualTable* VT);
llvm::Constant* CreateConstantFromUTF8(const UTF8* val);
@@ -655,7 +632,6 @@
llvm::Function* StaticInitializer;
llvm::Function* ObjectPrinter;
- bool generateTracers;
bool generateStubs;
bool assumeCompiled;
Modified: vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp?rev=73037&r1=73036&r2=73037&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp Sun Jun 7 16:20:13 2009
@@ -105,10 +105,6 @@
uint64 size = JnjvmModule::getTypeSize(structType);
cl->staticSize = size;
-#ifdef WITH_TRACER
- JavaLLVMCompiler* Mod = (JavaLLVMCompiler*)cl->classLoader->getCompiler();
- staticTracerFunction = Mod->makeTracer(cl, true);
-#endif
}
return staticType;
}
@@ -124,20 +120,6 @@
return virtualSizeConstant;
}
-Function* LLVMClassInfo::getStaticTracer() {
- if (!staticTracerFunction) {
- getStaticType();
- }
- return staticTracerFunction;
-}
-
-Function* LLVMClassInfo::getVirtualTracer() {
- if (!virtualTracerFunction) {
- getVirtualType();
- }
- return virtualTracerFunction;
-}
-
Function* LLVMMethodInfo::getMethod() {
if (!methodFunction) {
JnjvmClassLoader* JCL = methodDef->classDef->classLoader;
Modified: vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp?rev=73037&r1=73036&r2=73037&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp Sun Jun 7 16:20:13 2009
@@ -1038,18 +1038,6 @@
// JInfo
ClassElts.push_back(Constant::getNullValue(JnjvmModule::ptrType));
- // staticTracer
- const Type* FTy = STy->getContainedType(STy->getNumContainedTypes() - 1);
-#ifdef WITH_TRACER
- Function* F = getClassInfo(cl)->getStaticTracer();
- assert(F && "No static tracer");
- Constant* staticTracer = ConstantExpr::getCast(Instruction::BitCast, F, FTy);
-#else
- Constant* staticTracer = ConstantExpr::getNullValue(FTy);
-#endif
- ClassElts.push_back(staticTracer);
-
-
return ConstantStruct::get(STy, ClassElts);
}
@@ -1155,7 +1143,6 @@
Elemts.push_back(N);
// Tracer
-#ifdef WITH_TRACER
Function* Tracer = 0;
if (classDef->isArray()) {
if (classDef->asArrayClass()->baseClass()->isPrimitive()) {
@@ -1164,14 +1151,11 @@
Tracer = JavaIntrinsics.ArrayObjectTracerFunction;
}
} else if (classDef->isClass()) {
- Tracer = getClassInfo(classDef->asClass())->getVirtualTracer();
+ Tracer = JavaIntrinsics.RegularObjectTracerFunction;
}
Elemts.push_back(Tracer ?
ConstantExpr::getCast(Instruction::BitCast, Tracer, PTy) : N);
-#else
- Elemts.push_back(N);
-#endif
// Class
Elemts.push_back(ConstantExpr::getCast(Instruction::BitCast,
@@ -1250,16 +1234,6 @@
return Array;
}
-#ifdef WITH_TRACER
-llvm::Function* JavaAOTCompiler::makeTracer(Class* cl, bool stat) {
- if (!generateTracers || (!cl->super && !stat)) {
- return JavaIntrinsics.JavaObjectTracerFunction;
- } else {
- return internalMakeTracer(cl, stat);
- }
-}
-#endif
-
namespace mvm {
llvm::FunctionPass* createEscapeAnalysisPass(llvm::Function*);
}
@@ -1271,7 +1245,6 @@
JavaAOTCompiler::JavaAOTCompiler(const std::string& ModuleID) :
JavaLLVMCompiler(ModuleID) {
- generateTracers = true;
generateStubs = true;
assumeCompiled = false;
compileRT = false;
@@ -1490,9 +1463,6 @@
if (!cl->super) VT->destructor = 0;
- LLVMClassInfo* LCI = getClassInfo(cl);
- if (!LCI->virtualTracerFunction)
- LCI->virtualTracerFunction = makeTracer(cl, false);
}
void JavaAOTCompiler::setMethod(JavaMethod* meth, void* ptr, const char* name) {
@@ -1503,12 +1473,7 @@
void JavaAOTCompiler::setTracer(JavaVirtualTable* VT, uintptr_t ptr,
const char* name) {
- Function* func = Function::Create(JnjvmModule::MarkAndTraceType,
- GlobalValue::ExternalLinkage,
- name, getLLVMModule());
-
- LLVMClassInfo* LCI = getClassInfo(VT->cl->asClass());
- LCI->virtualTracerFunction = func;
+ VT->tracer = (uintptr_t)name;
}
void JavaAOTCompiler::setDestructor(JavaVirtualTable* VT, uintptr_t ptr,
Modified: vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp?rev=73037&r1=73036&r2=73037&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp Sun Jun 7 16:20:13 2009
@@ -138,8 +138,6 @@
JavaVirtualTable* VT = cl->virtualVT;
assert(VT && "No VT was allocated!");
- LLVMClassInfo* LCI = getClassInfo(cl);
-
if (VT->init) {
// The VT hash already been filled by the AOT compiler so there
// is nothing left to do!
@@ -177,28 +175,6 @@
}
}
-#ifdef WITH_TRACER
- if (!LCI->virtualTracerFunction) {
- LCI->virtualTracerFunction = makeTracer(cl, false);
- }
-#endif
-
-}
-
-Function* JavaJITCompiler::makeTracer(Class* cl, bool stat) {
- Function* F = cl->super || stat ?
- internalMakeTracer(cl, stat) : JavaIntrinsics.JavaObjectTracerFunction;
-
- assert(F && "No tracer");
- if (stat) {
- cl->staticTracer = (void (*)(void*)) (uintptr_t)
- JnjvmModule::executionEngine->getPointerToFunction(F);
- } else {
- void* codePtr = mvm::MvmModule::executionEngine->getPointerToFunction(F);
- cl->virtualVT->tracer = (uintptr_t)codePtr;
- }
- F->deleteBody();
- return F;
}
void JavaJITCompiler::setMethod(JavaMethod* meth, void* ptr, const char* name) {
@@ -211,16 +187,6 @@
void JavaJITCompiler::setTracer(JavaVirtualTable* VT, uintptr_t ptr,
const char* name) {
- // So the class has a tracer because either a) the class was vmjced or
- // b) the boot sequence has set it. Create the tracer as an external
- // function.
- Function* func = Function::Create(JnjvmModule::MarkAndTraceType,
- GlobalValue::ExternalLinkage,
- name, getLLVMModule());
-
- JnjvmModule::executionEngine->addGlobalMapping(func, (void*)ptr);
- LLVMClassInfo* LCI = getClassInfo(VT->cl->asClass());
- LCI->virtualTracerFunction = func;
VT->tracer = ptr;
}
Modified: vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp?rev=73037&r1=73036&r2=73037&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JnjvmModule.cpp Sun Jun 7 16:20:13 2009
@@ -28,10 +28,6 @@
using namespace jnjvm;
using namespace llvm;
-#ifdef WITH_TRACER
-const llvm::FunctionType* JnjvmModule::MarkAndTraceType = 0;
-#endif
-
const llvm::Type* JnjvmModule::JavaObjectType = 0;
const llvm::Type* JnjvmModule::JavaArrayType = 0;
const llvm::Type* JnjvmModule::JavaArrayUInt8Type = 0;
@@ -90,95 +86,6 @@
enabledException = true;
}
-void JavaLLVMCompiler::traceAllFields(uint32 nbFields, JavaField* fields,
- BasicBlock* block, Value* realArg) {
- Constant* zero = mvm::MvmModule::constantZero;
- for (uint32 i = 0; i < nbFields; ++i) {
- JavaField& cur = fields[i];
- if (cur.getSignature()->trace()) {
- LLVMFieldInfo* LFI = getFieldInfo(&cur);
- std::vector<Value*> args; //size = 2
- args.push_back(zero);
- args.push_back(LFI->getOffset());
- Value* ptr = GetElementPtrInst::Create(realArg, args.begin(), args.end(),
- "",block);
- Value* val = new LoadInst(ptr, "", block);
- Value* valCast = new BitCastInst(val, JnjvmModule::JavaObjectType, "",
- block);
- std::vector<Value*> Args;
- Args.push_back(valCast);
-#ifdef MULTIPLE_GC
- Args.push_back(GC);
-#endif
- CallInst::Create(JavaIntrinsics.MarkAndTraceFunction, Args.begin(),
- Args.end(), "", block);
- }
- }
-}
-
-#ifdef WITH_TRACER
-llvm::Function* JavaLLVMCompiler::internalMakeTracer(Class* cl, bool stat) {
-
- LLVMClassInfo* LCI = getClassInfo(cl);
- const Type* type = stat ? LCI->getStaticType() : LCI->getVirtualType();
- JavaField* fields = 0;
- uint32 nbFields = 0;
- if (stat) {
- fields = cl->getStaticFields();
- nbFields = cl->nbStaticFields;
- } else {
- fields = cl->getVirtualFields();
- nbFields = cl->nbVirtualFields;
- }
-
- uint32 nbReferenceFields = 0;
- for (uint32 i = 0; i < nbFields; ++i) {
- JavaField& cur = fields[i];
- if (cur.getSignature()->trace()) {
- ++nbReferenceFields;
- }
- }
-
- if (!nbReferenceFields) {
- if (stat) return JavaIntrinsics.EmptyTracerFunction;
- else if (cl->super) return getClassInfo(cl->super)->getVirtualTracer();
- }
-
- Function* func = Function::Create(JnjvmModule::MarkAndTraceType,
- GlobalValue::InternalLinkage,
- "", getLLVMModule());
-
- Argument* arg = func->arg_begin();
- BasicBlock* block = BasicBlock::Create("", func);
- llvm::Value* realArg = new BitCastInst(arg, type, "", block);
-
- std::vector<Value*> Args;
- Args.push_back(arg);
-#ifdef MULTIPLE_GC
- Value* GC = ++func->arg_begin();
- Args.push_back(GC);
-#endif
-
- if (stat) {
- traceAllFields(nbFields, fields, block, realArg);
- } else {
- CallInst::Create(JavaIntrinsics.JavaObjectTracerFunction, Args.begin(),
- Args.end(), "", block);
- Class* cur = cl;
- while (cur->super != 0) {
- traceAllFields(cur->nbVirtualFields, cur->virtualFields, block, realArg);
- cur = cur->super;
- const Type* Ty = getClassInfo(cur)->getVirtualType();
- realArg = new BitCastInst(realArg, Ty, "", block);
- }
- }
-
- ReturnInst::Create(block);
-
- return func;
-}
-#endif
-
void JavaLLVMCompiler::resolveVirtualClass(Class* cl) {
// Lock here because we may be called by a class resolver
mvm::MvmModule::protectIR();
@@ -267,10 +174,6 @@
JavaThreadType =
PointerType::getUnqual(module->getTypeByName("JavaThread"));
-#ifdef WITH_TRACER
- MarkAndTraceType = module->getFunction("MarkAndTrace")->getFunctionType();
-#endif
-
JavaObjectNullConstant = Constant::getNullValue(JnjvmModule::JavaObjectType);
MaxArraySizeConstant = ConstantInt::get(Type::Int32Ty,
JavaArray::MaxArraySize);
@@ -420,13 +323,11 @@
ServiceCallStopFunction = module->getFunction("jnjvmServiceCallStop");
#endif
-#ifdef WITH_TRACER
- MarkAndTraceFunction = module->getFunction("MarkAndTrace");
JavaObjectTracerFunction = module->getFunction("JavaObjectTracer");
EmptyTracerFunction = module->getFunction("EmptyTracer");
JavaArrayTracerFunction = module->getFunction("JavaArrayTracer");
ArrayObjectTracerFunction = module->getFunction("ArrayObjectTracer");
-#endif
+ RegularObjectTracerFunction = module->getFunction("RegularObjectTracer");
#ifndef WITHOUT_VTABLE
VirtualLookupFunction = module->getFunction("jnjvmVirtualTableLookup");
Modified: vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-isolate.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-isolate.ll?rev=73037&r1=73036&r2=73037&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-isolate.ll (original)
+++ vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-isolate.ll Sun Jun 7 16:20:13 2009
@@ -13,7 +13,7 @@
%JavaField*, i16, %JavaField*, i16, %JavaMethod*, i16,
%JavaMethod*, i16, i8*, %ArrayUInt8*, i8*, %Attribut*,
i16, %JavaClass**, i16, %JavaClass*, i16, i8, i8, i32, i32,
- i8*, void (i8*)* }
+ i8* }
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;; Isolate specific methods ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Modified: vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-single.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-single.ll?rev=73037&r1=73036&r2=73037&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-single.ll (original)
+++ vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-single.ll Sun Jun 7 16:20:13 2009
@@ -10,4 +10,4 @@
%JavaField*, i16, %JavaField*, i16, %JavaMethod*, i16,
%JavaMethod*, i16, i8*, %ArrayUInt8*, i8*, %Attribut*,
i16, %JavaClass**, i16, %JavaClass*, i16, i8, i8, i32, i32,
- i8*, void (i8*)* }
+ i8*}
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp?rev=73037&r1=73036&r2=73037&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Sun Jun 7 16:20:13 2009
@@ -232,7 +232,6 @@
outerClass = 0;
innerOuterResolved = false;
nbInnerClasses = 0;
- staticTracer = 0;
nbVirtualMethods = 0;
nbStaticMethods = 0;
nbStaticFields = 0;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h?rev=73037&r1=73036&r2=73037&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Sun Jun 7 16:20:13 2009
@@ -526,10 +526,6 @@
///
mvm::JITInfo* JInfo;
- /// staticTracer - The dynamically generated function that traces the
- /// references of the static instance.
- void (*staticTracer)(void*);
-
/// getVirtualSize - Get the virtual size of instances of this class.
///
uint32 getVirtualSize() const { return virtualSize; }
Modified: vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp?rev=73037&r1=73036&r2=73037&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp Sun Jun 7 16:20:13 2009
@@ -178,7 +178,7 @@
for (uint32 i =0; i < NR_ISOLATES; ++i) {
TaskClassMirror &M = IsolateInfo[i];
- if (M.staticInstance && staticTracer != EmptyTracer) {
+ if (M.staticInstance) {
for (uint32 i = 0; i < nbStaticFields; ++i) {
JavaField& field = staticFields[i];
if (field.isReference()) {
Modified: vmkit/trunk/tools/vmjc/vmjc.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/vmjc/vmjc.cpp?rev=73037&r1=73036&r2=73037&view=diff
==============================================================================
--- vmkit/trunk/tools/vmjc/vmjc.cpp (original)
+++ vmkit/trunk/tools/vmjc/vmjc.cpp Sun Jun 7 16:20:13 2009
@@ -99,10 +99,6 @@
cl::desc("Disable Java exceptions"));
static cl::opt<bool>
-DisableTracers("disable-tracers",
- cl::desc("Disable Java tracers"));
-
-static cl::opt<bool>
DisableStubs("disable-stubs",
cl::desc("Disable Java stubs"));
@@ -226,7 +222,6 @@
JavaAOTCompiler* MAOT = (JavaAOTCompiler*)Comp;
if (DisableExceptions) MAOT->disableExceptions();
- if (DisableTracers) MAOT->generateTracers = false;
if (DisableStubs) MAOT->generateStubs = false;
if (AssumeCompiled) MAOT->assumeCompiled = true;
MAOT->compileFile(JCL, InputFilename.c_str());
More information about the vmkit-commits
mailing list