/* DO NOT EDIT THIS FILE - it is machine generated (JCGO_116) */

#ifdef JCGO_SEPARATED
#define JCGO_116
#include "jcgortl.h"
#include "Main.h"
#endif

#ifdef JCGO_116

#ifdef CHKALL_java_lang_VMRuntime
#include "jcgobchk.h"
#endif

JCGO_NOSEP_STATIC java_lang_VMRuntime_FinalizerThread CFASTCALL
java_lang_VMRuntime_FinalizerThread__this__ZLsI( java_lang_VMRuntime_FinalizerThread
 This, java_lang_String name, jint priority, jboolean noWait )
{
 {
  (java_lang_Thread__this__L40aspLsIZ((java_lang_Thread)This, (java_lang_VMThread)jnull,
   name, priority, (jboolean)jtrue));
  (java_lang_VMThread__rootGroupAdd__L20uxk(
   (java_lang_Thread)This));
  JCGO_FIELD_NZACCESS(This, noWait)= (jboolean)noWait;
 }
 return This;
}

JCGO_NOSEP_INLINE java_lang_VMRuntime_FinalizerThread CFASTCALL
java_lang_VMRuntime_FinalizerThread__new__ZLsI( java_lang_String name,
 jint priority, jboolean noWait )
{
 return java_lang_VMRuntime_FinalizerThread__this__ZLsI(
  (java_lang_VMRuntime_FinalizerThread)jcgo_newObject((jvtable)&java_lang_VMRuntime_FinalizerThread_methods),
  name, priority, noWait);
}

JCGO_NOSEP_INLINE void CFASTCALL
java_lang_VMRuntime_FinalizerThread__changeStalledFinalizer__( java_lang_VMRuntime_FinalizerThread
 This )
{
 {
  jint threadNum;
  {
   JCGO_SYNC_BLOCKSAFENZ(java_lang_VMRuntime_FinalizerThread__lock)
   {
    if (JCGO_FIELD_NZACCESS(This, noWait))
    {
#ifndef JCGO_SEHTRY
     JCGO_SYNC_JUMPLEAVE(0);
#endif
     return;
    }
    threadNum= ++java_lang_VMRuntime_FinalizerThread__stalledThreadCnt;
   }
   JCGO_SYNC_END
  }
  if ((java_lang_VMRuntime_FinalizerThread__createFinalizer__()))
  {
   java_lang_VMThread vt;
   if ((vt= JCGO_VLT_LFETCH(java_lang_VMThread, JCGO_FIELD_NZACCESS(This,
    vmThread))) != jnull)
   {
    (java_lang_VMThread__setName__Ls(
     vt, (java_lang_String__concat__Ls(
     JCGO_STRREF_OF(jcgo_string3_FnlzrThr), (java_lang_String__valueOf__I(
     threadNum))))));
    (java_lang_VMThread__setPriority__I(
     vt, java_lang_Thread__MIN_PRIORITY));
   }
  }
 }
}

JCGO_NOSEP_STATIC void CFASTCALL
java_lang_VMRuntime_FinalizerThread__run__( java_lang_VMRuntime_FinalizerThread
 This )
{
 {
  {
   JCGO_SYNC_BLOCKSAFENZ(java_lang_VMRuntime_FinalizerThread__lock)
   {
    JCGO_FIELD_NZACCESS(This, runFinalizeCount)= java_lang_VMRuntime_FinalizerThread__notifyCount;
   }
   JCGO_SYNC_END
  }
  do
  {
   {
    JCGO_TRY_BLOCK
    {
     do
     {
      (java_lang_VMRuntime__runFinalization0__());
      {
       JCGO_SYNC_BLOCKSAFENZ(java_lang_VMRuntime_FinalizerThread__lock)
       {
        if (JCGO_FIELD_NZACCESS(This, noWait))
        {
#ifndef JCGO_SEHTRY
         JCGO_SYNC_JUMPLEAVE(0);
         jcgo_tryLeave();
#endif
         return;
        }
        if (JCGO_FIELD_NZACCESS(This, runFinalizeCount) == java_lang_VMRuntime_FinalizerThread__notifyCount)
        {
         (java_lang_VMThread__wait__LoJI(
          (java_lang_Object)java_lang_VMRuntime_FinalizerThread__lock,
          JLONG_C(0), 0));
        }
        JCGO_FIELD_NZACCESS(This, runFinalizeCount)= java_lang_VMRuntime_FinalizerThread__notifyCount;
       }
       JCGO_SYNC_END
      }
     }
      while (jtrue);
    }
    JCGO_TRY_LEAVE
    JCGO_TRY_CATCHES(1)
    JCGO_TRY_CATCH(OBJT_java_lang_InterruptedException, MAXT_java_lang_InterruptedException)
    {
    }
    JCGO_TRY_RETHROW(1)
   }
  }
   while (jtrue);
 }
}

