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