On Sat, 2009-08-15 at 18:55 +0200, Tomek Grabiec wrote:
> 2009/8/15 Eduard - Gabriel Munteanu <eduard.munte...@linux360.ro>:
> > The previous implementation passed an incorrect object reference to
> > fixup_vtable() from code generated by emit_trampoline(). That was
> > because *this gets passed by %rdi, not stack, on x86-64. Therefore, we
> > now make use of the saved %rdi to pass it to fixup_vtable().
> >
> > Signed-off-by: Eduard - Gabriel Munteanu <eduard.munte...@linux360.ro>
> > ---
> >  arch/x86/emit-code.c |   15 +++++++++++++++
> >  1 files changed, 15 insertions(+), 0 deletions(-)
> >
> > diff --git a/arch/x86/emit-code.c b/arch/x86/emit-code.c
> > index 5dd4e68..b333337 100644
> > --- a/arch/x86/emit-code.c
> > +++ b/arch/x86/emit-code.c
> > @@ -2920,6 +2920,21 @@ void emit_trampoline(struct compilation_unit *cu,
> >                           MACH_REG_RCX);
> >        __emit64_test_membase_reg(buf, MACH_REG_RCX, 0, MACH_REG_RCX);
> >
> > +       if (method_is_virtual(cu->method)) {
> > +               __emit64_push_reg(buf, MACH_REG_RAX);
> > +
> > +               /*
> > +                * 0x30(%rsp) contains the %rdi passed
> > +                * to the trampoline, which we pushed earlier.
> > +                */
> > +               __emit64_mov_imm_reg(buf, (unsigned long) cu, MACH_REG_RDI);
> > +               __emit64_mov_membase_reg(buf, MACH_REG_RSP, 0x30, 
> > MACH_REG_RSI);
> > +               __emit64_mov_reg_reg(buf, MACH_REG_RAX, MACH_REG_RDX);
> > +               __emit_call(buf, fixup_vtable);
> > +
> > +               __emit64_pop_reg(buf, MACH_REG_RAX);
> > +       }
> > +
> >        __emit64_pop_reg(buf, MACH_REG_R9);
> >        __emit64_pop_reg(buf, MACH_REG_R8);
> >        __emit64_pop_reg(buf, MACH_REG_RCX);
> > --
> > 1.6.0.6
> 
> Since commit c0c9caa1c6a8c5f40fc1b4bb5026fc07e2a7ca2a
> we no longer pass object reference to fixup_vtable() so there is also no
> need to call it from trampoline. It is called from jit_magic_trampoline() now.

I skipped this patch for now as discussed with Tomek on IRC.

                        Pekka


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel

Reply via email to