JCGO_NOSEP_FRWINL jboolean CFASTCALL
java_lang_VMRuntime_FinalizerThread__runFinalization__( java_lang_VMRuntime_FinalizerThread
 This )
{
 {
  java_lang_Thread thread;
  jint threadNum;
  jObject jcgo_rcvrL1;
  {
   JCGO_SYNC_BLOCKSAFENZ(java_lang_VMRuntime_FinalizerThread__lock)
   {
    threadNum= ++java_lang_VMRuntime_FinalizerThread__secondaryThreadCnt;
   }
   JCGO_SYNC_END
  }
  thread= (java_lang_Thread)(jcgo_rcvrL1= (jObject)(java_lang_String__concat__Ls(
   JCGO_STRREF_OF(jcgo_string4_FnlzrThr), (java_lang_String__valueOf__I(
   threadNum)))), java_lang_VMRuntime_FinalizerThread__new__ZLsI(
   (java_lang_String)jcgo_rcvrL1, (java_lang_Thread__getPriority__(
   (java_lang_Thread__currentThread__()))), (jboolean)jtrue));
  {
   JCGO_TRY_BLOCK
   {
    (java_lang_Thread__start__(
     thread));
   }
   JCGO_TRY_LEAVE
   JCGO_TRY_CATCHES(1)
   JCGO_TRY_CATCH(OBJT_java_lang_OutOfMemoryError, MAXT_java_lang_OutOfMemoryError)
   {
    return (jboolean)jfalse;
   }
   JCGO_TRY_RETHROW(1)
  }
  {
   JCGO_TRY_BLOCK
   {
    (java_lang_Thread__join__(
     thread));
   }
   JCGO_TRY_LEAVE
   JCGO_TRY_CATCHES(2)
   JCGO_TRY_CATCH(OBJT_java_lang_InterruptedException, MAXT_java_lang_InterruptedException)
   {
   }
   JCGO_TRY_RETHROW(2)
  }
  return (jboolean)jtrue;
 }
}

JCGO_NOSEP_STATIC jboolean CFASTCALL
java_lang_VMRuntime_FinalizerThread__createFinalizer__( void )
{
 {
  java_lang_VMRuntime_FinalizerThread thread;
  thread= (java_lang_VMRuntime_FinalizerThread__new__ZLsI(
   JCGO_STRREF_OF(jcgo_string5_FnlzrThr), java_lang_Thread__MAX_PRIORITY -
   (jint)1, (jboolean)jfalse));
  {
   JCGO_SYNC_BLOCKSAFENZ(java_lang_VMRuntime_FinalizerThread__lock)
   {
    java_lang_VMRuntime_FinalizerThread fnlz;
    {
     JCGO_TRY_BLOCK
     {
      (java_lang_Thread__start__(
       (java_lang_Thread)thread));
     }
     JCGO_TRY_LEAVE
     JCGO_TRY_CATCHES(1)
     JCGO_TRY_CATCH(OBJT_java_lang_OutOfMemoryError, MAXT_java_lang_OutOfMemoryError)
     {
#ifndef JCGO_SEHTRY
      JCGO_SYNC_JUMPLEAVE(0);
#endif
      return (jboolean)jfalse;
     }
     JCGO_TRY_RETHROW(1)
    }
    fnlz= java_lang_VMRuntime__finalizerThread;
    java_lang_VMRuntime__finalizerThread= thread;
    if (fnlz != jnull)
    {
     JCGO_FIELD_NZACCESS(fnlz, noWait)= (jboolean)jtrue;
    }
   }
   JCGO_SYNC_END
  }
  return (jboolean)jtrue;
 }
}

