We widen the range of class-ids that we dispatch to if the
neighbouring classes dispatch to the same methods. With this
change we don't widen the range to encompass abstract classes
unless we also catch more concrete classes in that way.
This improves the Megamorhphic benchmark suite scores by about
10% on average.
This is split off from https://codereview.chromium.org/2955073005/R=vegorov@google.com
BUG=
Review-Url: https://codereview.chromium.org/2962333002 .
Inline instance object hash code into object header on 64 bit.
64 bit objects have 32 bits of free space in the header word.
This is used for the hash code in string objects. We take it
for the default hash code on all objects that don't override
the hashCode getter.
This is both faster and a memory reduction. Eg it makes the
MegaHashCode part of the Megamorphic benchmark 6 times faster.
This is a reland of https://codereview.chromium.org/2954453002/
which fixes an issue that made script snapshots generated on
64 bit platforms incompatible with 32 bit VMs.
BUG=
R=vegorov@google.com
Review-Url: https://codereview.chromium.org/2965723002 .
Modifies the debug garbage collector (CollectAllGarbage()) to correctly
remove inter-generational garbage by evacuating all of new space.
Adds tests to check if this issue has been correctly resolved.
Updates the WeakProperty_PreserveCrossGen test to call for one new and
one old space collection instead of CollectAllGarbage(). Otherwise, all
weak properties are swept as garbage.
DETAILS:
ISSUE
Specifically, the following arrangements in a heap resulted
in garbage surviving a GC.
- Dead object in old space pointing to dead object in new space results
in the new space object surviving.
- A cycle between two dead objects, one in each space, results in the
cycle surviving until all objects are in the old space.
R=rmacnak@google.com
Review-Url: https://codereview.chromium.org/2964503005 .
Do not consider a generic function type as uninstantiated if all the function
type parameters appearing in its signature are declared by the type itself.
The generic function type is uninstantiated if it refers to function type
parameters of parent generic functions, or to class type parameters.
R=rmacnak@google.com
Review-Url: https://codereview.chromium.org/2965743002 .
This changes the inlining strategy a bit by solving a latent problem:
ClosedWorld.isCalledInLoop was computed using LocalFunctionElement but
queried using SynthesizedCallMethodX thus always returning false in
these cases.
R=sigmund@google.com
Review-Url: https://codereview.chromium.org/2968743002 .
This CL also removes some compiler flags that increase space somewhat
that help the profiler find symbols, which isn't included in a PRODUCT
build.
Before:
zra@zach:~/dart/sdk$ ls -la out/ProductX64/exe.stripped/
-rwxr-x--- 1 zra eng 9693064 Jun 29 14:52 dart
-rwxr-x--- 1 zra eng 7391080 Jun 29 14:52 dart_precompiled_runtime
R=askesc@google.com, rmacnak@google.com
After:
-rwxr-x--- 1 zra eng 6809424 Jun 29 15:11 dart
-rwxr-x--- 1 zra eng 3299120 Jun 29 15:11 dart_precompiled_runtime
Review-Url: https://codereview.chromium.org/2964133002 .
Since the other targets are generated by the same action, it is enough that Ninja sees only one output as dirty.
Add missing dependencies for core-jit snapshots.
Fuchsia issue TO-365
R=zra@google.com
Review-Url: https://codereview.chromium.org/2968603002 .
VirtualTree and VirtualCollection must have fixed size children.
Expandable Ref Elements are by default able to expand.
Added flag to disable the expansion when required.
R=rmacnak@google.com
Review-Url: https://codereview.chromium.org/2970443002 .
DDC was incorrectly interpreting inline JS types, and hence marking
some things as non-nullable which were nullable. This fixes that, and
also slightly improves the analyzers treatment of inline JS types.
Also fixes some incorrect inline JS type annotations in DDC patch
files.
BUG=
R=vsm@google.com
Review-Url: https://codereview.chromium.org/2965633002 .