[vmkit-commits] [vmkit] r105940 - in /vmkit/trunk: lib/J3/Classpath/ lib/J3/Compiler/ lib/J3/VMCore/ mmtk/mmtk-j3/
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Mon Jun 14 11:12:40 PDT 2010
Author: geoffray
Date: Mon Jun 14 13:12:40 2010
New Revision: 105940
URL: http://llvm.org/viewvc/llvm-project?rev=105940&view=rev
Log:
Make methods on JavaString static instead of virtual.
Modified:
vmkit/trunk/lib/J3/Classpath/ClasspathVMClassLoader.inc
vmkit/trunk/lib/J3/Classpath/ClasspathVMRuntime.inc
vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc
vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp
vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
vmkit/trunk/lib/J3/VMCore/JavaObject.h
vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp
vmkit/trunk/lib/J3/VMCore/JavaString.cpp
vmkit/trunk/lib/J3/VMCore/JavaString.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/LockedMap.cpp
vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp
vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp
vmkit/trunk/mmtk/mmtk-j3/Strings.cpp
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMClassLoader.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMClassLoader.inc?rev=105940&r1=105939&r2=105940&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMClassLoader.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMClassLoader.inc Mon Jun 14 13:12:40 2010
@@ -139,7 +139,7 @@
JnjvmClassLoader* JCL =
JnjvmClassLoader::getJnjvmLoaderFromJavaObject(loader, vm);
- const UTF8* name = str->javaToInternal(JCL->hashUTF8);
+ const UTF8* name = JavaString::javaToInternal(str, JCL->hashUTF8);
UserCommonClass* cl = JCL->lookupClass(name);
if (!cl) {
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMRuntime.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMRuntime.inc?rev=105940&r1=105939&r2=105940&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMRuntime.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMRuntime.inc Mon Jun 14 13:12:40 2010
@@ -49,7 +49,7 @@
Jnjvm* vm = JavaThread::get()->getJVM();
- utf8Lib = strLib->value;
+ utf8Lib = JavaString::getValue(strLib);
uint32 stLib = strLib->offset;
sint32 lgLib = strLib->count;
sint32 lgPre = vm->bootstrapLoader->prelib->size;
@@ -118,7 +118,7 @@
JnjvmClassLoader* loader =
JnjvmClassLoader::getJnjvmLoaderFromJavaObject(javaLoader, vm);
- char* buf = str->strToAsciiz();
+ char* buf = JavaString::strToAsciiz(str);
res = loader->loadLib(buf);
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc?rev=105940&r1=105939&r2=105940&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc Mon Jun 14 13:12:40 2010
@@ -47,9 +47,7 @@
assert(vmThread && "Didn't fix the vmThread of a j3 thread");
vmThread->setVmdata(thread);
- UserClass* vmthClass = (UserClass*)JavaObject::getClass(vmThread);
- ThreadSystem& ts = vm->threadSystem;
-
+ UserClass* vmthClass = (UserClass*)JavaObject::getClass(vmThread);
javaThread = thread->javaThread;
assert(javaThread && "Didn't fix the javaThread of a j3 thread");
Modified: vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp?rev=105940&r1=105939&r2=105940&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp Mon Jun 14 13:12:40 2010
@@ -383,7 +383,7 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- array = obj->strToArray(vm);
+ array = JavaString::strToArray(obj, vm);
res = vm->constructString(array);
END_NATIVE_EXCEPTION
@@ -534,7 +534,7 @@
BEGIN_NATIVE_EXCEPTION(0)
- char* buf = str->strToAsciiz();
+ char* buf = JavaString::strToAsciiz(str);
char* res = getenv(buf);
delete[] buf;
if (res) {
Modified: vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp?rev=105940&r1=105939&r2=105940&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp Mon Jun 14 13:12:40 2010
@@ -730,8 +730,9 @@
Elmts.push_back(CreateConstantForBaseObject(cl));
- Constant* Array = CreateConstantFromIntArray<ArrayUInt16>(str->value,
- Type::getInt16Ty(getLLVMContext()));
+ Constant* Array =
+ CreateConstantFromIntArray<ArrayUInt16>(JavaString::getValue(str),
+ Type::getInt16Ty(getLLVMContext()));
Module& Mod = *getLLVMModule();
Modified: vmkit/trunk/lib/J3/VMCore/JavaObject.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaObject.h?rev=105940&r1=105939&r2=105940&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaObject.h (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaObject.h Mon Jun 14 13:12:40 2010
@@ -241,6 +241,7 @@
/// getClass - Returns the class of this object.
///
static UserCommonClass* getClass(const JavaObject* self) {
+ llvm_gcroot(self, 0);
return ((JavaVirtualTable*)self->getVirtualTable())->cl;
}
@@ -301,7 +302,7 @@
#define verifyNull(obj) {}
#else
#define verifyNull(obj) \
- if (obj == 0) JavaThread::get()->getJVM()->nullPointerException();
+ if (obj == NULL) JavaThread::get()->getJVM()->nullPointerException();
#endif
/// lockObj - Get the LockObj if the lock is a fat lock.
Modified: vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp?rev=105940&r1=105939&r2=105940&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp Mon Jun 14 13:12:40 2010
@@ -341,8 +341,6 @@
// Update the number of references.
th->currentAddedReferences = *oldLRN;
-
-
}
extern "C" void* j3StartJNI(uint32* localReferencesNumber,
Modified: vmkit/trunk/lib/J3/VMCore/JavaString.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaString.cpp?rev=105940&r1=105939&r2=105940&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaString.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaString.cpp Mon Jun 14 13:12:40 2010
@@ -22,11 +22,10 @@
JavaString* JavaString::stringDup(const ArrayUInt16*& _array, Jnjvm* vm) {
JavaString* res = 0;
- const ArrayUInt16* array = 0;
+ const ArrayUInt16* array = _array;
llvm_gcroot(array, 0);
llvm_gcroot(res, 0);
- array = _array;
UserClass* cl = vm->upcalls->newString;
res = (JavaString*)cl->doNew(vm);
@@ -37,38 +36,38 @@
// No need to call the Java function: both the Java function and
// this function do the same thing.
- res->value = array;
+ setValue(res, array);
res->count = ArrayUInt16::getSize(array);
res->offset = 0;
res->cachedHashCode = 0;
return res;
}
-char* JavaString::strToAsciiz() {
- char* buf = new char[count + 1];
- for (sint32 i = 0; i < count; ++i) {
- buf[i] = ArrayUInt16::getElement(value, i + offset);
+char* JavaString::strToAsciiz(JavaString* self) {
+ llvm_gcroot(self, 0);
+ char* buf = new char[self->count + 1];
+ for (sint32 i = 0; i < self->count; ++i) {
+ buf[i] = ArrayUInt16::getElement(getValue(self), i + self->offset);
}
- buf[count] = 0;
+ buf[self->count] = 0;
return buf;
}
-const ArrayUInt16* JavaString::strToArray(Jnjvm* vm) {
- JavaString* self = this;
+const ArrayUInt16* JavaString::strToArray(JavaString* self, Jnjvm* vm) {
ArrayUInt16* array = 0;
llvm_gcroot(self, 0);
llvm_gcroot(array, 0);
- assert(self->value && "String without an array?");
- if (self->offset || (self->count != ArrayUInt16::getSize(self->value))) {
+ assert(getValue(self) && "String without an array?");
+ if (self->offset || (self->count != ArrayUInt16::getSize(getValue(self)))) {
array = (ArrayUInt16*)vm->upcalls->ArrayOfChar->doNew(self->count, vm);
- for (sint32 i = 0; i < count; i++) {
+ for (sint32 i = 0; i < self->count; i++) {
ArrayUInt16::setElement(
- array, ArrayUInt16::getElement(value, i + self->offset), i);
+ array, ArrayUInt16::getElement(getValue(self), i + self->offset), i);
}
return array;
} else {
- return self->value;
+ return getValue(self);
}
}
@@ -77,7 +76,7 @@
Jnjvm* vm = JavaThread::get()->getJVM();
assert(vm && "No vm when destroying a string");
- if (str->value) vm->hashStr.removeUnlocked(str->value, str);
+ if (getValue(str) != NULL) vm->hashStr.removeUnlocked(getValue(str), str);
}
JavaString* JavaString::internalToJava(const UTF8* name, Jnjvm* vm) {
@@ -99,14 +98,13 @@
return vm->constructString(array);
}
-const UTF8* JavaString::javaToInternal(UTF8Map* map) const {
- const JavaString* self = this;
+const UTF8* JavaString::javaToInternal(const JavaString* self, UTF8Map* map) {
llvm_gcroot(self, 0);
uint16* java = new uint16[self->count];
- for (sint32 i = 0; i < count; ++i) {
- uint16 cur = ArrayUInt16::getElement(self->value, offset + i);
+ for (sint32 i = 0; i < self->count; ++i) {
+ uint16 cur = ArrayUInt16::getElement(getValue(self), self->offset + i);
if (cur == '.') java[i] = '/';
else java[i] = cur;
}
Modified: vmkit/trunk/lib/J3/VMCore/JavaString.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaString.h?rev=105940&r1=105939&r2=105940&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaString.h (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaString.h Mon Jun 14 13:12:40 2010
@@ -21,13 +21,23 @@
class Jnjvm;
class JavaString : public JavaObject {
-public:
-
+private:
// CLASSPATH FIELDS!!
const ArrayUInt16* value;
+public:
sint32 count;
sint32 cachedHashCode;
sint32 offset;
+
+ static void setValue(JavaString* self, const ArrayUInt16* array) {
+ llvm_gcroot(self, 0);
+ llvm_gcroot(array, 0);
+ self->value = array;
+ }
+ static const ArrayUInt16* getValue(const JavaString* self) {
+ llvm_gcroot(self, 0);
+ return self->value;
+ }
static JavaString* stringDup(const ArrayUInt16*& array, Jnjvm* vm);
@@ -39,11 +49,11 @@
static JavaString* internalToJava(const UTF8* utf8, Jnjvm* vm);
static void stringDestructor(JavaString*);
- char* strToAsciiz();
- const ArrayUInt16* strToArray(Jnjvm* vm);
+ static char* strToAsciiz(JavaString* self);
+ static const ArrayUInt16* strToArray(JavaString* self, Jnjvm* vm);
- /// javaToInternal - Replaces all '/' into '.'.
- const UTF8* javaToInternal(UTF8Map* map) const;
+ /// javaToInternal - Replaces all '/' into '.'.
+ static const UTF8* javaToInternal(const JavaString* self, UTF8Map* map);
static JavaVirtualTable* internStringVT;
};
Modified: vmkit/trunk/lib/J3/VMCore/Jni.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Jni.cpp?rev=105940&r1=105939&r2=105940&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/Jni.cpp Mon Jun 14 13:12:40 2010
@@ -2515,7 +2515,7 @@
llvm_gcroot(string, 0);
if (isCopy != 0) (*isCopy) = true;
- const char* res = string->strToAsciiz();
+ const char* res = JavaString::strToAsciiz(string);
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
Modified: vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp?rev=105940&r1=105939&r2=105940&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp Mon Jun 14 13:12:40 2010
@@ -605,10 +605,10 @@
ArrayUInt16::setElement(msg, ' ', i); i++;
for (sint32 j = name->offset; j < name->offset + name->count; ++j) {
- if (ArrayUInt16::getElement(name->value, j) == '/') {
+ if (ArrayUInt16::getElement(JavaString::getValue(name), j) == '/') {
ArrayUInt16::setElement(msg, '.', i); i++;
} else {
- ArrayUInt16::setElement(msg, ArrayUInt16::getElement(name->value, j), i);
+ ArrayUInt16::setElement(msg, ArrayUInt16::getElement(JavaString::getValue(name), j), i);
}
}
Modified: vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp?rev=105940&r1=105939&r2=105940&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp Mon Jun 14 13:12:40 2010
@@ -572,16 +572,16 @@
UTF8* name = (UTF8*)malloc(sizeof(UTF8) + str->count * sizeof(uint16));
name->size = str->count;
- if (ArrayUInt16::getElement(str->value, str->offset) != I_TAB) {
+ if (ArrayUInt16::getElement(JavaString::getValue(str), str->offset) != I_TAB) {
for (sint32 i = 0; i < str->count; ++i) {
- uint16 cur = ArrayUInt16::getElement(str->value, str->offset + i);
+ uint16 cur = ArrayUInt16::getElement(JavaString::getValue(str), str->offset + i);
if (cur == '.') name->elements[i] = '/';
else if (cur == '/') return 0;
else name->elements[i] = cur;
}
} else {
for (sint32 i = 0; i < str->count; ++i) {
- uint16 cur = ArrayUInt16::getElement(str->value, str->offset + i);
+ uint16 cur = ArrayUInt16::getElement(JavaString::getValue(str), str->offset + i);
if (cur == '.') name->elements[i] = '/';
else if (cur == '/') return 0;
else name->elements[i] = cur;
@@ -600,7 +600,7 @@
UTF8* name = (UTF8*)malloc(sizeof(UTF8) + str->count * sizeof(uint16));
name->size = str->count;
for (sint32 i = 0; i < str->count; ++i) {
- uint16 cur = ArrayUInt16::getElement(str->value, str->offset + i);
+ uint16 cur = ArrayUInt16::getElement(JavaString::getValue(str), str->offset + i);
if (cur == '.') name->elements[i] = '/';
else name->elements[i] = cur;
}
Modified: vmkit/trunk/lib/J3/VMCore/LockedMap.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/LockedMap.cpp?rev=105940&r1=105939&r2=105940&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/LockedMap.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/LockedMap.cpp Mon Jun 14 13:12:40 2010
@@ -22,5 +22,5 @@
void StringMap::insert(JavaString* str) {
llvm_gcroot(str, 0);
- map.insert(std::make_pair(str->value, str));
+ map.insert(std::make_pair(JavaString::getValue(str), str));
}
Modified: vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp?rev=105940&r1=105939&r2=105940&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp Mon Jun 14 13:12:40 2010
@@ -281,6 +281,8 @@
i!= e; ++i) {
JavaString** str = &(i->second);
mvm::Collector::markAndTraceRoot(str, closure);
+ ArrayUInt16** key = const_cast<ArrayUInt16**>(&(i->first));
+ mvm::Collector::markAndTraceRoot(key, closure);
}
for (uint32 i = 0; i < LockSystem::GlobalSize; i++) {
Modified: vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp?rev=105940&r1=105939&r2=105940&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp Mon Jun 14 13:12:40 2010
@@ -14,9 +14,11 @@
using namespace j3;
extern "C" uint16_t MMTkCharAt(JavaString* str, uint32_t index) {
- return ArrayUInt16::getElement(str->value, index);
+ llvm_gcroot(str, 0);
+ return ArrayUInt16::getElement(JavaString::getValue(str), index);
}
extern "C" JavaObject* MMTkGetClass(JavaObject* obj) {
+ llvm_gcroot(obj, 0);
return JavaObject::getClass(obj)->delegatee[0];
}
Modified: vmkit/trunk/mmtk/mmtk-j3/Strings.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/Strings.cpp?rev=105940&r1=105939&r2=105940&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/Strings.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/Strings.cpp Mon Jun 14 13:12:40 2010
@@ -17,6 +17,8 @@
extern "C" void Java_org_j3_mmtk_Strings_write___3CI(JavaObject* str,
ArrayUInt16* msg,
sint32 len) {
+ llvm_gcroot(str, 0);
+ llvm_gcroot(msg, 0);
for (sint32 i = 0; i < len; ++i) {
fprintf(stderr, "%c", ArrayUInt16::getElement(msg, i));
}
@@ -25,6 +27,8 @@
extern "C" void Java_org_j3_mmtk_Strings_writeThreadId___3CI(JavaObject*str,
ArrayUInt16* msg,
sint32 len) {
+ llvm_gcroot(str, 0);
+ llvm_gcroot(msg, 0);
fprintf(stderr, "[%p] ", (void*)JavaThread::get());
@@ -38,13 +42,16 @@
Java_org_j3_mmtk_Strings_copyStringToChars__Ljava_lang_String_2_3CII(
JavaObject* obj, JavaString* str, ArrayUInt16* dst, uint32 dstBegin,
uint32 dstEnd) {
+ llvm_gcroot(str, 0);
+ llvm_gcroot(obj, 0);
+ llvm_gcroot(dst, 0);
sint32 len = str->count;
sint32 n = (dstBegin + len <= dstEnd) ? len : (dstEnd - dstBegin);
for (sint32 i = 0; i < n; i++) {
ArrayUInt16::setElement(dst,
- ArrayUInt16::getElement(str->value, str->offset + i), dstBegin + i);
+ ArrayUInt16::getElement(JavaString::getValue(str), str->offset + i), dstBegin + i);
}
return n;
More information about the vmkit-commits
mailing list