+ replace_val_t *javalocals; /* values of javalocals */
+ u1 *javalocaltype; /* types of javalocals */
+ s4 javalocalcount; /* number of javalocals */
+
+ replace_val_t *syncslots;
+ s4 syncslotcount; /* XXX do we need more than one? */
+
+ /* mapping info */
+ rplpoint *fromrp; /* rplpoint used to read this frame */
+ codeinfo *fromcode; /* code this frame was using */
+ rplpoint *torp; /* rplpoint this frame was mapped to */
+ codeinfo *tocode; /* code this frame was mapped to */
+
+ /* info for native frames */
+ stackframeinfo *sfi; /* sfi for native frames, otherwise NULL */
+ s4 nativeframesize; /* size (bytes) of native frame */
+ u1 *nativepc;
+ ptrint nativesavint[INT_SAV_CNT]; /* XXX temporary */
+ double nativesavflt[FLT_REG_CNT]; /* XXX temporary */
+#if defined(HAS_ADDRESS_REGISTER_FILE)
+ ptrint nativesavadr[ADR_SAV_CNT]; /* XXX temporary */
+#endif
+};
+
+#define REPLACE_IS_NATIVE_FRAME(frame) ((frame)->sfi != NULL)
+#define REPLACE_IS_JAVA_FRAME(frame) ((frame)->sfi == NULL)
+
+
+struct sourcestate_t {
+ sourceframe_t *frames; /* list of source frames, from bottom up */
+};
+
+
+/* replace_safestack_t *********************************************************
+
+ This struct is used to allocate a safe stack area to be used during the
+ last phase of replacement. It also contains copies of all data needed
+ during this phase. (The data cannot be kept in normal variables, as
+ the C stack may be destroyed during replacement.)
+
+ CAUTION: Do not change the layout of this struct! The assembler code
+ depends on the order of fields. (`stack` must be first,
+ directly followed by `es`.)
+
+*******************************************************************************/
+
+struct replace_safestack_t {
+ u1 stack[REPLACE_SAFESTACK_SIZE];
+ executionstate_t es;
+ sourcestate_t *ss;
+ u1 *mem; /* start of the allocated memory chunk */
+ s4 dumpsize;