dynamic native library loading, some inlining changes
[cacao.git] / src / vm / jit / inline / inline.c
index 6c264780484ae44b0f732ce5534a43caabcba62b..4448bc7265fdbef460dd9aa45fd5b32b33016e7e 100644 (file)
@@ -28,7 +28,7 @@ globals moved to structure and passed as parameter
 
    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 $
 
 */
 
@@ -73,7 +73,7 @@ t_inlining_globals *inlining_init0(methodinfo *m,
         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?
@@ -113,9 +113,11 @@ if (DEBUGi==true) {
     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;
@@ -128,7 +130,7 @@ void inlining_cleanup(t_inlining_globals *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);
 
@@ -137,15 +139,19 @@ void inlining_push_compiler_variables(int i, int p, int nextp, int opcode, inlin
        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)
 {
@@ -158,6 +164,11 @@ void inlining_pop_compiler_variables(
        *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*/
@@ -441,6 +452,7 @@ inlining_methodinfo *inlining_analyse_method(methodinfo *m,
                                                        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)) &&