+
+methodinfo *parse(methodinfo *m, codegendata *cd, t_inlining_globals *inline_env)
+{
+ int p; /* java instruction counter */
+ int nextp; /* start of next java instruction */
+ int opcode; /* java opcode */
+ int i; /* temporary for different uses (ctrs)*/
+ int ipc = 0; /* intermediate instruction counter */
+ int b_count = 0; /* basic block counter */
+ int s_count = 0; /* stack element counter */
+ bool blockend = false; /* true if basic block end has been reached */
+ bool iswide = false; /* true if last instruction was a wide*/
+ instruction *iptr; /* current ptr into instruction array */
+ int gp; /* global java instruction counter */
+ /* inlining info for current method */
+
+ inlining_methodinfo *inlinfo = inline_env->inlining_rootinfo;
+ inlining_methodinfo *tmpinlinf;
+ int nextgp = -1; /* start of next method to be inlined */
+ int *label_index = NULL; /* label redirection table */
+ int firstlocal = 0; /* first local variable of method */
+ exceptiontable* nextex; /* points next free entry in extable */
+ u1 *instructionstart; /* 1 for pcs which are valid instr. starts */
+
+ u2 lineindex = 0;
+ u2 currentline = 0;
+ u2 linepcchange = 0;
+
+ u2 skipBasicBlockChange;
+
+if (DEBUG==true) {printf("PARSING: "); fflush(stdout);
+DEBUGMETH(m);
+}
+if (opt_rt) {
+ if (m->methodUsed != USED) {
+ if (verbose) {
+ printf(" rta missed: "); fflush(stdout);
+ METHINFO(m);
+ }
+ if ( (rtMissed = fopen("rtMissed", "a")) == NULL) {
+ printf("CACAO - rtMissed file: cant open file to write append \n");
+ }
+ else {
+ utf_fprint(rtMissed,m->class->name);
+ fprintf(rtMissed," "); fflush(rtMissed);
+ utf_fprint(rtMissed,m->name);
+ fprintf(rtMissed," "); fflush(rtMissed);
+ utf_fprint(rtMissed,m->descriptor);
+ fprintf(rtMissed,"\n"); fflush(rtMissed);
+ fclose(rtMissed);
+ }
+ }
+}
+ /* INLINING */
+
+ if (useinlining) {
+ label_index = inlinfo->label_index;
+ m->maxstack = inline_env->cummaxstack;
+ /*JOWENN m->exceptiontablelength = inline_env->cumextablelength;*/
+ tmpinlinf = (inlining_methodinfo*)
+ list_first(inlinfo->inlinedmethods);
+ if (tmpinlinf != NULL) nextgp = tmpinlinf->startgp;
+ }
+
+/**** static analysis has to be called before inlining
+ which has to be called before reg_set
+ which has to be called before parse (or ???)
+ will check if method being parsed was analysed here
+ ****/
+ if ((opt_xta) && (verbose)) {
+ /**RT_jit_parse(m);**/
+ printf("XTA requested, not available\n");
+ }
+ if ((opt_vta) && (verbose))
+ printf("VTA requested, not yet implemented\n");