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 .
Compile-time constant values are maintained in a cache, keyed
by script and token position. When the same code is compiled
again later, e.g. by the optimizing compiler, the value is
found in the cache and does not need to be computed again.
In this version, the key is a string concatenated from the
script url and the token position. That’s probably more overhead
than we want.
Added two compiler stat counters for number of cached constants
and number of cache hits. Running dart2js to compile a hello world
program results in about 1400 cached values and 85 cache hits.
BUG=
R=srdjan@google.com
Review URL: https://codereview.chromium.org//1308073005 .
- Display paused time as tooltip over "paused" word.
- Send a timestamp with every ServiceEvent.
- Unit tests verifying that paused on start, exit, and breakpoint timestamps are stable.
- Remember the pause time in DebuggerEvent.
- Remember the pause time in MessageHandler.
- Updated service protocol documentation.
R=turnidge@google.com
Review URL: https://codereview.chromium.org//1311503004 .
I'm not quite happy that internal classes get into the extension point declaration.
But I guess that because of the nature of the work WorkManager(s) are doing, we have to have significant exposure to internals.
Also, onAnalysisOptionsChanged() and onSourceFactoryChanged()... these probably are better to implement as streams in InternalAnalysisContext.
Thoughts?
R=brianwilkerson@google.com, paulberry@google.com
BUG=
Review URL: https://codereview.chromium.org//1311773005 .
This gives almost 30x compile-time speedup on ImagingGaussianBlurOnce.
Based on profiling with Observatory, it seems to be a performance bug
in how hash codes are stored on objects. The majority of time is spent
in Object_GetHash, which does not compute a hash, but looks it up in a
weak hash table in the VM.
R=kmillikin@google.com
Review URL: https://codereview.chromium.org//1311673009 .
This replaces the NSS secure networking library from Mozilla
with the BoringSSL library from Google. This library, based
on OpenSSL, reads certificates from files in PEM format, rather
than storing certificates and keys in a SQLite database, the
way NSS does. There will be a blog post, changelog entries,
and other documentation of the breaking changes.
Review URL: https://codereview.chromium.org//1319703002 .
This gets rid of one layer of indirection that was not necessary and implements the conditional completely in JavaScript which avoids the potential for recursion when generating the intermediate representation for boolean conversion.
R=kmillikin@google.com
Review URL: https://codereview.chromium.org//1290433002 .
Stop inserting aliases in all intermediary scopes for explicitly captured
variables.
Use proper lookup function in async code to access async completer variable.
Add asserts verifying async variables existence.
R=hausner@google.com
Review URL: https://codereview.chromium.org//1314993002 .
This mimics the behavior of the pthreads destructor protocol:
"At thread exit, if a key value has a non-NULL destructor pointer, and the thread has a non-NULL value associated with that key, the value of the key is set to NULL, and then the function pointed to is called with the previously associated value as its sole argument."
BUG=
R=iposva@google.com
Review URL: https://codereview.chromium.org//1309563004 .
Commit 4bd6b4b048 added the abstract
method appendToWithoutDelimiters() to ParameterElement, which is
implemented in ParameterElementMixin. However, one derived class was
not updated to make use of the new mixin: ParameterElementHandle.
R=brianwilkerson@google.com
Review URL: https://codereview.chromium.org//1308713004 .