There is one case where compilation is much slower (corelib/regexp/pcre_test).
Reverting while investigating.
The test has a 6.6K-line main() with straight-line code.
Before:
SSA optimizer took 78552msec
SSA optimizer > SsaInstructionSimplifier took 21434msec
SSA optimizer > SsaTypeconversionInserter took 12msec
SSA optimizer > SsaRedundantPhiEliminator took 1msec
SSA optimizer > SsaDeadPhiEliminator took 0msec
SSA optimizer > type propagator took 15639msec
SSA optimizer > SsaCheckInserter took 18msec
SSA optimizer > SsaDeadCodeEliminator took 35806msec
SSA optimizer > SsaGlobalValueNumberer took 564msec
SSA optimizer > SsaCodeMotion took 1msec
SSA optimizer > SsaLoadElimination took 360msec
SSA optimizer > SSA value range builder took 4700msec
SSA optimizer > SsaSimplifyInterceptors took 2msec
After:
SSA optimizer took 156299msec
SSA optimizer > SsaInstructionSimplifier took 18700msec
SSA optimizer > SsaTypeconversionInserter took 7msec
SSA optimizer > SsaRedundantPhiEliminator took 1msec
SSA optimizer > SsaDeadPhiEliminator took 0msec
SSA optimizer > type propagator took 52763msec
SSA optimizer > SsaCheckInserter took 26msec
SSA optimizer > SsaDeadCodeEliminator took 31066msec
SSA optimizer > SsaGlobalValueNumberer took 596msec
SSA optimizer > SsaCodeMotion took 2msec
SSA optimizer > SsaLoadElimination took 368msec
SSA optimizer > SSA value range builder took 52752msec
SSA optimizer > SsaSimplifyInterceptors took 2msec
BUG=
Review-Url: https://codereview.chromium.org/2804193002 .
toolchain_prefix was not correctly propagated everywhere it needed to
go. This CL also adds an error to build.py if someone tries to use
--toolchain as it is not supported there.
R=rmacnak@google.com
Review-Url: https://codereview.chromium.org/2797303005 .
This has the effect of making every program generate the same VM isolate, allowing an embedder to load different programs into different isolates.
Verify the number of base objects in clustered snapshots.
Remove dead code leftover from core snapshots switching from saving scripts to saving token streams in the VM isolate.
R=asiva@google.com
Review-Url: https://codereview.chromium.org/2790243003 .
type itself gets instantiated.
Until now, the signature was kept unchanged and the instantiation was reflected
by the type arguments of the function type only. This delayed instantiation
would complicate the implementation of generic functions.
This cl actually removes type arguments for (non-typedef) function types. The
function type is now fully represented by the signature. When the function type
is instantiated, a new signature is allocated (instead of a new type argument
vector) to hold instantiated result type and formal parameter types.
The same applies in the case of typedef function types, however, the type
arguments of the typedef are kept as before. This allows for better printing
of typedef function types and for finalization of recursive type involving
typedefs as type arguments.
R=asiva@google.com
Review-Url: https://codereview.chromium.org/2793033005 .
Retrying https://codereview.chromium.org/2803563003
* update analyzer.Keyword list to include all of the fasta keywords
* enhance the analyzer scanner keyword table to handle uppercase
keywords such as "Function"
* update analyzer's parser to process the new KeywordTokens
* fix analyzer error verification
* update translation of fasta <--> analyzer tokens
* update tests and cleanup analyzer warnings
R=paulberry@google.com
Review-Url: https://codereview.chromium.org/2799133003 .
Consider:
value ??= "";
We fail to infer in SSA type progagation that value is non-null.
At CFG level this looks like
if (value == null) {
value = "";
} else {
// There is always an empty else-block.
}
value1 = phi("", value);
Previously we considered the phi use of 'value' to be outside the
region dominated by the condition 'value != null', leaving nowhere to
attach the type refinement. Now we consider it inside the region,
allowing:
if (value == null) {
value = "";
} else {
value1 = HTypeKnown(not-null, value);
}
value2 = phi("", value1);
Type propagation now determines value2 is non-null.
R=efortuna@google.com
Review-Url: https://codereview.chromium.org/2755353003 .