Changes: Christian Ullrich
Edwin Steiner
- $Id: stack.h 5446 2006-09-09 20:05:35Z edwin $
-
*/
/* macros used internally by analyse_stack ************************************/
-/*--------------------------------------------------*/
-/* STACK DEPTH CHECKING */
-/*--------------------------------------------------*/
-
-#if defined(ENABLE_VERIFIER)
-#define CHECK_STACK_DEPTH(depthA,depthB) \
- do { \
- if ((depthA) != (depthB)) \
- goto throw_stack_depth_error; \
- } while (0)
-#else /* !ENABLE_VERIFIER */
-#define CHECK_STACK_DEPTH(depthA,depthB)
-#endif /* ENABLE_VERIFIER */
-
-
/*--------------------------------------------------*/
/* BASIC TYPE CHECKING */
/*--------------------------------------------------*/
#define NEWSTACK0(s) NEWSTACK(s,UNDEFVAR,0)
-/*--------------------------------------------------*/
-/* MACROS FOR HANDLING BASIC BLOCKS */
-/*--------------------------------------------------*/
-
-/* COPYCURSTACK makes a copy of the current operand stack (curstack)
- * and returns it in the variable copy.
- *
- * This macro is used to propagate the operand stack from one basic
- * block to another. The destination block receives the copy as its
- * input stack.
- */
-#define COPYCURSTACK(sd, copy) { \
- stackptr s; \
- if (curstack) { \
- s = curstack; \
- (sd).new += stackdepth; \
- copy = (sd).new; \
- while (s) { \
- copy--; \
- copy->prev = copy-1; \
- copy->creator = NULL; \
- copy->type = s->type; \
- copy->flags = 0; \
- copy->varkind = STACKVAR; \
- s = s->prev; \
- } \
- copy->prev = NULL; \
- copy = (sd).new-1; \
- } \
- else \
- copy = NULL; \
-}
-
-
-/* external macros ************************************************************/
-
-#define BLOCK_OF(index) \
- (jd->new_basicblocks + jd->new_basicblockindex[index])
-
-
/* function prototypes ********************************************************/
bool stack_init(void);
-bool new_stack_analyse(jitdata *jd);
+bool stack_analyse(jitdata *jd);
+
+void stack_javalocals_store(instruction *iptr, s4 *javalocals);
#endif /* _STACK_H */