* src/vm/jit/sparc64/md-abi.c (md_param_alloc): Added absolute offsets for
authorajordan <none@none>
Thu, 28 Jun 2007 00:01:34 +0000 (00:01 +0000)
committerajordan <none@none>
Thu, 28 Jun 2007 00:01:34 +0000 (00:01 +0000)
native arguments (reguse * 8).

* src/vm/jit/sparc64/codegen.c (codegen_emit_stub_native): Adapted to
change above.

src/vm/jit/sparc64/codegen.c
src/vm/jit/sparc64/md-abi.c

index 823f4fef8b57c2a5d913c638aded9ef627e55469..e1bbb3ada3d6198aba700030b40c64cd31d6be84 100644 (file)
@@ -3168,8 +3168,9 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                                        s2 = nat_argintregs[nmd->params[j].regoff];
                                        M_INTMOVE(s1, s2);
                                } else {
-                                       s2 = nmd->params[j].regoff - 6 * 8;
-                                       M_AST(s1, REG_SP, CSTACK + s2);
+                                       /* nmd's regoff is relative to the start of the param array */
+                                       s2 = BIAS + WINSAVE_CNT * 8 + nmd->params[j].regoff;
+                                       M_AST(s1, REG_SP, s2);
                                }
 
                        } else {
@@ -3183,9 +3184,9 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
                                }
 
                                s1 = md->params[i].regoff + cd->stackframesize * 8;
-                               s2 = nmd->params[j].regoff - 6 * 8;
+                               s2 = BIAS + WINSAVE_CNT + 8 + nmd->params[j].regoff;
                                M_ALD(REG_ITMP1, REG_SP, CSTACK + s1);
-                               M_AST(REG_ITMP1, REG_SP, CSTACK + s2);
+                               M_AST(REG_ITMP1, REG_SP, s2);
                        }
 
                } else {
@@ -3223,8 +3224,8 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f)
 
                                        /* JIT stack -> NAT reg */
 
-                                       s2 = nmd->params[j].regoff; 
-                                       M_DLD(s2, REG_SP, CSTACK + s1);
+                                       s2 = BIAS + WINSAVE_CNT * 8 + nmd->params[j].regoff; 
+                                       M_DLD(s2, REG_SP, s1);
                                }
                                else {
 
index 3c56b6f942b8a47dde557a3c35ea747141ffee70..c359dcc8257c22064ea9e0adf1db89d5cc539bd7 100644 (file)
@@ -251,7 +251,7 @@ void md_param_alloc_native(methoddesc *md)
 
                        } else {
                                pd->inmemory = true;
-                               pd->regoff = reguse;
+                               pd->regoff = reguse * 8;
                                reguse++;
                        }
 
@@ -267,7 +267,7 @@ void md_param_alloc_native(methoddesc *md)
                                md->argfltreguse = reguse;
                        } else {
                                pd->inmemory = true;
-                               pd->regoff = reguse;
+                               pd->regoff = reguse * 8;
                                reguse++;
                        }