Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: threads-common.c 8272 2007-08-08 14:55:00Z twisti $
-
*/
#include "mm/memory.h"
#include "native/jni.h"
+#include "native/llni.h"
#include "native/include/java_lang_Object.h"
#include "native/include/java_lang_String.h"
if (vmt == NULL)
return false;
- vmt->thread = object;
- vmt->vmdata = (java_lang_Object *) t;
+ LLNI_field_set_ref(vmt, thread, object);
+ LLNI_field_set_val(vmt, vmdata, (java_lang_Object *) t);
- object->vmThread = vmt;
+ LLNI_field_set_ref(object, vmThread, vmt);
#elif defined(WITH_CLASSPATH_CLDC1_1)
- object->vm_thread = (java_lang_Object *) t;
+ LLNI_field_set_val(object, vm_thread, (java_lang_Object *) t);
#endif
t->object = object;
/* set java.lang.Thread fields */
#if defined(WITH_CLASSPATH_GNU)
- object->name = (java_lang_String *) javastring_new(name);
+ LLNI_field_set_ref(object, name , (java_lang_String *) javastring_new(name));
#elif defined(WITH_CLASSPATH_CLDC1_1)
/* FIXME: In cldc the name is a char[] */
-/* object->name = (java_chararray *) javastring_new(name); */
- object->name = NULL;
+/* LLNI_field_set_ref(object, name , (java_chararray *) javastring_new(name)); */
+ LLNI_field_set_ref(object, name , NULL);
#endif
#if defined(ENABLE_JAVASE)
- object->daemon = true;
+ LLNI_field_set_val(object, daemon , true);
#endif
- object->priority = NORM_PRIORITY;
+ LLNI_field_set_val(object, priority, NORM_PRIORITY);
/* start the thread */
void threads_thread_start(java_lang_Thread *object)
{
threadobject *thread;
+#if defined(WITH_CLASSPATH_GNU)
+ java_lang_VMThread *vmt;
+#endif
/* Enter the join-mutex, so if the main-thread is currently
waiting to join all threads, the number of non-daemon threads
#if defined(ENABLE_JAVASE)
/* is this a daemon thread? */
- if (object->daemon == true)
+ if (LLNI_field_direct(object, daemon) == true)
thread->flags |= THREAD_FLAG_DAEMON;
#endif
thread->object = object;
#if defined(WITH_CLASSPATH_GNU)
- assert(object->vmThread);
- assert(object->vmThread->vmdata == NULL);
+ LLNI_field_get_ref(object, vmThread, vmt);
+
+ assert(vmt);
+ assert(LLNI_field_direct(vmt, vmdata) == NULL);
- object->vmThread->vmdata = (java_lang_Object *) thread;
+ LLNI_field_set_val(vmt, vmdata, (java_lang_Object *) thread);
#elif defined(WITH_CLASSPATH_CLDC1_1)
- object->vm_thread = (java_lang_Object *) thread;
+ LLNI_field_set_val(object, vm_thread, (java_lang_Object *) thread);
#endif
/* Start the thread. Don't pass a function pointer (NULL) since
/* get thread name */
#if defined(WITH_CLASSPATH_GNU)
- name = javastring_toutf((java_objectheader *) object->name, false);
+ name = javastring_toutf((java_handle_t *) LLNI_field_direct(object, name), false);
#elif defined(WITH_CLASSPATH_SUN) || defined(WITH_CLASSPATH_CLDC1_1)
/* FIXME: In cldc the name is a char[] */
/* name = object->name; */
if (t->flags & THREAD_FLAG_DAEMON)
printf(" daemon");
- printf(" prio=%d", object->priority);
+ printf(" prio=%d", LLNI_field_direct(object, priority));
#if SIZEOF_VOID_P == 8
printf(" t=0x%016lx tid=0x%016lx (%ld)",