We presented object inlining, an optimization that automatically inline allocates objects, allowing us obtain similar efficiency to a system with explicit inline allocation while preserving the programmability benefits of a uniform object model. To do this requires a novel analysis and transformation mechanism that builds upon previous work on analysis and specialization of object-oriented programs. Our evaluation shows that our analysis can handle not only situations where inline allocation is done in C++, but also situations where such manual allocation would be conceptually disruptive. We showed several object-oriented benchmarks running up three times as fast due to object inlining as opposed to without it, and matching the performance of code with inlining specified by hand.