<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Dec 19, 2011, at 5:40 PM, Chris Lattner wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div><blockquote type="cite">(also, I implemented this by adding private anchors, like my original<br></blockquote><blockquote type="cite">version - this does actually have a difference at runtime, of course -<br></blockquote><blockquote type="cite">since now each of these types has another entry in their vtable.<br></blockquote><br>I think that's a perfectly fine cost :)</div></span></blockquote></div><br><div>Why is this acceptable?  Can't we just move more virtual methods out-of-line?  If we had a warning to find which classes we need to fix, why not just enforce that warning going forward as part of building the codebase once all of the offending classes are fixed?</div></body></html>