[webkit-dev] MIPS port problem - cti_op_put_by_id slow case problem

Toshiyasu Morita tm_webkit at yahoo.com
Tue Jun 16 17:16:20 PDT 2009


I am performing this work on contract, and therefore I do not own the changes.
Therefore, I cannot submit the changes.

Toshi

--- On Wed, 6/17/09, Maciej Stachowiak <mjs at apple.com> wrote:

From: Maciej Stachowiak <mjs at apple.com>
Subject: Re: [webkit-dev] MIPS port problem - cti_op_put_by_id slow case problem
To: "Toshiyasu Morita" <tm_webkit at yahoo.com>
Cc: webkit-dev at lists.webkit.org
Date: Wednesday, June 17, 2009, 12:02 AM

It's cool that you are working on a MIPS port of the JIT. However, it's somewhat off-topic to ask for help with private ports here. There's also not much we can do to help without actually seeing the code.
I would suggest posting some patches to get the start of your port in svn.webkit.org, then it will be easier for us to help and for other collaborators to contribute.
Cheers,Maciej 

On Jun 16, 2009, at 4:53 PM, Toshiyasu Morita wrote:
I've gotten the MIPS port up to where it can compile and execute through about 9 functions of a testcase before it crashes.

The reason for the crash appears to be related to op_put_by_id. When this opcode is compiled, the JIT executes:

void JIT::compilePutByIdSlowCase(int baseVReg, Identifier* ident, int, Vector<SlowCaseEntry>::iterator& iter, unsigned propertyAccessInstructionIndex)
{
    linkSlowCaseIfNotJSCell(iter, baseVReg);
    linkSlowCase(iter);

    emitPutJITStubArgConstant(ident, 2);
    emitPutJITStubArg(regT0, 1);
    emitPutJITStubArg(regT1, 3);
    Call call = emitCTICall(JITStubs::cti_op_put_by_id);

    // Track the location of the call; this will be used to recover patch information.
    m_propertyAccessCompilationInfo[propertyAccessInstructionIndex].callReturnLocation = call;
}

When the code is initially generated, it generates a call to address 0x6a2294 (JIT::cti_op_put_by_id) which is correct. Later on, something modifies the instruction to call address 0x6a26dc instead, which causes an infinite loop.

What is the purpose of dynamically modifying this call instruction?

Toshi


       _______________________________________________
webkit-dev mailing list
webkit-dev at lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev




      
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20090616/8ae5e9ef/attachment.html>


More information about the webkit-dev mailing list