From 7c1c7439f0dfde4caf1237420a236327096cec8c Mon Sep 17 00:00:00 2001 From: ajordan Date: Thu, 28 Jun 2007 00:01:34 +0000 Subject: [PATCH] * src/vm/jit/sparc64/md-abi.c (md_param_alloc): Added absolute offsets for native arguments (reguse * 8). * src/vm/jit/sparc64/codegen.c (codegen_emit_stub_native): Adapted to change above. --- src/vm/jit/sparc64/codegen.c | 13 +++++++------ src/vm/jit/sparc64/md-abi.c | 4 ++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/vm/jit/sparc64/codegen.c b/src/vm/jit/sparc64/codegen.c index 823f4fef8..e1bbb3ada 100644 --- a/src/vm/jit/sparc64/codegen.c +++ b/src/vm/jit/sparc64/codegen.c @@ -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 { diff --git a/src/vm/jit/sparc64/md-abi.c b/src/vm/jit/sparc64/md-abi.c index 3c56b6f94..c359dcc82 100644 --- a/src/vm/jit/sparc64/md-abi.c +++ b/src/vm/jit/sparc64/md-abi.c @@ -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++; } -- 2.25.1