JCGO_NOSEP_FRWINL void CFASTCALL
java_lang_VMRuntime_FinalizerThread__notifyFinalizer__( java_lang_VMRuntime_FinalizerThread
 This )
{
 {
  java_lang_VMRuntime_FinalizerThread fnlz;
  {
   JCGO_SYNC_BLOCKSAFENZ(java_lang_VMRuntime_FinalizerThread__lock)
   {
    jint curNotifyCount;
    curNotifyCount= ++java_lang_VMRuntime_FinalizerThread__notifyCount;
    (java_lang_VMThread__notify__LoZ(
     (java_lang_Object)java_lang_VMRuntime_FinalizerThread__lock, (jboolean)jtrue));
    if ((fnlz= java_lang_VMRuntime__finalizerThread) == jnull || curNotifyCount -
     JCGO_FIELD_NZACCESS(fnlz, runFinalizeCount) <= java_lang_VMRuntime_FinalizerThread__MAX_NOTIFY_COUNT_DELTA ||
     (java_lang_Thread__currentThread__()) == (java_lang_Thread)fnlz)
    {
#ifndef JCGO_SEHTRY
     JCGO_SYNC_JUMPLEAVE(0);
#endif
     return;
    }
    JCGO_FIELD_NZACCESS(fnlz, runFinalizeCount)= curNotifyCount - (jint)1;
   }
   JCGO_SYNC_END
  }
  {
   JCGO_TRY_BLOCK
   {
    (java_lang_VMRuntime_FinalizerThread__changeStalledFinalizer__(
     fnlz));
   }
   JCGO_TRY_LEAVE
   JCGO_TRY_CATCHES(1)
   JCGO_TRY_CATCH(OBJT_java_lang_OutOfMemoryError, MAXT_java_lang_OutOfMemoryError)
   {
   }
   JCGO_TRY_RETHROW(1)
  }
 }
}

JCGO_NOSEP_DATA CONST struct java_lang_VMRuntime_FinalizerThread_methods_s
 java_lang_VMRuntime_FinalizerThread_methods=
{
 JCGO_CLASSREF_OF(java_lang_VMRuntime_FinalizerThread__class),
 JCGO_GCJDESCR_INIT(java_lang_VMRuntime_FinalizerThread_s, locals)
 OBJT_java_lang_VMRuntime_FinalizerThread,
 (JCGO_OBJSIZE_T)sizeof(struct java_lang_VMRuntime_FinalizerThread_s),
 NULL,
 JCGO_CLINIT_INIT(0)
 0,
 java_lang_Object__equals__Lo,
 java_lang_Object__hashCode__,
 java_lang_Thread__toString__,
 java_lang_Object__finalize__,
 java_lang_VMRuntime_FinalizerThread__run__
};

JCGO_NOSEP_DATA JCGO_NOTHR_CONST struct java_lang_VMRuntime_FinalizerThread_class_s
 java_lang_VMRuntime_FinalizerThread__class JCGO_THRD_ATTRNONGC=
{
 {
  &java_lang_Class_methods,
  JCGO_MON_INIT
  JCGO_OBJREF_OF(*(java_lang_Object)&java_lang_VMRuntime_FinalizerThread_methods),
  JCGO_STRREF_OF(jcgo_string1_FnlzrThr),
  JCGO_CLASSREF_OF(java_lang_Thread__class),
  ((jObjectArr)JCGO_OBJREF_OF(jcgo_array3_Object)),
  0x11a
 }
};

JCGO_NOSEP_DATA jint java_lang_VMRuntime_FinalizerThread__stalledThreadCnt=
 (jint)0;

JCGO_NOSEP_DATA jint java_lang_VMRuntime_FinalizerThread__secondaryThreadCnt=
 (jint)0;

JCGO_NOSEP_DATA jint java_lang_VMRuntime_FinalizerThread__notifyCount=
 (jint)0;

JCGO_NOSEP_DATA JCGO_NOTHR_CONST jcgo_arrtype2_GameMdl jcgo_array2_FnlzrThr
 JCGO_THRD_ATTRNONGC=
{
 (jvtable)&jObjectArr_methods,
 JCGO_MON_INIT
 0,
 JCGO_CLASSREF_OF(java_lang_Object__class),
 {
  jnull
 }
};

