Hi,

I think I am quite close to finish the DFG JIT port of ARM traditional as
you requested, but I still don't understand the concept of watchpoints,
and this is a blocker for me. Filip or anyone, could you help me?

>> - What is the difference between labelIgnoringWatchpoints,
>> labelForWatchpoint, and label.

> Filip can best answer your question about watchpoints.

First function:

    AssemblerLabel labelForWatchpoint()
    {
        AssemblerLabel result = m_formatter.label();
        if (static_cast<int>(result.m_offset) != m_indexOfLastWatchpoint)
            result = label();
        m_indexOfLastWatchpoint = result.m_offset;
        m_indexOfTailOfLastWatchpoint = result.m_offset +
maxJumpReplacementSize();
        return result;
    }

- why result.m_offset != m_indexOfLastWatchpoint? Isn't this should be equal?
- maxJumpReplacementSize() is constant, why do you need two member
variables here? Isn't m_indexOfLastWatchpoint =
m_indexOfTailOfLastWatchpoint - maxJumpReplacementSize() all the time?

AssemblerLabel label() {...}

- What is the purpose of inserting these nops()?

static void replaceWithJump(void* instructionStart, void* to) {...}

- This is the strangest function for me. Replace what? A jump, a nop or
something else?
- How this function relates to labelForWatchpoint()?
- Do you have to manually insert nops / jumps after a labelForWatchpoint?

Since I don't understand the concept of these functions, my questions may
be incorrect. Please, help me.

Thanks,
Zoltan


_______________________________________________
squirrelfish-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/squirrelfish-dev

Reply via email to