There were two exception handlers with the same index added to the code so that only the one added
last was executed. In case of an exception that means that a re-throw may be omitted, causing invalid
control flow.
Also, add assertion to ensure unique try-index for exception handlers.
BUG=#25333
R=hausner@google.com
Review URL: https://codereview.chromium.org/1569523002 .
Evaluate and canonicalize the parameters to the built-in function
identical(a,b) if they are strings. This guarantees that
identical(“ab”, “a”+”b”) evaluates to true.
Note: when the parser parses “a”+”b”, it doesn’t know whether the
expression will be used in a context that may require a
constant value. The canonicalization is thus deferred until it is
known that it is required.
BUG=25024
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1558033002 .
Perform a depth-first postorder traversal of the call graph of known
functions. Make an inlining decision based on the vector of argument
types at the call site, and cache inlining decisions. For positive
inlining decisions, cache the optimized function body specialized to
the receiver and argument types at the call site.
Future work:
* Real inlining heuristics.
* Propagate result types of inlined calls.
* Specialized for constant arguments when it makes sense.
* Performance improvements.
R=asgerf@google.com, sra@google.com
Committed: https://github.com/dart-lang/sdk/commit/d63053fea8731d2fb380022c1c3d296489d1c017
Review URL: https://codereview.chromium.org/1537663002 .
Perform a depth-first postorder traversal of the call graph of known
functions. Make an inlining decision based on the vector of argument
types at the call site, and cache inlining decisions. For positive
inlining decisions, cache the optimized function body specialized to
the receiver and argument types at the call site.
Future work:
* Real inlining heuristics.
* Propagate result types of inlined calls.
* Specialized for constant arguments when it makes sense.
* Performance improvements.
R=asgerf@google.com, sra@google.com
Review URL: https://codereview.chromium.org/1537663002 .
Introduce --warn_super flag to print a warning when a super call is found that is not at the end of the initializer list.
Mark failing tests as Fail, OK.
In a later step, we can eliminate the implicit 'phase' parameter in constructors.
BUG=
R=iposva@google.com
Review URL: https://codereview.chromium.org/1540673002 .
- Make --gen/run-precompiled-snapshot take a directory to use for the snapshot pieces.
- Throw on Platform.executeable to prevent tests from becoming fork-bombs.
- Update status files so 'dart_precompiled' is generally expected to behave the same as 'vm'.
Currently multitests will fail unless run with --jobs=1 because the test harness assigns them the same temporary directory.
Running this also requires a great deal of space. My out directory is 380G.
BUG=http://dartbug.com/24975R=fschneider@google.com, srdjan@google.com
Review URL: https://codereview.chromium.org/1507943002 .
Isolate::saved_stack_limit() answers the limit of the Dart stack, which
is different from the C stack when using the simulators. Since we are
recursing in C, we want to check against the C stack's limit.
This overflow check is only needed to support --no-lazy-dispatchers,
which is part of precompilation.
BUG=http://dartbug.com/24659R=regis@google.com
Review URL: https://codereview.chromium.org/1513993004 .
In the CPS backend, when a for-in loop has an erroneous variable (interpreted
as an unresolved static setter), then we should call NoSuchMethod and not try
to call the setter. This is what the SSA backend does.
BUG=
R=asgerf@google.com
Review URL: https://codereview.chromium.org/1518473002 .
Don't perform LICM / or load elimination of static fields in precompiled
code since they may not be initialized and we don't record an explicit
dependency between the initialization and the load of a static field.
BUG=
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1497783002 .
Propagating type/cid at conditional branches is not possible because
it may cause invalid code motion.
For this to be safe we need to explicitly represent the dependency
between checks eliminated in a branch and the condition that constrains the type/cid.
BUG=
R=vegorov@google.com
Review URL: https://codereview.chromium.org/1491373005 .
Primitives now have a getter 'hasValue' to distinguish primitives that
don't return a value, such as SetField.
The interceptor for TypeTestViaFlag is now inserted on-demand.
Non-instantiated intercepted classes are removed the set of
intercepted classes. This avoids an assertion failure, although it
would be better to avoid adding them in the first place.
The type of closure fields for boxes and type variables no longer go
through the global type inference.
A test fails because the type inference infers an empty type for a
closure field for a torn-off `.call` method. It's an existing problem
that we now have at least one failing test for.
CreateFunction has been removed from CPS and Tree.
BUG=
R=sra@google.com
Review URL: https://codereview.chromium.org/1474713002 .
We have restored blocking isolate spawning under a flag.
--------
Revert "Update test status files. Issue #24990."
This reverts commit 05bf1d6bb6.
Revert "Skip isolate spawning tests on Dartium."
This reverts commit c6c6f121ed.
BUG=
Review URL: https://codereview.chromium.org/1472783004 .
- Defer deoptimization from optimizing compiler to code installation in mutator thread.
- Defer registration of field and leaf class dependency until code is installed in mutator thread.
- Cleanup.
BUG=
R=asiva@google.com
Review URL: https://codereview.chromium.org/1433243003 .