JCGO_NOSEP_DATA CONST jcgo_arrtype82_GmCnnctn jcgo_array6_FnlzrThr=
{
 (jvtable)&jbyteArr_methods,
 JCGO_MON_INIT
 18,
 {
  (jbyte)(jchar)83/*'S'*/, (jbyte)(jchar)116/*'t'*/, (jbyte)(jchar)97/*'a'*/,
   (jbyte)(jchar)108/*'l'*/, (jbyte)(jchar)108/*'l'*/, (jbyte)(jchar)101/*'e'*/,
   (jbyte)(jchar)100/*'d'*/, (jbyte)(jchar)32/*' '*/, (jbyte)(jchar)70/*'F'*/,
   (jbyte)(jchar)105/*'i'*/, (jbyte)(jchar)110/*'n'*/, (jbyte)(jchar)97/*'a'*/,
   (jbyte)(jchar)108/*'l'*/, (jbyte)(jchar)105/*'i'*/, (jbyte)(jchar)122/*'z'*/,
   (jbyte)(jchar)101/*'e'*/, (jbyte)(jchar)114/*'r'*/, (jbyte)(jchar)45/*'-'*/
 }
};

JCGO_NOSEP_DATA CONST jcgo_arrtype23_Object jcgo_array7_FnlzrThr=
{
 (jvtable)&jbyteArr_methods,
 JCGO_MON_INIT
 20,
 {
  (jbyte)(jchar)83/*'S'*/, (jbyte)(jchar)101/*'e'*/, (jbyte)(jchar)99/*'c'*/,
   (jbyte)(jchar)111/*'o'*/, (jbyte)(jchar)110/*'n'*/, (jbyte)(jchar)100/*'d'*/,
   (jbyte)(jchar)97/*'a'*/, (jbyte)(jchar)114/*'r'*/, (jbyte)(jchar)121/*'y'*/,
   (jbyte)(jchar)32/*' '*/, (jbyte)(jchar)102/*'f'*/, (jbyte)(jchar)105/*'i'*/,
   (jbyte)(jchar)110/*'n'*/, (jbyte)(jchar)97/*'a'*/, (jbyte)(jchar)108/*'l'*/,
   (jbyte)(jchar)105/*'i'*/, (jbyte)(jchar)122/*'z'*/, (jbyte)(jchar)101/*'e'*/,
   (jbyte)(jchar)114/*'r'*/, (jbyte)(jchar)45/*'-'*/
 }
};

JCGO_NOSEP_DATA JCGO_NOTHR_CONST struct java_lang_String_s jcgo_string1_FnlzrThr
 JCGO_THRD_ATTRNONGC=
{
 &java_lang_String_methods,
 JCGO_MON_INIT
 (java_lang_Object)JCGO_OBJREF_OF(jcgo_array4_VMRntm),
 0, 35, (jint)0xbda65ee7L
};

JCGO_NOSEP_DATA JCGO_NOTHR_CONST struct java_lang_String_s jcgo_string3_FnlzrThr
 JCGO_THRD_ATTRNONGC=
{
 &java_lang_String_methods,
 JCGO_MON_INIT
 (java_lang_Object)JCGO_OBJREF_OF(jcgo_array6_FnlzrThr),
 0, 18, (jint)0xb2c8955aL
};

JCGO_NOSEP_DATA JCGO_NOTHR_CONST struct java_lang_String_s jcgo_string4_FnlzrThr
 JCGO_THRD_ATTRNONGC=
{
 &java_lang_String_methods,
 JCGO_MON_INIT
 (java_lang_Object)JCGO_OBJREF_OF(jcgo_array7_FnlzrThr),
 0, 20, (jint)0xdeb3c4e5L
};

JCGO_NOSEP_DATA JCGO_NOTHR_CONST struct java_lang_String_s jcgo_string5_FnlzrThr
 JCGO_THRD_ATTRNONGC=
{
 &java_lang_String_methods,
 JCGO_MON_INIT
 (java_lang_Object)JCGO_OBJREF_OF(jcgo_array6_FnlzrThr),
 8, 9, (jint)0x8ca8c7f4L
};

#ifdef CHKALL_java_lang_VMRuntime
#include "jcgochke.h"
#endif

#endif
