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 .
This ensures the implicit closure function is enumerated in later steps. Fixes crash in co19 test reducible as
import 'dart:math';
main() {
print(const [1, 2.0, "3"].fold(0, max));
}
Also enumerate invocation dispatchers to avoid a similar situation there, though I cannot find a crashing example involving them.
R=fschneider@google.com
Review URL: https://codereview.chromium.org/1489203004 .
- Weaken check in Dart_New: it is okay to invoke a factory constructor or redirecting constructor of a class that was removed. We only need the class of a generative constructor to have been retained.
- Fix crash sending two-byte symbols in isolate messages. Only occurs in precompilation because there are no two-byte string literals in the core libraries, and so no type-byte entries in the VM isolate's symbol table.
- Fix crash getting expression snippet for assertion failures.
R=srdjan@google.com
Review URL: https://codereview.chromium.org/1493433002 .
Creates an OSThread in OSThread::Current() if a thread doesn't
already have one.
Also removes the setup of an unneeded StackZone from a Timeline API
function.
BUG=
Review URL: https://codereview.chromium.org/1483113002 .
Each script has an associated top-level class in which the top-level functions and fields are stored, and the reference to the script. All other fields in the TL class are unused. There are 380 TL classes in corelib alone; eliminating them saves space.
This CL eliminates all TL classes but one per library. All TL functions and fields in the library are stored in that TL class. Because scripts are not stored directly in functions and fields, but are accessible via their owner class, the owner of TL entities are now PatchClasses, rather than classes.
Before:
Size of vm isolate snapshot = 930813
New space (0k of 0k) Old space (1184k of 1624k)
VM Isolate: Number of symbols : 14909
Size of isolate snapshot = 261873
New space (0k of 2048k) Old space (987k of 1024k)
After:
Size of vm isolate snapshot = 931101
New space (0k of 0k) Old space (713k of 1156k)
VM Isolate: Number of symbols : 14907
Size of isolate snapshot = 256956
New space (0k of 1024k) Old space (514k of 768k)
R=iposva@google.com
Review URL: https://codereview.chromium.org/1410383020 .
Inline small constructors/factories more aggressively - the same way we already do for
small getter/setter and certain operator methods.
More local optimizations (ApplyClassIds) on inlined flow graphs with precompilation.
BUG=
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1472363002 .
- Add missing breadcrumbs to class heirarchy, flags and timetime view.
- Truncate large objects by default so we can look at them without falling over.
- Demangle local variable names.
R=turnidge@google.com
Review URL: https://codereview.chromium.org/1463123002 .
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 .
Remove -fdata-section again from the Linux build configuration: It prevented
some optimizations in gcc and clang - fewer things were recognized as constants.
Add const to pointers/arrays in some places to help compilers with determining
what is a constant. A common pattern is strlen of a string literal const char*,
or an array of function pointers.
Tested with gcc 4.8.4 / clang 3.4 and improves code qualtiy + reduces binary size.
BUG=
R=iposva@google.com, rmacnak@google.com
Review URL: https://codereview.chromium.org/1462953002 .
fields in a thread (i.e fields that are not Dart VM related)
- Split the Thread structure to be a pure Dart per thread structure and add
a pointer to os_thread which points to the OSThread structure
- Change Schedule/UnSchedule to set the Dart Thread structure as the TLS of
the thread when it is inside the Dart world and reset the TLS back to the
OSThread strcuture when is exits the Dart World.
- Moved the stack_base and few stack size related functions to OSThread from Isolate
R=johnmccutchan@google.com, zra@google.com
Review URL: https://codereview.chromium.org/1439483003 .
This removes most of the compiler-related code from dart_precompiled:
x64 stripped binary size 13M -> 9.1M
ARM stripped binary size 12M -> 8.3M
The precompiled build defines the DART_PRECOMPILED macro. This
stubs out the public interface to the compiler/parser with empty
function bodies.
Use gcc options -ffunction-sections and --gc-sections to make the linker remove
unused functions/symbols.
BUG=
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1459443002 .
Deferred deoptimization being moved ahead of entering field dependencies, attempt to use it for non-background-compilation as well. Previous failures not reproducible on Linux ia32 any longer.
BUG=
Review URL: https://codereview.chromium.org/1450973002 .