--- japhar/lib/libnative/java.lang/thread.c	Sat Dec  5 12:12:35 1998
+++ japhar-new/lib/libnative/java.lang/thread.c	Sat Dec  5 19:11:18 1998
@@ -46,23 +46,14 @@
 static void
 setPrivateInfo(JNIEnv *env, jobject obj, JThreadInfo *native_thread_info)
 {
-  jclass thread_class = (*env)->FindClass(env, "java/lang/Thread");
-  jfieldID field = (*env)->GetFieldID(env, thread_class, "PrivateInfo", "I");
-  assert(NULL != field);
-  assert(NULL != obj);
-  assert(sizeof(jint) >= sizeof(JThreadInfo*));
-  (*env)->SetIntField(env, obj, field, (jint)native_thread_info);
+  NSA_SetNativeState(obj, native_thread_info);
 }
 
 static JThreadInfo *
 getPrivateInfo(JNIEnv *env, jobject obj)
 {
-  jclass thread_class = (*env)->FindClass(env, "java/lang/Thread");
-  jfieldID field = (*env)->GetFieldID(env, thread_class, "PrivateInfo", "I");
-  assert(NULL != field);
   assert(NULL != obj);
-  assert(sizeof(jint) >= sizeof(JThreadInfo*));
-  return (JThreadInfo*) (*env)->GetIntField(env, obj, field);
+  return (JThreadInfo*) NSA_GetNativeState(obj);
 }
 
 /*
--- japhar/lib/libruntime/objects.c	Sat Dec  5 19:03:53 1998
+++ japhar-new/lib/libruntime/objects.c	Sat Dec  5 18:58:29 1998
@@ -325,16 +325,7 @@
 ClazzFile*
 jclass_to_clazzfile(JNIEnv *env, jclass clazz)
 {
-  ClazzFile *class_cf = find_class(env, "java/lang/Class");
-  jfieldID clazzfile_field;
-  ClazzFile *result;
-  jvalue val;
-
-  clazzfile_field = class_cf->fields[0];
-
-  get_instance_field(clazz, clazzfile_field, &val);
-
-  result = (ClazzFile*)val.i;
+  ClazzFile *result = (ClazzFile*) NSA_GetNativeState(clazz);
 
   assert(result != NULL);
 
@@ -365,8 +356,7 @@
       new_obj = new_object_no_init(env, class_cf);
       assert(NULL != new_obj);
 
-      val.i = (jint)cf;
-      set_instance_field(new_obj, class_cf->fields[0], val);
+      NSA_SetNativeState(new_obj, cf);
 
       cf->jcls = new_obj;
 
--- japhar/lib/libruntime/init.c	Sat Dec  5 19:03:47 1998
+++ japhar-new/lib/libruntime/init.c	Sat Dec  5 18:58:29 1998
@@ -150,12 +150,7 @@
 #endif
   field = (*env)->GetFieldID(env, Thread, "priority", "I");
   (*env)->SetIntField(env, system_thread, field, norm_priority);
-  field = (*env)->GetFieldID(env, Thread, "PrivateInfo", "I");
-
-  /* XXX pointer will be truncated on 64bits systems */
-  assert(sizeof(jint)>=sizeof(JThreadInfo *));
-  (*env)->SetIntField(env, system_thread, field,
-		      (jint)initial_native_thread_info);
+  NSA_SetNativeState(system_thread, initial_native_thread_info);
 
   initial_native_frame = push_frame(initial_native_thread_info,
 				    0);
@@ -202,18 +197,7 @@
 {
   ClazzFile *class_cf = find_class(env, "java/lang/Class");
 
-  class_cf->num_fields = 1;
-  class_cf->fields = (FieldStruct**)calloc(class_cf->num_fields,
-					   sizeof(FieldStruct*));
-  
-  class_cf->fields[0] = (FieldStruct*)calloc(1, sizeof(FieldStruct));
-  class_cf->fields[0]->clazz = class_cf;
-  class_cf->fields[0]->name = "ClazzFile*";
-  class_cf->fields[0]->sig = SIG_parseFromJavaSig(env, "I");
-  class_cf->fields[0]->access_flags = ACC_PUBLIC;
-  class_cf->fields[0]->java_type = SIG_JINT;
-  class_cf->fields[0]->field_offset = VALUE_UNRESOLVED;
-
+  class_cf->num_fields = 0;
   class_cf->nesting_level = 1;
 
   calculate_instance_field_offsets(env, class_cf);
