[Webkit-unassigned] [Bug 94779] To reduce cost of converting type during modulo for integers

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Aug 24 00:10:17 PDT 2012


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





--- Comment #8 from Filip Pizlo <fpizlo at apple.com>  2012-08-24 00:10:16 PST ---
(In reply to comment #7)
> (In reply to comment #4)
> > This is completely wrong.  Why are you emitting a speculationCheck *after* the call?  The speculationCheck() should be exactly where the branch is.  Please hoist this up to the checkZero, above.
> 
> Quick question!!
> What's the role of speculationCheck? 

It links the branch to the OSR exit.

> It just links branches to OSRExit as I understood so that I thought it doesn't matter whether speculationCheck is emitted after the call or before.

You're forgetting about register allocation.

> What's the expected badness if speculationCheck is emitted after the call?

In your case, you're calling flushRegisters() after emitting the speculation branch, but before calling speculationCheck().  So, the OSR exit offramp will think that all registers were flushed at the branch that is linked to it.

In general, you don't want to do:

Jump jump = m_jit.branch(...);
speculationCheck(..., jump);

If you can just do:

speculationCheck(..., m_jit.branch(...));

The latter is almost always guaranteed to work, while the former will start to become increasingly risky as you start putting things between the call to m_jit.branch and the speculationCheck().

-- 
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