NativeStream.ObjectRef refJava;
/* Link VmMethod_compile */
VmType<?> vmMethodClass = loadClass(VmMethod.class);
refJava = os.getObjectRef(vmMethodClass.getMethod("recompile", "()V"));
os.getObjectRef(new Label("VmMethod_recompile")).link(refJava);
final VmType<?> vmThreadClass = loadClass(VmThread.class);
/* Link VmThread_systemException */
refJava = os.getObjectRef(vmThreadClass.getMethod("systemException",
"(II)Ljava/lang/Throwable;"));
os.getObjectRef(sbcSystemException).link(refJava);
/* Link VmThread_runThread */
refJava = os.getObjectRef(vmThreadClass.getMethod("runThread",
"(Lorg/jnode/vm/scheduler/VmThread;)V"));
os.getObjectRef(vmThreadRunThread).link(refJava);
/* Link VmProcessor_reschedule */
VmType<?> vmProcClass = loadClass(VmProcessor.class);
refJava = os.getObjectRef(vmProcClass.getMethod("reschedule", "()V"));
os.getObjectRef(vmReschedule).link(refJava);
/* Link vmCurProcessor */
refJava = os.getObjectRef(processor);
os.getObjectRef(vmCurProcessor).link(refJava);
/* Set statics index of VmSystem_currentTimeMillis */
final VmType<?> vmSystemClass = loadClass(VmSystem.class);
final int staticsIdx = ((VmStaticField) vmSystemClass
.getField("currentTimeMillis")).getSharedStaticsIndex();
final X86BinaryAssembler os86 = (X86BinaryAssembler) os;
os86.set32(os.getObjectRef(new Label("currentTimeMillisStaticsIdx"))
.getOffset(), staticsIdx);
/* Link vm_findThrowableHandler */
refJava = os
.getObjectRef(vmSystemClass
.getMethod(
"findThrowableHandler",
"(Ljava/lang/Throwable;Lorg/vmmagic/unboxed/Address;Lorg/vmmagic/unboxed/Address;)" +
"Lorg/vmmagic/unboxed/Address;"));
os.getObjectRef(vmFindThrowableHandler).link(refJava);
// Link Luser_esp
refJava = os.getObjectRef(initialStackPtr);
os.getObjectRef(new Label("Luser_esp")).link(refJava);
// Link freeMemoryStart
refJava = os.getObjectRef(imageEnd);
os.getObjectRef(new Label("freeMemoryStart")).link(refJava);
// Link bootHeapStart
refJava = os.getObjectRef(bootHeapStart);
os.getObjectRef(new Label("bootHeapStart")).link(refJava);
// Link bootHeapEnd
refJava = os.getObjectRef(bootHeapEnd);
os.getObjectRef(new Label("bootHeapEnd")).link(refJava);
// Link VmX86Processor_applicationProcessorMain
final VmType<?> x86ProcessorClass = loadClass(VmX86Processor.class);
refJava = os.getObjectRef(x86ProcessorClass.getMethod(
"applicationProcessorMain", "()V"));
os.getObjectRef(new Label("VmX86Processor_applicationProcessorMain"))
.link(refJava);
// Link VmX86Processor_broadcastTimeSliceInterrupt
refJava = os.getObjectRef(x86ProcessorClass.getMethod(
"broadcastTimeSliceInterrupt", "()V"));
os.getObjectRef(new Label("VmX86Processor_broadcastTimeSliceInterrupt"))
.link(refJava);
}