[vmkit-commits] [vmkit] r105284 - in /vmkit/trunk: lib/J3/Classpath/ lib/J3/Compiler/ lib/J3/VMCore/ mmtk/mmtk-j3/
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Tue Jun 1 12:54:14 PDT 2010
Author: geoffray
Date: Tue Jun 1 14:54:14 2010
New Revision: 105284
URL: http://llvm.org/viewvc/llvm-project?rev=105284&view=rev
Log:
Make JavaObject virtual functions static in order to make less errors wrt to GC.
Modified:
vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc
vmkit/trunk/lib/J3/Classpath/ClasspathField.inc
vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc
vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc
vmkit/trunk/lib/J3/Classpath/ClasspathVMObject.inc
vmkit/trunk/lib/J3/Classpath/ClasspathVMSystem.inc
vmkit/trunk/lib/J3/Classpath/ClasspathVMSystemProperties.inc
vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc
vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp
vmkit/trunk/lib/J3/VMCore/JavaMetaJIT.cpp
vmkit/trunk/lib/J3/VMCore/JavaObject.cpp
vmkit/trunk/lib/J3/VMCore/JavaObject.h
vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp
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/VirtualTables.cpp
vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc Tue Jun 1 14:54:14 2010
@@ -110,7 +110,7 @@
Typedef* const* arguments = sign->getArgumentsType();
// Store the arguments, unboxing primitives if necessary.
for (sint32 i = 0; i < size; ++i) {
- ptr[i]->decapsulePrimitive(vm, &buf[i], arguments[i]);
+ JavaObject::decapsulePrimitive(ptr[i], vm, &buf[i], arguments[i]);
if (buf[i].l == reinterpret_cast<jobject>(ptr[i])) {
buf[i].l = reinterpret_cast<jobject>(&ptr[i]);
}
@@ -123,7 +123,7 @@
excp = th->getJavaException();
} END_CATCH;
if (excp) {
- if (excp->getClass()->isAssignableFrom(vm->upcalls->newException)) {
+ if (JavaObject::getClass(excp)->isAssignableFrom(vm->upcalls->newException)) {
th->clearException();
// If it's an exception, we encapsule it in an
// invocationTargetException
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathField.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathField.inc?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathField.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathField.inc Tue Jun 1 14:54:14 2010
@@ -547,7 +547,7 @@
}
const Typedef* type = field->getSignature();
- val->decapsulePrimitive(vm, &buf, type);
+ JavaObject::decapsulePrimitive(val, vm, &buf, type);
if (type->isPrimitive()) {
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc Tue Jun 1 14:54:14 2010
@@ -124,7 +124,7 @@
if (isVirtual(meth->access)) {
verifyNull(obj);
- UserCommonClass* objCl = obj->getClass();
+ UserCommonClass* objCl = JavaObject::getClass(obj);
if (!(objCl->isAssignableFrom(cl))) {
vm->illegalArgumentException("<this> is not a valid type");
}
@@ -143,7 +143,7 @@
JavaObject** ptr = (JavaObject**)(void*)(args->elements);
Typedef* const* arguments = sign->getArgumentsType();
for (sint32 i = 0; i < size; ++i) {
- ptr[i]->decapsulePrimitive(vm, &buf[i], arguments[i]);
+ JavaObject::decapsulePrimitive(ptr[i], vm, &buf[i], arguments[i]);
if (buf[i].l == reinterpret_cast<jobject>(ptr[i])) {
buf[i].l = reinterpret_cast<jobject>(&ptr[i]);
}
@@ -167,7 +167,8 @@
exc = th->getJavaException(); \
} END_CATCH; \
if (exc) { \
- if (exc->getClass()->isAssignableFrom(vm->upcalls->newException)) { \
+ if (JavaObject::getClass(exc)->isAssignableFrom( \
+ vm->upcalls->newException)) { \
th->clearException(); \
th->getJVM()->invocationTargetException(exc); \
} else { \
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc Tue Jun 1 14:54:14 2010
@@ -404,7 +404,7 @@
Jnjvm* vm = JavaThread::get()->getJVM();
UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, Cl, false);
- res = obj->instanceOf(cl);
+ res = JavaObject::instanceOf(obj, cl);
END_NATIVE_EXCEPTION
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMObject.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMObject.inc?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMObject.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMObject.inc Tue Jun 1 14:54:14 2010
@@ -33,7 +33,7 @@
BEGIN_NATIVE_EXCEPTION(0)
- UserCommonClass* cl = src->getClass();
+ UserCommonClass* cl = JavaObject::getClass(src);
size_t size = 0;
if (cl->isArray()) {
UserClassArray* array = cl->asArrayClass();
@@ -71,7 +71,7 @@
BEGIN_NATIVE_EXCEPTION(0)
Jnjvm* vm = JavaThread::get()->getJVM();
- res = obj->getClass()->getClassDelegatee(vm);
+ res = JavaObject::getClass(obj)->getClassDelegatee(vm);
END_NATIVE_EXCEPTION
@@ -89,7 +89,7 @@
BEGIN_NATIVE_EXCEPTION(0)
- obj->notifyAll();
+ JavaObject::notifyAll(obj);
END_NATIVE_EXCEPTION
}
@@ -113,9 +113,9 @@
struct timeval t;
t.tv_sec = sec;
t.tv_usec = usec;
- obj->timedWait(t);
+ JavaObject::timedWait(obj, t);
} else {
- obj->wait();
+ JavaObject::wait(obj);
}
END_NATIVE_EXCEPTION
@@ -132,7 +132,7 @@
BEGIN_NATIVE_EXCEPTION(0)
- obj->notify();
+ JavaObject::notify(obj);
END_NATIVE_EXCEPTION
}
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMSystem.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMSystem.inc?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMSystem.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMSystem.inc Tue Jun 1 14:54:14 2010
@@ -44,14 +44,15 @@
return;
}
- if (!(src->getClass()->isArray() && dst->getClass()->isArray())) {
+ if (!(JavaObject::getClass(src)->isArray() &&
+ JavaObject::getClass(dst)->isArray())) {
th->pendingException = vm->CreateArrayStoreException(
(JavaVirtualTable*)dst->getVirtualTable());
return;
}
- UserClassArray* ts = (UserClassArray*)src->getClass();
- UserClassArray* td = (UserClassArray*)dst->getClass();
+ UserClassArray* ts = (UserClassArray*)JavaObject::getClass(src);
+ UserClassArray* td = (UserClassArray*)JavaObject::getClass(dst);
UserCommonClass* dstType = td->baseClass();
UserCommonClass* srcType = ts->baseClass();
@@ -83,7 +84,7 @@
while (i < sstart + len && !doThrow) {
cur = ((ArrayObject*)src)->elements[i];
if (cur) {
- if (!(cur->getClass()->isAssignableFrom(dstType))) {
+ if (!(JavaObject::getClass(cur)->isAssignableFrom(dstType))) {
doThrow = true;
length = i;
}
@@ -114,7 +115,7 @@
llvm_gcroot(obj, 0);
if (obj == NULL) return 0;
- return obj->hashCode();
+ return JavaObject::hashCode(obj);
}
}
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMSystemProperties.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMSystemProperties.inc?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMSystemProperties.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMSystemProperties.inc Tue Jun 1 14:54:14 2010
@@ -36,8 +36,8 @@
Val = vm->asciizToStr(val);
Key = vm->asciizToStr(key);
- vm->upcalls->setProperty->invokeIntSpecial(vm, (UserClass*)prop->getClass(),
- prop, &Key, &Val);
+ vm->upcalls->setProperty->invokeIntSpecial(
+ vm, (UserClass*)JavaObject::getClass(prop), prop, &Key, &Val);
}
static void setUnameProp(Jnjvm* vm, JavaObject* prop) {
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMThread.inc Tue Jun 1 14:54:14 2010
@@ -48,7 +48,7 @@
assert(javaThread && "Didn't fix the javaThread of a j3 thread");
field->setObjectField(vmThread, (JavaObject*)(void*)thread);
- UserClass* vmthClass = (UserClass*)vmThread->getClass();
+ UserClass* vmthClass = (UserClass*)JavaObject::getClass(vmThread);
ThreadSystem& ts = vm->threadSystem;
Modified: vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp Tue Jun 1 14:54:14 2010
@@ -172,7 +172,7 @@
return SI->second;
} else {
assert(str && "No string given");
- LLVMClassInfo* LCI = getClassInfo(str->getClass()->asClass());
+ LLVMClassInfo* LCI = getClassInfo(JavaObject::getClass(str)->asClass());
const llvm::Type* Ty = LCI->getVirtualType();
Module& Mod = *getLLVMModule();
@@ -311,7 +311,7 @@
if (mvm::Collector::begOf(obj)) {
const Type* Ty = 0;
- CommonClass* cl = obj->getClass();
+ CommonClass* cl = JavaObject::getClass(obj);
if (cl->isArray()) {
Classpath* upcalls = cl->classLoader->bootstrapLoader->upcalls;
@@ -616,7 +616,7 @@
}
Constant* JavaAOTCompiler::CreateConstantFromJavaObject(JavaObject* obj) {
- CommonClass* cl = obj->getClass();
+ CommonClass* cl = JavaObject::getClass(obj);
if (cl->isArray()) {
Classpath* upcalls = cl->classLoader->bootstrapLoader->upcalls;
@@ -657,7 +657,8 @@
std::vector<Constant*> Elmts;
// JavaObject
- Constant* CurConstant = CreateConstantForBaseObject(obj->getClass());
+ Constant* CurConstant =
+ CreateConstantForBaseObject(JavaObject::getClass(obj));
for (uint32 j = 1; j <= cl->virtualVT->depth; ++j) {
std::vector<Constant*> TempElts;
@@ -721,7 +722,7 @@
}
Constant* JavaAOTCompiler::CreateConstantFromJavaString(JavaString* str) {
- Class* cl = str->getClass()->asClass();
+ Class* cl = JavaObject::getClass(str)->asClass();
LLVMClassInfo* LCI = getClassInfo(cl);
const StructType* STy =
dyn_cast<StructType>(LCI->getVirtualType()->getContainedType(0));
@@ -1249,7 +1250,7 @@
const StructType* STy = StructType::get(getLLVMModule()->getContext(), Elemts);
std::vector<Constant*> Cts;
- Cts.push_back(CreateConstantForBaseObject(val->getClass()));
+ Cts.push_back(CreateConstantForBaseObject(JavaObject::getClass(val)));
Cts.push_back(ConstantInt::get(JavaIntrinsics.pointerSizeType, val->size));
std::vector<Constant*> Vals;
@@ -1275,7 +1276,7 @@
const StructType* STy = StructType::get(getLLVMModule()->getContext(), Elemts);
std::vector<Constant*> Cts;
- Cts.push_back(CreateConstantForBaseObject(val->getClass()));
+ Cts.push_back(CreateConstantForBaseObject(JavaObject::getClass(val)));
Cts.push_back(ConstantInt::get(JavaIntrinsics.pointerSizeType, val->size));
std::vector<Constant*> Vals;
@@ -1301,14 +1302,14 @@
const StructType* STy = StructType::get(getLLVMModule()->getContext(), Elemts);
std::vector<Constant*> Cts;
- Cts.push_back(CreateConstantForBaseObject(val->getClass()));
+ Cts.push_back(CreateConstantForBaseObject(JavaObject::getClass(val)));
Cts.push_back(ConstantInt::get(JavaIntrinsics.pointerSizeType, val->size));
std::vector<Constant*> Vals;
for (sint32 i = 0; i < val->size; ++i) {
if (val->elements[i]) {
Vals.push_back(getFinalObject(val->elements[i],
- val->getClass()->asArrayClass()->baseClass()));
+ JavaObject::getClass(val)->asArrayClass()->baseClass()));
} else {
Vals.push_back(Constant::getNullValue(JavaIntrinsics.JavaObjectType));
}
@@ -2191,13 +2192,13 @@
for (; I != E; ++I) {
JavaObject* obj = (JavaObject*)(*I);
- if (!VMClassLoader::isVMClassLoader(obj) && obj->instanceOf(cl)) {
- if (currentClass) {
- if (obj->getClass() != currentClass) {
+ if (!VMClassLoader::isVMClassLoader(obj) && JavaObject::instanceOf(obj, cl)) {
+ if (currentClass != NULL) {
+ if (JavaObject::getClass(obj) != currentClass) {
return 0;
}
} else {
- currentClass = obj->getClass();
+ currentClass = JavaObject::getClass(obj);
}
}
}
Modified: vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp Tue Jun 1 14:54:14 2010
@@ -100,7 +100,7 @@
JavaObject* source = TheCompiler->getFinalObject(obj);
if (source) {
canBeDirect = true;
- CommonClass* sourceClass = source->getClass();
+ CommonClass* sourceClass = JavaObject::getClass(source);
Class* lookup = sourceClass->isArray() ? sourceClass->super :
sourceClass->asClass();
meth = lookup->lookupMethodDontThrow(name, signature->keyName, false,
@@ -2125,7 +2125,8 @@
JavaObject* val = field->getObjectField(Obj);
JnjvmClassLoader* JCL = field->classDef->classLoader;
Value* V = TheCompiler->getFinalObject(val, sign->assocClass(JCL));
- CommonClass* cl = mvm::Collector::begOf(val) ? val->getClass() : NULL;
+ CommonClass* cl = mvm::Collector::begOf(val) ?
+ JavaObject::getClass(val) : NULL;
push(V, false, cl);
} else {
Value* V = CallInst::Create(intrinsics->GetFinalObjectFieldFunction, ptr,
Modified: vmkit/trunk/lib/J3/VMCore/JavaMetaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaMetaJIT.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaMetaJIT.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaMetaJIT.cpp Tue Jun 1 14:54:14 2010
@@ -108,7 +108,7 @@
TYPE JavaMethod::invoke##TYPE_NAME##VirtualAP(Jnjvm* vm, UserClass* cl, JavaObject* obj, va_list ap) { \
llvm_gcroot(obj, 0); \
verifyNull(obj); \
- UserClass* objCl = obj->getClass()->isArray() ? obj->getClass()->super : obj->getClass()->asClass(); \
+ UserClass* objCl = JavaObject::getClass(obj)->isArray() ? JavaObject::getClass(obj)->super : JavaObject::getClass(obj)->asClass(); \
if (objCl == classDef || isFinal(access)) { \
meth = this; \
} else { \
@@ -170,7 +170,7 @@
llvm_gcroot(obj, 0); \
verifyNull(obj);\
Signdef* sign = getSignature(); \
- UserClass* objCl = obj->getClass()->isArray() ? obj->getClass()->super : obj->getClass()->asClass(); \
+ UserClass* objCl = JavaObject::getClass(obj)->isArray() ? JavaObject::getClass(obj)->super : JavaObject::getClass(obj)->asClass(); \
JavaMethod* meth = NULL; \
if (objCl == classDef || isFinal(access)) { \
meth = this; \
@@ -290,7 +290,7 @@
JavaObject* obj = (JavaObject*)_obj;
llvm_gcroot(obj, 0);
JavaMethod* meth = upcalls->FinalizeObject;
- UserClass* cl = obj->getClass()->asClass();
+ UserClass* cl = JavaObject::getClass(obj)->asClass();
meth->invokeIntVirtualBuf(this, cl, obj, 0);
}
@@ -298,6 +298,6 @@
JavaObject* obj = (JavaObject*)_obj;
llvm_gcroot(obj, 0);
JavaMethod* meth = upcalls->EnqueueReference;
- UserClass* cl = obj->getClass()->asClass();
+ UserClass* cl = JavaObject::getClass(obj)->asClass();
return (bool)meth->invokeIntSpecialBuf(this, cl, obj, 0);
}
Modified: vmkit/trunk/lib/J3/VMCore/JavaObject.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaObject.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaObject.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaObject.cpp Tue Jun 1 14:54:14 2010
@@ -22,12 +22,12 @@
uint16_t JavaObject::hashCodeGenerator = 1;
-void JavaObject::waitIntern(struct timeval* info, bool timed) {
+void JavaObject::waitIntern(
+ JavaObject* self, struct timeval* info, bool timed) {
JavaLock* l = 0;
- JavaObject* self = this;
llvm_gcroot(self, 0);
- if (owner()) {
+ if (owner(self)) {
l = self->lock.changeToFatlock(self);
JavaThread* thread = JavaThread::get();
thread->waitsOn = l;
@@ -102,7 +102,7 @@
} else {
assert(!thread->prevWaiting && "Inconstitent state");
// Notify lost, notify someone else.
- notify();
+ notify(self);
}
} else {
assert(!thread->prevWaiting && !thread->nextWaiting &&
@@ -121,27 +121,24 @@
JavaThread::get()->getJVM()->illegalMonitorStateException(self);
}
- assert(owner() && "Not owner after wait");
+ assert(owner(self) && "Not owner after wait");
}
-void JavaObject::wait() {
- JavaObject* self = this;
+void JavaObject::wait(JavaObject* self) {
llvm_gcroot(self, 0);
- self->waitIntern(0, false);
+ waitIntern(self, NULL, false);
}
-void JavaObject::timedWait(struct timeval& info) {
- JavaObject* self = this;
+void JavaObject::timedWait(JavaObject* self, struct timeval& info) {
llvm_gcroot(self, 0);
- self->waitIntern(&info, true);
+ waitIntern(self, &info, true);
}
-void JavaObject::notify() {
+void JavaObject::notify(JavaObject* self) {
JavaLock* l = 0;
- JavaObject* self = this;
llvm_gcroot(self, 0);
- if (owner()) {
+ if (owner(self)) {
l = self->lock.getFatLock();
if (l) {
JavaThread* cur = l->firstThread;
@@ -178,15 +175,14 @@
} else {
JavaThread::get()->getJVM()->illegalMonitorStateException(self);
}
- assert(owner() && "Not owner after notify");
+ assert(owner(self) && "Not owner after notify");
}
-void JavaObject::notifyAll() {
+void JavaObject::notifyAll(JavaObject* self) {
JavaLock* l = 0;
- JavaObject* self = this;
llvm_gcroot(self, 0);
- if (owner()) {
+ if (owner(self)) {
l = self->lock.getFatLock();
if (l) {
JavaThread* cur = l->firstThread;
@@ -205,17 +201,16 @@
JavaThread::get()->getJVM()->illegalMonitorStateException(self);
}
- assert(owner() && "Not owner after notifyAll");
+ assert(owner(self) && "Not owner after notifyAll");
}
-void JavaObject::decapsulePrimitive(Jnjvm *vm, jvalue* buf,
+void JavaObject::decapsulePrimitive(JavaObject* obj, Jnjvm *vm, jvalue* buf,
const Typedef* signature) {
- JavaObject* obj = this;
llvm_gcroot(obj, 0);
if (!signature->isPrimitive()) {
- if (obj && !(obj->getClass()->isOfTypeName(signature->getName()))) {
+ if (obj && !(getClass(obj)->isOfTypeName(signature->getName()))) {
vm->illegalArgumentException("wrong type argument");
}
(*buf).l = reinterpret_cast<jobject>(obj);
@@ -223,7 +218,7 @@
} else if (obj == 0) {
vm->illegalArgumentException("");
} else {
- UserCommonClass* cl = obj->getClass();
+ UserCommonClass* cl = getClass(obj);
UserClassPrimitive* value = cl->toPrimitive(vm);
const PrimitiveTypedef* prim = (const PrimitiveTypedef*)signature;
@@ -332,10 +327,8 @@
return;
}
-bool JavaObject::instanceOf(UserCommonClass* cl) {
- JavaObject* self = this;
+bool JavaObject::instanceOf(JavaObject* self, UserCommonClass* cl) {
llvm_gcroot(self, 0);
-
- if (!self) return false;
- else return self->getClass()->isAssignableFrom(cl);
+ if (self == NULL) return false;
+ else return getClass(self)->isAssignableFrom(cl);
}
Modified: vmkit/trunk/lib/J3/VMCore/JavaObject.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaObject.h?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaObject.h (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaObject.h Tue Jun 1 14:54:14 2010
@@ -234,14 +234,14 @@
/// waitIntern - internal wait on a monitor
///
- void waitIntern(struct timeval *info, bool timed);
+ static void waitIntern(JavaObject* self, struct timeval *info, bool timed);
public:
/// getClass - Returns the class of this object.
///
- UserCommonClass* getClass() const {
- return ((JavaVirtualTable*)getVirtualTable())->cl;
+ static UserCommonClass* getClass(const JavaObject* self) {
+ return ((JavaVirtualTable*)self->getVirtualTable())->cl;
}
/// lock - The monitor of this object. Most of the time null.
@@ -250,51 +250,51 @@
/// wait - Java wait. Makes the current thread waiting on a monitor.
///
- void wait();
+ static void wait(JavaObject* self);
/// timedWait - Java timed wait. Makes the current thread waiting on a
/// monitor for the given amount of time.
///
- void timedWait(struct timeval &info);
+ static void timedWait(JavaObject* self, struct timeval &info);
/// notify - Java notify. Notifies a thread from the availability of the
/// monitor.
///
- void notify();
+ static void notify(JavaObject* self);
/// notifyAll - Java notifyAll. Notifies all threads from the availability of
/// the monitor.
///
- void notifyAll();
+ static void notifyAll(JavaObject* self);
/// overflowThinLock - Notify that the thin lock has overflowed.
///
- void overflowThinLock() {
- lock.overflowThinLock(this);
+ static void overflowThinLock(JavaObject* self) {
+ llvm_gcroot(self, 0);
+ self->lock.overflowThinLock(self);
}
/// instanceOf - Is this object's class of type the given class?
///
- bool instanceOf(UserCommonClass* cl);
+ static bool instanceOf(JavaObject* self, UserCommonClass* cl);
/// acquire - Acquire the lock on this object.
- void acquire() {
- JavaObject* self = this;
+ static void acquire(JavaObject* self) {
llvm_gcroot(self, 0);
self->lock.acquire(self);
}
/// release - Release the lock on this object
- void release() {
- JavaObject* self = this;
+ static void release(JavaObject* self) {
llvm_gcroot(self, 0);
- lock.release(self);
+ self->lock.release(self);
}
/// owner - Returns true if the current thread is the owner of this object's
/// lock.
- bool owner() {
- return lock.owner();
+ static bool owner(JavaObject* self) {
+ llvm_gcroot(self, 0);
+ return self->lock.owner();
}
#ifdef SIGSEGV_THROW_NULL
@@ -305,24 +305,25 @@
#endif
/// lockObj - Get the LockObj if the lock is a fat lock.
- JavaLock* lockObj() {
- return lock.getFatLock();
+ static JavaLock* lockObj(JavaObject* self) {
+ llvm_gcroot(self, 0);
+ return self->lock.getFatLock();
}
/// decapsulePrimitive - Based on the signature argument, decapsule
/// obj as a primitive and put it in the buffer.
///
- void decapsulePrimitive(Jnjvm* vm, jvalue* buf, const Typedef* signature);
+ static void decapsulePrimitive(JavaObject* self, Jnjvm* vm, jvalue* buf,
+ const Typedef* signature);
static uint16_t hashCodeGenerator;
/// hashCode - Return the hash code of this object.
- uint32_t hashCode() {
- JavaObject* self = this;
+ static uint32_t hashCode(JavaObject* self) {
llvm_gcroot(self, 0);
uintptr_t oldLock = self->lock.lock;
uintptr_t val = (oldLock & mvm::HashMask) >> LockSystem::BitGC;
- if (val) return val ^ (uintptr_t)getClass();
+ if (val) return val ^ (uintptr_t)getClass(self);
else {
if (hashCodeGenerator >= (mvm::HashMask >> LockSystem::BitGC))
val = hashCodeGenerator = 1;
@@ -335,7 +336,7 @@
__sync_val_compare_and_swap(&(self->lock.lock), oldLock, newLock);
} while ((self->lock.lock & mvm::HashMask) == 0);
return ((self->lock.lock & mvm::HashMask) >> LockSystem::BitGC) ^
- (uintptr_t)getClass();
+ (uintptr_t)getClass(self);
}
};
Modified: vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaRuntimeJIT.cpp Tue Jun 1 14:54:14 2010
@@ -155,13 +155,14 @@
JavaMethod* dmeth = lookup->lookupMethodDontThrow(utf8, sign->keyName, false,
true, 0);
if (!dmeth) {
- assert((obj->getClass()->isClass() &&
- obj->getClass()->asClass()->isInitializing()) &&
+ assert((JavaObject::getClass(obj)->isClass() &&
+ JavaObject::getClass(obj)->asClass()->isInitializing()) &&
"Class not ready in a virtual lookup.");
// Arg, the bytecode is buggy! Perform the lookup on the object class
// and do not update offset.
- lookup = obj->getClass()->isArray() ? obj->getClass()->super :
- obj->getClass()->asClass();
+ lookup = JavaObject::getClass(obj)->isArray() ?
+ JavaObject::getClass(obj)->super :
+ JavaObject::getClass(obj)->asClass();
dmeth = lookup->lookupMethod(utf8, sign->keyName, false, true, 0);
} else {
*offset = dmeth->offset;
@@ -366,28 +367,31 @@
// Never throws.
extern "C" void j3JavaObjectAquire(JavaObject* obj) {
llvm_gcroot(obj, 0);
- obj->acquire();
+ JavaObject::acquire(obj);
}
// Never throws.
extern "C" void j3JavaObjectRelease(JavaObject* obj) {
llvm_gcroot(obj, 0);
- obj->release();
+ JavaObject::release(obj);
}
// Does not call any Java code. Can not yield a GC.
extern "C" void j3ThrowException(JavaObject* obj) {
+ llvm_gcroot(obj, 0);
return JavaThread::get()->throwException(obj);
}
// Never throws.
extern "C" void j3OverflowThinLock(JavaObject* obj) {
- obj->overflowThinLock();
+ llvm_gcroot(obj, 0);
+ JavaObject::overflowThinLock(obj);
}
// Creates a Java object and then throws it.
extern "C" JavaObject* j3NullPointerException() {
JavaObject *exc = 0;
+ llvm_gcroot(exc, 0);
JavaThread *th = JavaThread::get();
BEGIN_NATIVE_EXCEPTION(1)
@@ -408,6 +412,7 @@
// Creates a Java object and then throws it.
extern "C" JavaObject* j3NegativeArraySizeException(sint32 val) {
JavaObject *exc = 0;
+ llvm_gcroot(exc, 0);
JavaThread *th = JavaThread::get();
BEGIN_NATIVE_EXCEPTION(1)
@@ -428,6 +433,7 @@
// Creates a Java object and then throws it.
extern "C" JavaObject* j3OutOfMemoryError(sint32 val) {
JavaObject *exc = 0;
+ llvm_gcroot(exc, 0);
JavaThread *th = JavaThread::get();
BEGIN_NATIVE_EXCEPTION(1)
@@ -448,6 +454,7 @@
// Creates a Java object and then throws it.
extern "C" JavaObject* j3StackOverflowError() {
JavaObject *exc = 0;
+ llvm_gcroot(exc, 0);
JavaThread *th = JavaThread::get();
BEGIN_NATIVE_EXCEPTION(1)
@@ -468,6 +475,7 @@
// Creates a Java object and then throws it.
extern "C" JavaObject* j3ArithmeticException() {
JavaObject *exc = 0;
+ llvm_gcroot(exc, 0);
JavaThread *th = JavaThread::get();
BEGIN_NATIVE_EXCEPTION(1)
@@ -537,6 +545,7 @@
extern "C" JavaObject* j3ArrayStoreException(JavaVirtualTable* VT,
JavaVirtualTable* VT2) {
JavaObject *exc = 0;
+ llvm_gcroot(exc, 0);
JavaThread *th = JavaThread::get();
BEGIN_NATIVE_EXCEPTION(1)
@@ -556,6 +565,7 @@
// Create an exception then throws it.
extern "C" void j3ThrowExceptionFromJIT() {
JavaObject *exc = 0;
+ llvm_gcroot(exc, 0);
JavaThread *th = JavaThread::get();
BEGIN_NATIVE_EXCEPTION(1)
@@ -594,7 +604,7 @@
extern "C" void* j3ResolveVirtualStub(JavaObject* obj) {
llvm_gcroot(obj, 0);
JavaThread *th = JavaThread::get();
- UserCommonClass* cl = obj->getClass();
+ UserCommonClass* cl = JavaObject::getClass(obj);
void* result = NULL;
BEGIN_NATIVE_EXCEPTION(1)
Modified: vmkit/trunk/lib/J3/VMCore/Jni.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Jni.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/Jni.cpp Tue Jun 1 14:54:14 2010
@@ -91,7 +91,7 @@
Jnjvm* vm = myVM(env);
Classpath* upcalls = vm->upcalls;
- UserCommonClass* cl = meth->getClass();
+ UserCommonClass* cl = JavaObject::getClass(meth);
if (cl == upcalls->newConstructor) {
jmethodID res = (jmethodID)((JavaObjectMethod*)meth)->getInternalMethod();
RETURN_FROM_JNI(res);
@@ -367,7 +367,7 @@
Jnjvm* vm = th->getJVM();
// Store local reference
- jclass res = (jclass)obj->getClass()->getClassDelegateePtr(vm);
+ jclass res = (jclass)JavaObject::getClass(obj)->getClassDelegateePtr(vm);
RETURN_FROM_JNI(res);
END_JNI_EXCEPTION
@@ -451,7 +451,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
JavaThread* th = JavaThread::get();
Jnjvm* vm = th->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
res = meth->invokeJavaObjectVirtualAP(vm, cl, obj, ap);
va_end(ap);
@@ -480,7 +480,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
JavaThread* th = JavaThread::get();
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
// Store local reference.
res = meth->invokeJavaObjectVirtualAP(vm, cl, obj, args);
@@ -517,7 +517,8 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, self->getClass());
+ UserClass* cl =
+ getClassFromVirtualMethod(vm, meth, JavaObject::getClass(self));
uint32 res = meth->invokeIntVirtualAP(vm, cl, self, ap);
va_end(ap);
@@ -542,7 +543,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
jboolean res = (jboolean)meth->invokeIntVirtualAP(vm, cl, obj, args);
RETURN_FROM_JNI(res);
@@ -579,7 +580,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
jbyte res = (jbyte)meth->invokeIntVirtualAP(vm, cl, obj, args);
RETURN_FROM_JNI(res);
@@ -617,7 +618,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
jchar res = (jchar)meth->invokeIntVirtualAP(vm, cl, obj, args);
RETURN_FROM_JNI(res);
@@ -655,7 +656,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
jshort res = (jshort)meth->invokeIntVirtualAP(vm, cl, obj, args);
RETURN_FROM_JNI(res);
@@ -689,7 +690,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
uint32 res = meth->invokeIntVirtualAP(vm, cl, obj, ap);
va_end(ap);
@@ -714,7 +715,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
jint res = (jint)meth->invokeIntVirtualAP(vm, cl, obj, args);
RETURN_FROM_JNI(res);
@@ -754,7 +755,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
jlong res = (jlong)meth->invokeLongVirtualAP(vm, cl, obj, args);
RETURN_FROM_JNI(res);
@@ -788,7 +789,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
jfloat res = meth->invokeFloatVirtualAP(vm, cl, obj, ap);
va_end(ap);
RETURN_FROM_JNI(res);
@@ -811,7 +812,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
jfloat res = (jfloat)meth->invokeFloatVirtualAP(vm, cl, obj, args);
RETURN_FROM_JNI(res);
@@ -845,7 +846,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
jdouble res = meth->invokeDoubleVirtualAP(vm, cl, obj, ap);
va_end(ap);
RETURN_FROM_JNI(res);
@@ -868,7 +869,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
jdouble res = (jdouble)meth->invokeDoubleVirtualAP(vm, cl, obj, args);
RETURN_FROM_JNI(res);
@@ -902,7 +903,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
meth->invokeIntVirtualAP(vm, cl, obj, ap);
va_end(ap);
@@ -927,7 +928,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
meth->invokeIntVirtualAP(vm, cl, obj, args);
RETURN_VOID_FROM_JNI;
@@ -950,7 +951,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
meth->invokeIntVirtualBuf(vm, cl, obj, (void*)args);
@@ -1203,7 +1204,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->getJVM();
- UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, JavaObject::getClass(obj));
meth->invokeIntSpecialAP(vm, cl, obj, ap);
va_end(ap);
@@ -3499,8 +3500,8 @@
JavaObject* Obj = *(JavaObject**)_obj;
llvm_gcroot(Obj, 0);
- if (Obj) {
- Obj->acquire();
+ if (Obj != NULL) {
+ JavaObject::acquire(Obj);
RETURN_FROM_JNI(0);
} else {
RETURN_FROM_JNI(-1);
@@ -3519,13 +3520,13 @@
JavaObject* Obj = *(JavaObject**)_obj;
llvm_gcroot(Obj, 0);
- if (Obj) {
+ if (Obj != NULL) {
- if (!Obj->owner()) {
+ if (!JavaObject::owner(Obj)) {
JavaThread::get()->getJVM()->illegalMonitorStateException(Obj);
}
- Obj->release();
+ JavaObject::release(Obj);
RETURN_FROM_JNI(0);
} else {
RETURN_FROM_JNI(-1);
@@ -3568,7 +3569,7 @@
if (isCopy) (*isCopy) = true;
- UserClassArray* cl = array->getClass()->asArrayClass();
+ UserClassArray* cl = JavaObject::getClass(array)->asArrayClass();
uint32 logSize = cl->baseClass()->asPrimitiveClass()->logSize;
sint32 len = array->size << logSize;
void* buffer = malloc(len);
@@ -3592,7 +3593,7 @@
JavaArray* array = *(JavaArray**)_array;
llvm_gcroot(array, 0);
- UserClassArray* cl = array->getClass()->asArrayClass();
+ UserClassArray* cl = JavaObject::getClass(array)->asArrayClass();
uint32 logSize = cl->baseClass()->asPrimitiveClass()->logSize;
sint32 len = array->size << logSize;
memcpy(array->elements, carray, len);
Modified: vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp Tue Jun 1 14:54:14 2010
@@ -225,12 +225,12 @@
// ExceptionInInitializerError cannot be created because an
// OutOfMemoryError occurs, then instead use an OutOfMemoryError object
// in place of E in the following step.
- if (exc->getClass()->isAssignableFrom(vm->upcalls->newException)) {
+ if (JavaObject::getClass(exc)->isAssignableFrom(vm->upcalls->newException)) {
Classpath* upcalls = classLoader->bootstrapLoader->upcalls;
UserClass* clExcp = upcalls->ExceptionInInitializerError;
Jnjvm* vm = self->getJVM();
obj = clExcp->doNew(vm);
- if (!obj) {
+ if (obj == NULL) {
fprintf(stderr, "implement me");
abort();
}
@@ -1244,7 +1244,7 @@
if (exc != NULL) {
fprintf(stderr, "Exception %s while bootstrapping VM.",
- UTF8Buffer(exc->getClass()->name).cString());
+ UTF8Buffer(JavaObject::getClass(exc)->name).cString());
} else {
#ifdef SERVICE
thread->ServiceException = vm->upcalls->newThrowable->doNew(vm);
Modified: vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JnjvmClassLoader.cpp Tue Jun 1 14:54:14 2010
@@ -267,6 +267,7 @@
JnjvmClassLoader::JnjvmClassLoader(mvm::BumpPtrAllocator& Alloc,
JnjvmClassLoader& JCL, JavaObject* loader,
Jnjvm* I) : allocator(Alloc) {
+ llvm_gcroot(loader, 0);
bootstrapLoader = JCL.bootstrapLoader;
TheCompiler = bootstrapLoader->getCompiler()->Create("Applicative loader");
@@ -281,7 +282,7 @@
JavaMethod* meth = bootstrapLoader->upcalls->loadInClassLoader;
loadClassMethod =
- loader->getClass()->asClass()->lookupMethodDontThrow(
+ JavaObject::getClass(loader)->asClass()->lookupMethodDontThrow(
meth->name, meth->type, false, true, &loadClass);
assert(loadClass && "Loader does not have a loadClass function");
@@ -855,8 +856,8 @@
vmdata =
(VMClassLoader*)(upcalls->vmdataClassLoader->getObjectField(loader));
- if (!vmdata) {
- loader->acquire();
+ if (vmdata == NULL) {
+ JavaObject::acquire(loader);
vmdata =
(VMClassLoader*)(upcalls->vmdataClassLoader->getObjectField(loader));
if (!vmdata) {
@@ -864,9 +865,9 @@
JCL = new(*A, "Class loader") JnjvmClassLoader(*A, *vm->bootstrapLoader,
loader, vm);
vmdata = VMClassLoader::allocate(JCL);
- (upcalls->vmdataClassLoader->setObjectField(loader, (JavaObject*)vmdata));
+ upcalls->vmdataClassLoader->setObjectField(loader, (JavaObject*)vmdata);
}
- loader->release();
+ JavaObject::release(loader);
} else {
JCL = vmdata->getClassLoader();
}
Modified: vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp Tue Jun 1 14:54:14 2010
@@ -76,7 +76,7 @@
/// Method for scanning the root of an object.
extern "C" void JavaObjectTracer(JavaObject* obj, uintptr_t closure) {
- CommonClass* cl = obj->getClass();
+ CommonClass* cl = JavaObject::getClass(obj);
assert(cl && "No class");
mvm::Collector::markAndTraceRoot(
cl->classLoader->getJavaClassLoaderPtr(), closure);
@@ -85,7 +85,7 @@
/// Method for scanning an array whose elements are JavaObjects. This method is
/// called by all non-native Java arrays.
extern "C" void ArrayObjectTracer(ArrayObject* obj, uintptr_t closure) {
- CommonClass* cl = obj->getClass();
+ CommonClass* cl = JavaObject::getClass(obj);
assert(cl && "No class");
mvm::Collector::markAndTraceRoot(
cl->classLoader->getJavaClassLoaderPtr(), closure);
@@ -106,7 +106,7 @@
/// Method for scanning regular objects.
extern "C" void RegularObjectTracer(JavaObject* obj, uintptr_t closure) {
- Class* cl = obj->getClass()->asClass();
+ Class* cl = JavaObject::getClass(obj)->asClass();
assert(cl && "Not a class in regular tracer");
mvm::Collector::markAndTraceRoot(
cl->classLoader->getJavaClassLoaderPtr(), closure);
Modified: vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp?rev=105284&r1=105283&r2=105284&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp Tue Jun 1 14:54:14 2010
@@ -18,5 +18,5 @@
}
extern "C" JavaObject* MMTkGetClass(JavaObject* obj) {
- return obj->getClass()->delegatee[0];
+ return JavaObject::getClass(obj)->delegatee[0];
}
More information about the vmkit-commits
mailing list