Authors: Dieter Thuernbeck
- $Id: inline.c 1414 2004-10-04 12:55:33Z carolyn $
+ $Id: inline.c 1429 2004-11-02 08:58:26Z jowenn $
*/
inlining_set_compiler_variables_fun(m, inline_env);
inline_env->isinlinedmethod = 0;
inline_env->cumjcodelength = m->jcodelength; /* for not inlining */
- inline_env->cummaxstack = 0;
+ inline_env->cummaxstack = m->maxstack; /*why has here been 0 ? */
inline_env->cumextablelength = 0;
inline_env->cumlocals = m->maxlocals;
inline_env->cummethods = 0;//co not global or static-used only here?
m->maxlocals, inline_env->cumlocals,
m->maxstack, inline_env->cummaxstack); fflush(stdout);
}
+#if 0
+/*This looks wrong*/
m->maxlocals = inline_env->cumlocals; //orig not used
m->maxstack = inline_env->cummaxstack; //orig global maxstack var!!
-
+#endif
//panic("TEMP so can test just inline init\n");
}
return inline_env;
}
-void inlining_push_compiler_variables(int i, int p, int nextp, int opcode, inlining_methodinfo *inlinfo, t_inlining_globals *inline_env)
+void inlining_push_compiler_variables(int i, int p, int nextp, int opcode, u2 lineindex,u2 currentline,u2 linepcchange,inlining_methodinfo *inlinfo, t_inlining_globals *inline_env)
{
t_inlining_stacknode *new = NEW(t_inlining_stacknode);
new->nextp = nextp;
new->opcode = opcode;
new->method = inline_env->method;
+ new->lineindex=lineindex;
+ new->currentline=currentline;
+ new->linepcchange=linepcchange;
new->inlinfo = inlinfo;
-
list_addfirst(inline_env->inlining_stack, new);
inline_env->isinlinedmethod++;
}
void inlining_pop_compiler_variables(
- int *i, int *p, int *nextp, int *opcode,
+ int *i, int *p, int *nextp,
+ int *opcode, u2 *lineindex,
+ u2 *currentline,u2 *linepcchange,
inlining_methodinfo **inlinfo,
t_inlining_globals *inline_env)
{
*p = tmp->p;
*nextp = tmp->nextp;
*opcode = tmp->opcode;
+
+ *lineindex=tmp->lineindex;
+ *currentline=tmp->currentline;
+ *currentline=tmp->linepcchange;
+
*inlinfo = tmp->inlinfo;
inline_env->method = tmp->method; /*co*/
break;
}
+ if (imi->flags & ACC_NATIVE) log_text("Native method,no inlining"); //DEBUG
if ((inline_env->cummethods < INLINING_MAXMETHODS) &&
(!(imi->flags & ACC_NATIVE)) &&
(!inlineoutsiders || (m->class == imr->class)) &&