Identical is now a built-in operator instead of a separate primitive.
Interceptor is now its own expression in the Tree IR instead of a static
invocation. This matches the CPS IR (where it is a primitive), and
should fix a problem it was causing for frequency-based naming.
The JS-specific subclass of the Tree IR builder no longer depended on
the backend, emitter, namer, glue, compiler, or anything so it has
been merged into the superclass.
BUG=
R=kmillikin@google.com
Review URL: https://codereview.chromium.org//1204733002.
- Stop storing sp and fp in Sample. Both are not used after the stack walk
- Add AllocationSample bit to Sample's state_
- Add a metadata_ field to Sample
- Use metadata_ to store a class id when AllocationSample bit is set
R=rmacnak@google.com
Review URL: https://codereview.chromium.org//1199473003.
The ConcatenateStrings IR node has been removed. It was a leftover from
dart2dart.
Expressions inside string interpolations are now stringified explicitly
and we concatenate strings with a pure StringConcat operator.
ConstantExpressions have also been removed from the IR. They were also
an artifact from dart2dart and were complicating the optimizer.
BUG=
R=kmillikin@google.com
Committed: ac75893964
Reverted: 988b65336b
Review URL: https://codereview.chromium.org//1195573003.
Get the correct receiver in noSuchMethod stubs.
noSuchMethod stubs for selectors with Interceptor calling convention should pass the receiver to noSuchMethod (not 'this'). The actual receiver is selected by Object.noSuchMethod and Interceptor.noSuchMethod.
R=floitsch@google.com
Committed: c8d7cd8ef4
Reverted: 21a322fd99
Review URL: https://codereview.chromium.org//1181063005.
Get the correct receiver in noSuchMethod stubs.
noSuchMethod stubs for selectors with Interceptor calling convention should pass the receiver to noSuchMethod (not 'this'). The actual receiver is selected by Object.noSuchMethod and Interceptor.noSuchMethod.
R=floitsch@google.com
Review URL: https://codereview.chromium.org//1181063005.
The ConcatenateStrings IR node has been removed. It was a leftover from
dart2dart.
Expressions inside string interpolations are now stringified explicitly
and we concatenate strings with a pure StringConcat operator.
ConstantExpressions have also been removed from the IR. They were also
an artifact from dart2dart and were complicating the optimizer.
BUG=
R=kmillikin@google.com
Review URL: https://codereview.chromium.org//1195573003.
When a term is deleted, the algorithm searches for new redexes created
by the term's deletion. Continuation beta redexes search up the term
between the redex and the continuation's binding to ensure that the
continuation is not moved into the scope of an exception handler.
This search fails if it first encounters the root of the deleted
subterm (i.e., the newly-created redex is in the deleted term). Just
ignore the redex in that case, since the term is being deleted.
Also, update some triaged test expectations with their bug numbers.
R=asgerf@google.com
Review URL: https://codereview.chromium.org//1196323002.
.length on JS arrays are not introduced yet because that is not
seen as field accesses by our class hierarchy.
I've changed the contract on Primitives so they can have side effects,
depend on state, diverge, throw, anything goes. GetField on possibly
null receivers would not be allowed otherwise.
AFAIK there are no optimizations that actually used the contract on
primitives, it just seemed like a good idea at one point in the past,
so that change only affects a single doc comment.
I'll migrate some of the classes that can now be primitives in another
CL.
BuiltinOperators are still required to be pure, although that too may
possibly change soon.
BUG=
R=kmillikin@google.com
Review URL: https://codereview.chromium.org//1188253006.
Fixes a bug where it would pull impure expressions out of branches.
It now uses a slightly more precise analysis to pull more things into
the initializer block (but never out of branch).
BUG=
R=kmillikin@google.com
Review URL: https://codereview.chromium.org//1188783002.