What causes deoptimization in V8?
Passing objects with different hidden classes, adding properties after construction, deleting properties, changing argument types, and using eval, with, or delete. Deoptimization discards optimized machine code and falls back to bytecode.
Verify This Answer
Cross-check this information using these trusted sources:
More FAQs in How V8 Optimizes JavaScript Code
V8 uses hidden classes (stable object shapes), inline caching (cached property locations), and TurboFan (optimized machine code for hot functions). It collects feedback and deoptimizes when assumptions break.
Internal labels assigned to objects based on their shape (property names and order). Objects with the same hidden class share optimized code. Different shapes create new hidden classes, causing deoptimization and slower code.
V8 caches the memory location of a property accessed in a hot function. Next time, it directly reads from the cached location (fast). If the hidden class changes, the cache is invalidated and the function deoptimizes.
Still have questions?
Browse all our FAQs or reach out to our support team
