Ignore:
Timestamp:
Mar 27, 2009, 8:50:39 PM (16 years ago)
Author:
[email protected]
Message:

Improve performance of Function.prototype.call
<https://bugs.webkit.org/show_bug.cgi?id=24907>

Reviewed by Gavin Barraclough

Optimistically assume that expression.call(..) is going to be a call to
Function.prototype.call, and handle it specially to attempt to reduce the
degree of VM reentrancy.

When everything goes right this removes the vm reentry improving .call()
by around a factor of 10.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/bytecode/CodeBlock.cpp

    r40993 r42065  
    889889            break;
    890890        }
    891         case op_jnless: {
     891        case op_jneq_ptr: {
    892892            int r0 = (++it)->u.operand;
    893893            int r1 = (++it)->u.operand;
    894894            int offset = (++it)->u.operand;
    895             printf("[%4d] jnless\t\t %s, %s, %d(->%d)\n", location, registerName(r0).c_str(), registerName(r1).c_str(), offset, locationForOffset(begin, it, offset));
     895            printf("[%4d] jneq_ptr\t\t %s, %s, %d(->%d)\n", location, registerName(r0).c_str(), registerName(r1).c_str(), offset, locationForOffset(begin, it, offset));
     896            break;
     897        }
     898        case op_jnless: {
     899            int r0 = (++it)->u.operand;
     900            JSValuePtr function = JSValuePtr((++it)->u.jsCell);
     901            int offset = (++it)->u.operand;
     902            printf("[%4d] jnless\t\t %s, %s, %d(->%d)\n", location, registerName(r0).c_str(), valueToSourceString(exec, function).ascii(), offset, locationForOffset(begin, it, offset));
    896903            break;
    897904        }
Note: See TracChangeset for help on using the changeset viewer.