[vmkit-commits] [vmkit] r180527 - Preparing branch for merge with master.
Peter Senna Tschudin
peter.senna at gmail.com
Thu Apr 25 10:22:52 PDT 2013
Author: peter.senna
Date: Thu Apr 25 12:20:26 2013
New Revision: 180527
URL: http://llvm.org/viewvc/llvm-project?rev=180527&view=rev
Log:
Preparing branch for merge with master.
(cherry picked from commit a729b9c678be527c1f87534ad71d5347c1f5f327)
Modified:
vmkit/trunk/lib/j3/ClassLib/Classpath.h.in
vmkit/trunk/lib/j3/VMCore/JavaArray.h
vmkit/trunk/lib/j3/VMCore/JavaClass.cpp
vmkit/trunk/lib/j3/VMCore/JavaClass.h
vmkit/trunk/lib/j3/VMCore/JavaMetaJIT.cpp
vmkit/trunk/lib/j3/VMCore/JavaObject.cpp
vmkit/trunk/lib/j3/VMCore/JavaThread.h
vmkit/trunk/lib/j3/VMCore/Jni.cpp
vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp
vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp
vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h
vmkit/trunk/lib/vmkit/CommonThread/ObjectLocks.cpp
vmkit/trunk/lib/vmkit/Compiler/JIT.cpp
vmkit/trunk/mmtk/inline/InlineMethods.cpp
vmkit/trunk/tools/precompiler/Precompiler.cpp
Modified: vmkit/trunk/lib/j3/ClassLib/Classpath.h.in
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/Classpath.h.in?rev=180527&r1=180526&r2=180527&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/Classpath.h.in (original)
+++ vmkit/trunk/lib/j3/ClassLib/Classpath.h.in Thu Apr 25 12:20:26 2013
@@ -8,7 +8,7 @@
//===----------------------------------------------------------------------===//
// Historically has been included here, keep it for now
-#include "jni.h"
+#include "j3/jni.h"
#include "vmkit/System.h"
#ifndef USE_OPENJDK
Modified: vmkit/trunk/lib/j3/VMCore/JavaArray.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaArray.h?rev=180527&r1=180526&r2=180527&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaArray.h (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaArray.h Thu Apr 25 12:20:26 2013
@@ -80,7 +80,6 @@ public:
template<>
void TJavaArray<JavaObject*>::setElement(TJavaArray<JavaObject*>* self, JavaObject* value, uint32_t i);
-
typedef TJavaArray<JavaObject*> ArrayObject;
/// Instantiation of the TJavaArray class for Java arrays.
Modified: vmkit/trunk/lib/j3/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaClass.cpp?rev=180527&r1=180526&r2=180527&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaClass.cpp Thu Apr 25 12:20:26 2013
@@ -17,7 +17,7 @@
#include "ClasspathReflect.h"
#include "JavaArray.h"
#include "JavaClass.h"
-#include "JavaCompiler.h"
+#include "j3/JavaCompiler.h"
#include "JavaString.h"
#include "JavaConstantPool.h"
#include "JavaObject.h"
@@ -30,6 +30,7 @@
#include <cstring>
#include <cstdlib>
+#include <algorithm>
#if 0
using namespace vmkit;
@@ -84,17 +85,16 @@ extern "C" bool IsSubtypeIntrinsic(JavaV
return obj->isSubtypeOf(clazz);
}
-static int compJavaVirtualTable (const void * elem1, const void * elem2) {
- void * f = *((void**)elem1);
- void * s = *((void**)elem2);
- if (f > s) return 1;
- if (f < s) return -1;
- return 0;
+static bool LessThanPtrVirtualTable (JavaVirtualTable * elem1, JavaVirtualTable * elem2) {
+ return elem1 < elem2;
+}
+
+static bool equalsPtrVirtualTable (JavaVirtualTable * elem1, JavaVirtualTable * elem2) {
+ return elem1 == elem2;
}
JavaAttribute::JavaAttribute(const UTF8* name, uint32 length,
uint32 offset) {
-
this->start = offset;
this->nbb = length;
this->name = name;
@@ -871,6 +871,30 @@ static void computeMirandaMethods(Class*
}
}
+static bool lessThanJavaMethods (JavaMethod* a,JavaMethod* b) {
+ bool flag = a->name->lessThan(b->name);
+ if (!flag) {
+ flag = a->name->equals(b->name);
+ if (flag) {
+ flag = a->type->lessThan(b->type);
+ }
+ }
+ return flag;
+}
+
+static bool cmpJavaMethods (JavaMethod* a,JavaMethod* b) {
+ bool flag = a->name->equals(b->name) && a->type->equals(b->type);
+ return flag;
+}
+
+static void cleanMirandaMethods(std::vector<JavaMethod*>& mirandaMethods) {
+ std::sort(mirandaMethods.begin(), mirandaMethods.end(), lessThanJavaMethods);
+ // using predicate comparison:
+ std::vector<JavaMethod*>::iterator it;
+ it = std::unique (mirandaMethods.begin(), mirandaMethods.end(), cmpJavaMethods); // (no changes)
+ mirandaMethods.resize( std::distance(mirandaMethods.begin(),it) ); // 10 20 30 20 10
+}
+
void Class::readMethods(Reader& reader) {
uint32 nbMethods = reader.readU2();
@@ -906,13 +930,14 @@ void Class::readMethods(Reader& reader)
std::vector<JavaMethod*> mirandaMethods;
computeMirandaMethods(this, this, mirandaMethods);
uint32 size = mirandaMethods.size();
+ if (size > 100) {
+ cleanMirandaMethods(mirandaMethods);
+ size = mirandaMethods.size();
+ }
nbMethods += size;
JavaMethod* realMethods =
new(classLoader->allocator, "Methods") JavaMethod[nbMethods];
- if (nbMethods < size) {
- printf("Error in class %s\n", UTF8Buffer(name).cString());
- }
memcpy(realMethods + size, virtualMethods,
sizeof(JavaMethod) * (nbMethods - size));
@@ -1527,15 +1552,9 @@ JavaVirtualTable::JavaVirtualTable(Class
}
if (nbSecondaryTypes) {
- qsort(secondaryTypes, nbSecondaryTypes, sizeof(JavaVirtualTable*), compJavaVirtualTable);
- lastIndex = 1;
- JavaVirtualTable* temp = secondaryTypes[0];
- for (uint32 i = 1 ; i < nbSecondaryTypes ; i++ )
- if (secondaryTypes[i] != temp) {
- secondaryTypes[lastIndex++] = secondaryTypes[i];
- temp = secondaryTypes[i];
- }
- nbSecondaryTypes = lastIndex;
+ std::sort(secondaryTypes, &secondaryTypes[nbSecondaryTypes],LessThanPtrVirtualTable);
+ JavaVirtualTable** it = std::unique (secondaryTypes, &secondaryTypes[nbSecondaryTypes], equalsPtrVirtualTable); // (no changes)
+ nbSecondaryTypes = std::distance(secondaryTypes,it);
//isSortedSecondaryTypes = true;
}
@@ -1774,15 +1793,9 @@ JavaVirtualTable::JavaVirtualTable(Class
// array to point to java.lang.Object[]'s secondary list.
}
if (offset == getCacheIndex() && nbSecondaryTypes) {
- qsort(secondaryTypes, nbSecondaryTypes, sizeof(JavaVirtualTable*), compJavaVirtualTable);
- uint32 lastIndex = 1;
- JavaVirtualTable* temp = secondaryTypes[0];
- for (uint32 i = 1 ; i < nbSecondaryTypes ; ++i )
- if (secondaryTypes[i] != temp) {
- secondaryTypes[lastIndex++] = secondaryTypes[i];
- temp = secondaryTypes[i];
- }
- nbSecondaryTypes = lastIndex;
+ std::sort(secondaryTypes, &secondaryTypes[nbSecondaryTypes],LessThanPtrVirtualTable);
+ JavaVirtualTable** it = std::unique (secondaryTypes, &secondaryTypes[nbSecondaryTypes], equalsPtrVirtualTable); // (no changes)
+ nbSecondaryTypes = std::distance(secondaryTypes,it);
//isSortedSecondaryTypes = true;
}
}
@@ -2168,7 +2181,6 @@ JavaObject* AnnotationReader::createAnno
Jnjvm * vm = JavaThread::get()->getJVM();
Classpath* upcalls = vm->upcalls;
UserClass* HashMap = upcalls->newHashMap;
-
newHashMap = HashMap->doNew(vm);
upcalls->initHashMap->invokeIntSpecial(vm, HashMap, newHashMap);
Modified: vmkit/trunk/lib/j3/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaClass.h?rev=180527&r1=180526&r2=180527&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaClass.h Thu Apr 25 12:20:26 2013
@@ -468,7 +468,7 @@ public:
/// nbVirtualMethods - The number of virtual methods.
///
- uint16 nbVirtualMethods;
+ uint32 nbVirtualMethods;
/// staticMethods - List of all the static methods defined by this class.
///
Modified: vmkit/trunk/lib/j3/VMCore/JavaMetaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaMetaJIT.cpp?rev=180527&r1=180526&r2=180527&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaMetaJIT.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaMetaJIT.cpp Thu Apr 25 12:20:26 2013
@@ -9,7 +9,7 @@
#include <cstdarg>
#include <cstring>
-#include "jni.h"
+#include "j3/jni.h"
#include "debug.h"
Modified: vmkit/trunk/lib/j3/VMCore/JavaObject.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaObject.cpp?rev=180527&r1=180526&r2=180527&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaObject.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaObject.cpp Thu Apr 25 12:20:26 2013
@@ -21,7 +21,7 @@
#include "Jnjvm.h"
#include "VMStaticInstance.h"
-#include "jni.h"
+#include "j3/jni.h"
#include "debug.h"
using namespace j3;
Modified: vmkit/trunk/lib/j3/VMCore/JavaThread.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaThread.h?rev=180527&r1=180526&r2=180527&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaThread.h (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaThread.h Thu Apr 25 12:20:26 2013
@@ -181,6 +181,9 @@ public:
/// throwFromJNI - Throw an exception after executing JNI code.
///
void throwFromJNI(word_t SP) {
+ /* DEBUG*/
+ endKnownFrame();
+ enterUncooperativeCode(SP);
// Nothing to do. The RETURN_FROM_JNI will take care of it.
}
Modified: vmkit/trunk/lib/j3/VMCore/Jni.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/Jni.cpp?rev=180527&r1=180526&r2=180527&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/Jni.cpp Thu Apr 25 12:20:26 2013
@@ -7,7 +7,7 @@
//
//===----------------------------------------------------------------------===//
-#include "jni.h"
+#include "j3/jni.h"
#include "vmkit/System.h"
Modified: vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp?rev=180527&r1=180526&r2=180527&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp Thu Apr 25 12:20:26 2013
@@ -25,7 +25,7 @@
#include "ClasspathReflect.h"
#include "JavaArray.h"
#include "JavaClass.h"
-#include "JavaCompiler.h"
+#include "j3/JavaCompiler.h"
#include "JavaConstantPool.h"
#include "JavaString.h"
#include "JavaThread.h"
@@ -45,6 +45,27 @@ const char* Jnjvm::dirSeparator = "/";
const char* Jnjvm::envSeparator = ":";
const unsigned int Jnjvm::Magic = 0xcafebabe;
+/**
+ * In JVM specification, the virtual machine should execute some code when
+ * the application finish.
+ * See Runtime.addShutdownHook
+ * In GNUClasspath the default behavior when the program call System.exit
+ * is to execute such a code.
+ * Hence, the only mission of this thread is to call System.exit when
+ * the user press Ctrl_C
+ */
+void threadToDetectCtrl_C(vmkit::Thread* th) {
+ while (!vmkit::finishForCtrl_C) {
+ vmkit::lockForCtrl_C.lock();
+ vmkit::condForCtrl_C.wait(&vmkit::lockForCtrl_C);
+ vmkit::lockForCtrl_C.unlock(th);
+ }
+ JavaThread* kk = (JavaThread*)th;
+ UserClass* cl = kk->getJVM()->upcalls->SystemClass;
+ kk->getJVM() -> upcalls->SystemExit->invokeIntStatic(kk->getJVM(), cl, 0);
+}
+
+
/// initialiseClass - Java class initialization. Java specification §2.17.5.
void UserClass::initialiseClass(Jnjvm* vm) {
@@ -971,7 +992,17 @@ void ClArgumentsInfo::readArgs(Jnjvm* vm
char* path = &cur[16];
vm->bootstrapLoader->analyseClasspathEnv(path);
}
- } else if (!(strcmp(cur, "-enableassertions"))) {
+ }
+ else if (!(strncmp(cur, "-Xbootclasspath/a:", 18))) {
+ uint32 len = strlen(cur);
+ if (len == 18) {
+ printInformation();
+ } else {
+ char* path = &cur[18];
+ vm->bootstrapLoader->analyseClasspathEnv(path);
+ }
+ }
+ else if (!(strcmp(cur, "-enableassertions"))) {
nyi();
} else if (!(strcmp(cur, "-ea"))) {
nyi();
@@ -1311,6 +1342,9 @@ void Jnjvm::runApplication(int argc, cha
argumentsInfo.argv = argv;
mainThread = new JavaThread(this);
mainThread->start((void (*)(vmkit::Thread*))mainJavaStart);
+
+ JavaThread* th = new JavaThread(this);
+ th->start((void (*)(vmkit::Thread*))threadToDetectCtrl_C);
}
Jnjvm::Jnjvm(vmkit::BumpPtrAllocator& Alloc,
Modified: vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp?rev=180527&r1=180526&r2=180527&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp Thu Apr 25 12:20:26 2013
@@ -32,7 +32,7 @@
#include "Classpath.h"
#include "ClasspathReflect.h"
#include "JavaClass.h"
-#include "JavaCompiler.h"
+#include "j3/JavaCompiler.h"
#include "JavaConstantPool.h"
#include "JavaString.h"
#include "JavaThread.h"
@@ -324,9 +324,11 @@ UserClass* JnjvmBootstrapLoader::interna
if (slash) {
int packagelen = slash - cname;
const UTF8 * package = name->extract(hashUTF8, 0, packagelen);
+ //classes->lock.lock();
lock.lock();
packages.insert(package);
lock.unlock();
+ //classes->lock.unlock();
}
}
@@ -622,7 +624,7 @@ UserClass* JnjvmClassLoader::constructCl
JavaObject* excp = NULL;
llvm_gcroot(excp, 0);
UserClass* res = NULL;
- lock.lock();
+ lock2.lock();
classes->lock.lock();
res = (UserClass*) classes->map.lookup(name);
classes->lock.unlock();
@@ -645,7 +647,7 @@ UserClass* JnjvmClassLoader::constructCl
JavaThread::get()->clearException();
} END_CATCH;
}
- lock.unlock();
+ lock2.unlock();
if (excp != NULL) {
JavaThread::get()->throwException(excp);
}
Modified: vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h?rev=180527&r1=180526&r2=180527&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h (original)
+++ vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h Thu Apr 25 12:20:26 2013
@@ -22,6 +22,7 @@
#include "vmkit/VirtualMachine.h"
#include "JavaObject.h"
+#include "JavaArray.h"
#include "JnjvmConfig.h"
#include "UTF8.h"
@@ -115,10 +116,15 @@ protected:
///
SignMap* javaSignatures;
- /// lock - Lock when loading classes.
+ /// lock - Lock when adding packages and Strings.
///
vmkit::LockRecursive lock;
+ /// lock2 - Lock when loading classes.
+ ///
+ vmkit::LockRecursive lock2;
+
+
/// registeredNatives - Stores the native function pointers corresponding
/// to methods that were defined through JNI's RegisterNatives mechanism.
///
Modified: vmkit/trunk/lib/vmkit/CommonThread/ObjectLocks.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/vmkit/CommonThread/ObjectLocks.cpp?rev=180527&r1=180526&r2=180527&view=diff
==============================================================================
--- vmkit/trunk/lib/vmkit/CommonThread/ObjectLocks.cpp (original)
+++ vmkit/trunk/lib/vmkit/CommonThread/ObjectLocks.cpp Thu Apr 25 12:20:26 2013
@@ -45,7 +45,7 @@ void ThinLock::overflowThinLock(gc* obje
/// initialise - Initialise the value of the lock.
///
-#if 1
+#if 0
// Disable fat lock deflation code in ObjectLocks.cpp
// Fixes occasional assertion failure when running on multi-core machine.
void ThinLock::removeFatLock(FatLock* fatLock, LockSystem& table) {
@@ -156,7 +156,7 @@ void ThinLock::acquire(gc* object, LockS
if (obj->acquire(object, table)) {
assert((object->header() & FatMask) && "Inconsistent lock");
assert((table.getFatLockFromID(object->header()) == obj) && "Inconsistent lock");
- assert(owner(object, table) && "Not owner after acquring fat lock!");
+ assert(owner(object, table) && "Not owner after acquiring fat lock!");
break;
}
}
@@ -303,7 +303,7 @@ void FatLock::release(gc* obj, LockSyste
llvm_gcroot(obj, 0);
assert(associatedObject && "No associated object when releasing");
assert(associatedObject == obj && "Mismatch object in lock");
-#if 1
+#if 0
// Disable fat lock deflation code in ObjectLocks.cpp
// Fixes occasional assertion failure when running on multi-core machine.
if (!waitingThreads && !lockingThreads &&
@@ -441,6 +441,7 @@ bool LockingThread::wait(
}
this->state = LockingThread::StateWaiting;
+
if (l->firstThread) {
assert(l->firstThread->prevWaiting && l->firstThread->nextWaiting &&
"Inconsistent list");
@@ -503,7 +504,7 @@ bool LockingThread::wait(
this->nextWaiting = NULL;
this->prevWaiting = NULL;
} else {
- assert(!this->prevWaiting && "Inconstitent state");
+ assert(!this->prevWaiting && "Inconsistent state");
// Notify lost, notify someone else.
notify(self, table);
}
Modified: vmkit/trunk/lib/vmkit/Compiler/JIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/vmkit/Compiler/JIT.cpp?rev=180527&r1=180526&r2=180527&view=diff
==============================================================================
--- vmkit/trunk/lib/vmkit/Compiler/JIT.cpp (original)
+++ vmkit/trunk/lib/vmkit/Compiler/JIT.cpp Thu Apr 25 12:20:26 2013
@@ -162,37 +162,37 @@ static void addPass(FunctionPassManager
//
static void AddStandardCompilePasses(FunctionPassManager* PM) {
-// addPass(PM, createCFGSimplificationPass()); // Clean up disgusting code
-// addPass(PM, createPromoteMemoryToRegisterPass());// Kill useless allocas
-//
-// addPass(PM, createInstructionCombiningPass()); // Cleanup for scalarrepl.
-// addPass(PM, createScalarReplAggregatesPass()); // Break up aggregate allocas
-// addPass(PM, createInstructionCombiningPass()); // Cleanup for scalarrepl.
-// addPass(PM, createJumpThreadingPass()); // Thread jumps.
-// addPass(PM, createCFGSimplificationPass()); // Merge & remove BBs
-// addPass(PM, createInstructionCombiningPass()); // Combine silly seq's
-//
-// addPass(PM, createCFGSimplificationPass()); // Merge & remove BBs
-// addPass(PM, createReassociatePass()); // Reassociate expressions
-// addPass(PM, createLoopRotatePass()); // Rotate loops.
-// addPass(PM, createLICMPass()); // Hoist loop invariants
-// addPass(PM, createLoopUnswitchPass()); // Unswitch loops.
-// addPass(PM, createInstructionCombiningPass());
-// addPass(PM, createIndVarSimplifyPass()); // Canonicalize indvars
-// addPass(PM, createLoopDeletionPass()); // Delete dead loops
-// addPass(PM, createLoopUnrollPass()); // Unroll small loops*/
-// addPass(PM, createInstructionCombiningPass()); // Clean up after the unroller
-// addPass(PM, createGVNPass()); // Remove redundancies
-// addPass(PM, createMemCpyOptPass()); // Remove memcpy / form memset
-// addPass(PM, createSCCPPass()); // Constant prop with SCCP
+ addPass(PM, createCFGSimplificationPass()); // Clean up disgusting code
+ addPass(PM, createPromoteMemoryToRegisterPass());// Kill useless allocas
+
+ addPass(PM, createInstructionCombiningPass()); // Cleanup for scalarrepl.
+ addPass(PM, createScalarReplAggregatesPass()); // Break up aggregate allocas
+ addPass(PM, createInstructionCombiningPass()); // Cleanup for scalarrepl.
+ addPass(PM, createJumpThreadingPass()); // Thread jumps.
+ addPass(PM, createCFGSimplificationPass()); // Merge & remove BBs
+ addPass(PM, createInstructionCombiningPass()); // Combine silly seq's
+
+ addPass(PM, createCFGSimplificationPass()); // Merge & remove BBs
+ addPass(PM, createReassociatePass()); // Reassociate expressions
+ addPass(PM, createLoopRotatePass()); // Rotate loops.
+ addPass(PM, createLICMPass()); // Hoist loop invariants
+ addPass(PM, createLoopUnswitchPass()); // Unswitch loops.
+ addPass(PM, createInstructionCombiningPass());
+ addPass(PM, createIndVarSimplifyPass()); // Canonicalize indvars
+ addPass(PM, createLoopDeletionPass()); // Delete dead loops
+ addPass(PM, createLoopUnrollPass()); // Unroll small loops*/
+ addPass(PM, createInstructionCombiningPass()); // Clean up after the unroller
+ addPass(PM, createGVNPass()); // Remove redundancies
+ addPass(PM, createMemCpyOptPass()); // Remove memcpy / form memset
+ addPass(PM, createSCCPPass()); // Constant prop with SCCP
// Run instcombine after redundancy elimination to exploit opportunities
// opened up by them.
-// addPass(PM, createInstructionCombiningPass());
-// addPass(PM, createJumpThreadingPass()); // Thread jumps
-// addPass(PM, createDeadStoreEliminationPass()); // Delete dead stores
-// addPass(PM, createAggressiveDCEPass()); // Delete dead instructions
-// addPass(PM, createCFGSimplificationPass()); // Merge & remove BBs
+ addPass(PM, createInstructionCombiningPass());
+ addPass(PM, createJumpThreadingPass()); // Thread jumps
+ addPass(PM, createDeadStoreEliminationPass()); // Delete dead stores
+ addPass(PM, createAggressiveDCEPass()); // Delete dead instructions
+ addPass(PM, createCFGSimplificationPass()); // Merge & remove BBs
}
namespace vmkit {
Modified: vmkit/trunk/mmtk/inline/InlineMethods.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/inline/InlineMethods.cpp?rev=180527&r1=180526&r2=180527&view=diff
==============================================================================
--- vmkit/trunk/mmtk/inline/InlineMethods.cpp (original)
+++ vmkit/trunk/mmtk/inline/InlineMethods.cpp Thu Apr 25 12:20:26 2013
@@ -50,10 +50,7 @@ extern "C" void MMTk_InlineMethods(llvm:
}
namespace vmkit {
-
-extern "C" void makeLLVMFunctions_FinalMMTk(llvm::Module* mod)
-{
- MMTk_InlineMethods(mod);
-}
-
+ extern "C" void vmkit::makeLLVMFunctions_FinalMMTk(llvm::Module* module) {
+ MMTk_InlineMethods(module);
+ }
}
Modified: vmkit/trunk/tools/precompiler/Precompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/precompiler/Precompiler.cpp?rev=180527&r1=180526&r2=180527&view=diff
==============================================================================
--- vmkit/trunk/tools/precompiler/Precompiler.cpp (original)
+++ vmkit/trunk/tools/precompiler/Precompiler.cpp Thu Apr 25 12:20:26 2013
@@ -33,12 +33,6 @@
using namespace j3;
using namespace vmkit;
-#include "FrametablesExterns.inc"
-
-CompiledFrames* frametables[] = {
- #include "FrametablesSymbols.inc"
- NULL
-};
static void mainCompilerLoaderStart(JavaThread* th) {
Jnjvm* vm = th->getJVM();
@@ -80,7 +74,7 @@ int main(int argc, char **argv, char **e
JavaJITCompiler* JIT = JavaJITCompiler::CreateCompiler("JIT");
JnjvmBootstrapLoader* loader = new(Allocator, "Bootstrap loader")
JnjvmBootstrapLoader(Allocator, JIT, true);
- Jnjvm* vm = new(Allocator, "VM") Jnjvm(Allocator, frametables, loader);
+ Jnjvm* vm = new(Allocator, "VM") Jnjvm(Allocator, initialFrametables, loader);
// Run the application.
vm->runApplication(argc, argv);
More information about the vmkit-commits
mailing list