[vmkit-commits] [vmkit] r145476 - in /vmkit/trunk/lib/j3/ClassLib/OpenJDK: ClasspathReflect.h JavaUpcalls.cpp JavaUpcalls.h
Will Dietz
wdietz2 at illinois.edu
Tue Nov 29 19:55:45 PST 2011
Author: wdietz2
Date: Tue Nov 29 21:55:45 2011
New Revision: 145476
URL: http://llvm.org/viewvc/llvm-project?rev=145476&view=rev
Log:
OpenJDK: Put references on special NullQueue if no queue specified.
Modified:
vmkit/trunk/lib/j3/ClassLib/OpenJDK/ClasspathReflect.h
vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.cpp
vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.h
Modified: vmkit/trunk/lib/j3/ClassLib/OpenJDK/ClasspathReflect.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/OpenJDK/ClasspathReflect.h?rev=145476&r1=145475&r2=145476&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/OpenJDK/ClasspathReflect.h (original)
+++ vmkit/trunk/lib/j3/ClassLib/OpenJDK/ClasspathReflect.h Tue Nov 29 21:55:45 2011
@@ -16,6 +16,8 @@
#include "JavaObject.h"
#include "JavaThread.h"
#include "JavaString.h"
+#include "Jnjvm.h"
+#include "JavaUpcalls.h"
extern "C" j3::JavaObject* internalFillInStackTrace(j3::JavaObject*);
namespace j3 {
@@ -305,6 +307,11 @@
llvm_gcroot(q, 0);
vmkit::Collector::objectReferenceWriteBarrier(
(gc*)self, (gc**)&(self->referent), (gc*)r);
+ if (!q) {
+ JavaField * field = JavaThread::get()->getJVM()->upcalls->NullRefQueue;
+ q = field->getStaticObjectField();
+ }
+ assert(q);
vmkit::Collector::objectReferenceWriteBarrier(
(gc*)self, (gc**)&(self->queue), (gc*)q);
}
Modified: vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.cpp?rev=145476&r1=145475&r2=145476&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.cpp Tue Nov 29 21:55:45 2011
@@ -220,6 +220,7 @@
JavaMethod* Classpath::EnqueueReference;
Class* Classpath::newReference;
+JavaField* Classpath::NullRefQueue;
void Classpath::CreateJavaThread(Jnjvm* vm, JavaThread* myth,
const char* thName, JavaObject* Group) {
@@ -850,6 +851,10 @@
UPCALL_METHOD(loader, "java/lang/ref/Reference", "enqueue", "()Z",
ACC_VIRTUAL);
+ NullRefQueue =
+ UPCALL_FIELD(loader, "java/lang/ref/ReferenceQueue",
+ "NULL", "Ljava/lang/ref/ReferenceQueue;", ACC_STATIC);
+
JavaMethod* initWeakReference =
UPCALL_METHOD(loader, "java/lang/ref/WeakReference", "<init>",
"(Ljava/lang/Object;)V",
Modified: vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.h?rev=145476&r1=145475&r2=145476&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.h (original)
+++ vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.h Tue Nov 29 21:55:45 2011
@@ -258,6 +258,7 @@
ISOLATE_STATIC JavaMethod* EnqueueReference;
ISOLATE_STATIC Class* newReference;
+ ISOLATE_STATIC JavaField* NullRefQueue;
ISOLATE_STATIC UserClass* EnumClass;
More information about the vmkit-commits
mailing list