Add FINAL decorators to the InlineBox class hierarchy.

(FINAL is a macro in wtf/Compiler.h that does the correct thing if the compiler does not support "final").
The approach used is as simple as possible whilst being thorough.
So, leaf classes have FINAL applied to the whole class whereas intermediary classes have FINAL applied to relevant methods.

FINAL allows a compiler to devirtualize call sites and turn them into direct calls. As you might expect, this is perf positive:
(clang on Linux):
- line_layout.html goes from 120 runs/s -> 123 runs/2, +2.5%
- html5-full-render.html goes from 3176ms -> 3162ms, +0.4%

I have confidence that the former result is statistically significant (as the numbers are very very stable) but not the latter.

Elliott for review of approach, Abhishek as OWNER of rendering.


R=esprehn@chromium.org,infero@chromium.org
TEST=wktry worked

Review URL: https://chromiumcodereview.appspot.com/14093017

git-svn-id: svn://svn.chromium.org/blink/trunk@148628 bbb929c8-8fbe-4397-9dbb-9b2b20218538
9 files changed