[Webkit-unassigned] [Bug 44329] SH4 JIT SUPPORT

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Dec 13 07:35:44 PST 2010


https://bugs.webkit.org/show_bug.cgi?id=44329





--- Comment #43 from thouraya <thouraya.andolsi at st.com>  2010-12-13 07:35:43 PST ---
Hello,

I have another patch for flushConstantPool function.

In SH4, the size of the instruction is 16 bits.
So, when we need to jump around the constantpool we shoold emit 2 instructions BRA and NOP (otherwise we will get a misaligned access address)


        if (useBarrier) {
            putIntegral(AssemblerType::placeConstantPoolBarrier(m_numConsts * sizeof(uint32_t) + alignPool));
#if CPU(SH4)
            // otherwise we will get a misaligned address
            AssemblerBuffer::putShort(AssemblerType::padForAlign16);
#endif
        }

Regards.

(In reply to comment #42)
> (In reply to comment #39)
> > Created an attachment (id=76199)
 --> (https://bugs.webkit.org/attachment.cgi?id=76199&action=review) [details] [details]
> > JIT support JSValue32-64
> > 
> > Hi,
> > 
> > Attached new patche to add JIT support for revision 71224 for webkit version 1.3.5 supporting JSVALUE32_64.
> 
> Were you able to successfully run this patch by just downloading the SVN revision 71224 and applying the constant pool patch?
> 
> Your patch applies cleanly, but builds with two warnings (signed-unsigned comparison and no return in function returning value) and I get segmentation fault on the JavaScript shell application (jsc) when it finds something that can be JITed (like loops with mathematical expressions inside them).
> 
> Debugging let me to believe that this is happening due to JIT code putting code not at 32 bit boundaries.
> 
> Here is what I'm getting:
> 
> bash-3.00# jsc
> > a = 5;
> 5
> > a
> 5
> > for (count=1; count<=100; count=count+1) { a = a + count; }
> Unaligned userspace access in "jsc" pid=851 pc=0x2b48ae24 ins=0x6332
> Sending SIGBUS to "jsc" due to unaligned access (PC 2b48ae24 PR 2968f85a)
> 
> The kernel on STLinux has this comment on the function that handles unaligned accesses:
> 
> fixup:
>         /* unaligned PC is not something we can fix */
>         if (regs->pc & 1) {
>             si_code = BUS_ADRALN;
>             goto uspace_segv;
>         }
> 
> [...]
> 
> uspace_segv:
>         printk(KERN_NOTICE "Sending SIGBUS to \"%s\" due to unaligned "
>                "access (PC %lx PR %lx)\n", current->comm, regs->pc,
>                regs->pr);
> 
> 
> Has anyone seen a different behavior with this patch?
> 
> Best regards,
> 
> Eduardo.
> 
> > Regards,
> > Thouraya.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list