[vmkit-commits] [vmkit] r180375 - Fixed bug in release mode. Optimizer was reusing a local variable stack space because it does not know that it is visible from outside the function.
Peter Senna Tschudin
peter.senna at gmail.com
Thu Apr 25 10:04:41 PDT 2013
Author: peter.senna
Date: Thu Apr 25 12:02:56 2013
New Revision: 180375
URL: http://llvm.org/viewvc/llvm-project?rev=180375&view=rev
Log:
Fixed bug in release mode. Optimizer was reusing a local variable stack space because it does not know that it is visible from outside the function.
(cherry picked from commit dbf965c3cab131d6ddec315b4f89023c0a65227a)
Modified:
vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp
vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h
Modified: vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp?rev=180375&r1=180374&r2=180375&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.cpp Thu Apr 25 12:02:56 2013
@@ -335,22 +335,29 @@ UserClass* JnjvmBootstrapLoader::interna
return (UserClass*)cl;
}
-UserClass* JnjvmClassLoader::internalLoad(const UTF8* name, bool doResolve,
- JavaString* strName) {
+UserCommonClass* JnjvmClassLoader::internalLoadCreateClass(const UTF8* name, JavaString* strName)
+{
JavaObject* obj = 0;
llvm_gcroot(strName, 0);
llvm_gcroot(obj, 0);
+
+ UserClass* forCtp = loadClass;
+ if (strName == NULL) {
+ strName = JavaString::internalToJava(name, vm);
+ }
+
+ obj = loadClassMethod->invokeJavaObjectVirtual(vm, forCtp, javaLoader, &strName);
+ return JavaObjectClass::getClass(((JavaObjectClass*)obj));
+}
+
+UserClass* JnjvmClassLoader::internalLoad(const UTF8* name, bool doResolve,
+ JavaString* strName) {
+ llvm_gcroot(strName, 0);
UserCommonClass* cl = lookupClass(name);
if (!cl) {
- UserClass* forCtp = loadClass;
- if (strName == NULL) {
- strName = JavaString::internalToJava(name, vm);
- }
- obj = loadClassMethod->invokeJavaObjectVirtual(vm, forCtp, javaLoader,
- &strName);
- cl = JavaObjectClass::getClass(((JavaObjectClass*)obj));
+ cl = internalLoadCreateClass(name, strName);
}
if (cl && doResolve && cl->isClass()) {
Modified: vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h?rev=180375&r1=180374&r2=180375&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h (original)
+++ vmkit/trunk/lib/j3/VMCore/JnjvmClassLoader.h Thu Apr 25 12:02:56 2013
@@ -69,7 +69,9 @@ private:
///
virtual UserClass* internalLoad(const UTF8* utf8, bool doResolve,
JavaString* strName);
-
+
+ UserCommonClass* internalLoadCreateClass(const UTF8* name, JavaString* strName);
+
/// internalConstructType - Hashes a Typedef, an internal representation of
/// a class still not loaded.
///
More information about the vmkit-commits
mailing list