@Override
	public void generateInitCode(JitCodeGenerator gen, ClassVisitor cv, MethodVisitor iv) {
		FieldForContext ctxField = gen.requestStaticFieldForContext(target.rvCtx);
		cv.visitField(ACC_PRIVATE | ACC_FINAL, name(), TDESC_EXIT_SLOT, null, null);

		// []
		InitFixedLocal.THIS.generateLoadCode(iv);
		// [this]
		iv.visitInsn(DUP);
		// [this,this]
		iv.visitLdcInsn(target.address.getOffset());
		// [this,this,target:LONG]
		ctxField.generateLoadCode(gen, iv);
		// [this,this,target:LONG,ctx:RV]
		iv.visitMethodInsn(INVOKEINTERFACE, NAME_JIT_COMPILED_PASSAGE, "createExitSlot",
			MDESC_JIT_COMPILED_PASSAGE__CREATE_EXIT_SLOT, true);
		// [this,slot]
		iv.visitFieldInsn(PUTFIELD, gen.nameThis, name(), TDESC_EXIT_SLOT);
		// []
	}
{@inheritDoc}

<p>
Consider the target {@code (ram:00401234,ctx=80000000)}. The declaration is equivalent to:

<pre>
private final {@link ExitSlot} exit_401234_80000000;
</pre>

<p>
And the initialization is equivalent to:

<pre>
exit_401234_80000000 = {@link JitCompiledPassage#createExitSlot(long, RegisterValue) createExitSlot}(0x401234, CTX_80000000);
</pre>

<p>
Note that this method will ensure the {@code CTX_...} field is allocated and loads its value
as needed.
Ghidra/Framework/Emulation/src/main/java/ghidra/pcode/emu/jit/gen/FieldForExitSlot.java