When I use the Developer Tools in Chrome to collect JavaScript CPU Profiles, I am getting two mysterious warnings on functions:
The explanations for these bailout reasons are being crowdsourced and documented in this github thread: https://github.com/GoogleChrome/devtools-docs/issues/53
The short explanation: V8 will not try to optimize functions with some constructs, try/catch block is one example, the full list may change over time as the engine evolves. It can also give up if it tries to optimize and then has to deoptimize some hot function too many times (e.g. because of the type feedback being different each time the function executes).