The problem was that synchronous Maglev OSR potentially caused code deoptimization during compilation dependency finalization; this led to a lazy deopt when returning from the call to Runtime_CompileOptimizedOSRFromMaglev. However, a lazy deopt is disallowed at this point, since a) Maglev doesn't support marking an opcode as both lazy- and eager deopt, and b) the JumpLoop opcode is already marked as eager deopt since that's how OSR is implemented under the hood. See also the comment in runtime-compiler.cc. We fix this by changing synchronous Maglev-to-Turbofan OSR behavior s.t. actual OSR compilation is triggered from Ignition (and not from Maglev). In other words, when synchronous OSR is requested: 1. trigger an eager deopt from Maglev to Ignition by returning a non-null code object from Runtime_CompileOptimizedOSRFromMaglev. 2. Ignition handles the pending OSR compile request (through osr_urgency). This CL also reverts previous partial fixes: This reverts commit |
||
---|---|---|
.. | ||
regress-6373.js | ||
regress-1359382.js | ||
regress-1359723.js | ||
regress-1359928.js | ||
regress-1363450.js | ||
regress-1364074.js | ||
regress-1368046.js | ||
regress-1381663.js | ||
regress-1383712.js | ||
regress-1392936.js | ||
regress-1394279.js | ||
regress-crbug-1392061.js | ||
regress-crbug-1394036.js | ||
regress-v8-13289.js |