When we notified before, we could end up entering an isolate when it
was busy handling another message. By moving the notification up and
clearing the "task" later, we ensure that we own the isolate for the
duration of the notification.
BUG=
R=iposva@google.com
Review URL: https://codereview.chromium.org//1324543002 .
- A task has its own MarkingVisitor and SkippedCodeFunctions.
- Weak processing still happens on main thread, with tasks paused.
- Finalization (detaching code) happens in task.
- Cmdline-flag "marker_tasks=0" reverts to old behavior.
BUG=
Review URL: https://codereview.chromium.org//1309033007 .
Previously, interceptors were generated at the definition-site to ensure
sharing, and sometimes sunk to its use-site if desirable.
Now they are (again) generated at use-site, then pulled out of loops,
and replaced by dominating calls to getInterceptor.
This means interceptors are only computed if they really are needed,
but on the other hand, they are sometimes computed more than once, when
there are uses that don't have a common dominator.
Interceptor constants are currently not shared/hoisted as it is not
clear when this is beneficial.
R=kmillikin@google.com
Review URL: https://codereview.chromium.org//1313783003 .
After type propagation, avoid transforming unreachable branches by
explicitly replacing them with Unreachable. Also use the abstract boolean
value rather than the concrete constant value for branches, just as was
already done for type tests and casts.
R=asgerf@google.com
BUG=
Review URL: https://codereview.chromium.org//1309813009 .
Remove unused branch/call macro instructions from the assembler.
Setup a frame and pool pointer when invoking leaf runtime functions (in the
deoptimzation stub and store-buffer update stub).
BUG=
R=rmacnak@google.com
Review URL: https://codereview.chromium.org//1314883002 .
sync closures, thereby avoiding copy of parameters on entry.
Remove variable aliases in local scopes now that another mechanism detects
use-before-define cases. Keep aliases only for captured variables of outer
functions thereby speeding up scope lookups for all Dart code (not just async).
The next step will be to try to reduce the number of captured variables in
async code.
R=hausner@google.com
Review URL: https://codereview.chromium.org//1317213003 .
Prepares for parallel marking by encapsulating the skipped code functions set, and moving the finalization out to the GCMarker, after all marking is done.
Also changes the interface in the visitor interface to make it less coupled with the representation of the set.
BUG=
R=iposva@google.com
Review URL: https://codereview.chromium.org//1287463003 .
This is the first of two steps of removing the requirement to have unoptimized
code when optimizing a function. This would allow optimizing a function without
generating unoptimized code first.
The only remaining dependency is block reordering (BlockScheduler::AssignWeights) since
the edge counters are currently found in the PC descriptors array associated with
unoptimized code.
BUG=
R=asiva@google.com, iposva@google.com
Review URL: https://codereview.chromium.org//1314143002 .
Constants would typically fail to propagate into an argument of a method
call in cases where the receiver of the call might be null. Constants
can safely propagate across the unsafe method lookup.
BUG=
R=kmillikin@google.com
Review URL: https://codereview.chromium.org//1315333002 .