• gsathya's avatar
    Promises: Make PromiseSet operation monomorphic · df4f8a2b
    gsathya authored
    The PromiseSet operation is called with two types of promises
    1) A newly created promise object with no properties
    2) Promise object with callbacks and other properties
    
    PromiseSet is called with the first type of promise (with no
    properties) from multiple call sites. PromiseSet is called with the
    second type of promise object only from FulfillPromise. Furthermore,
    this call only sets the value and status of the promise, the rest of
    the values are reset to UNDEFINED (which isn't necessary).
    
    This patch inlines the calls to set the value and status of the
    promise in FulfillPromise, instead of calling out to PromiseSet.
    
    This patch also reduces the number of symbol lookups, as we only set
    the value and status of the promise, and don't change the callback or
    deferred symbols.
    
    This patch results in a performance improvement of 2.8% over 5 runs in
    the bluebird benchmark.
    
    BUG=v8:5046
    
    Review-Url: https://codereview.chromium.org/2025073002
    Cr-Commit-Position: refs/heads/master@{#36688}
    df4f8a2b
promise.js 18.8 KB