dfef2338eb
The VM creates context objects even though it's only applicable in a non-taken branch. This CL moves such a branch into its own function and thus avoids the context object creation when loading a dill file eagerly. This CL further more reduces the number of context creations by not lazy loading basically non-existing function node bodies (e.g. the body of a FunctionNode in the outline). The change has the following effect when loading platform/outline 100 times after 2 seconds warmup (statistics on 5 runs): Outline, lazy loading disabled: -12.8133% +/- 2.26214% Outline, lazy loading enabled: -40.9197% +/- 1.50042% Platform, lazy loading disabled: No difference proven at 95.0% confidence Platform, lazy loading enabled: -44.3347% +/- 0.613235% Bug: Change-Id: I9634e0a81f43efeb4e2524edb765d36072074f1e Reviewed-on: https://dart-review.googlesource.com/18220 Reviewed-by: Peter von der Ahé <ahe@google.com> Commit-Queue: Jens Johansen <jensj@google.com>