Reserve first element in the Function's ic_data_array to hold the edge
counter array.
Until now we had a one-element array per edge counter. This reduces memory
used by edge counters.
This CL allows to optimize code without having to have the unoptimized
code present.
Also, save space in Instruction by making place_id_ and lifetime_position_
a union. place_id_ is exclusively needed by Load/StoreOptimizer,
lifetime_position by the FlowGraphAllocator.
BUG=
R=asiva@google.com
Review URL: https://codereview.chromium.org//1343383003 .
On ia32 this is int3(). This also makes precompiled instruction snapshots
deterministic (to be precise the empty space due to alignment), and not depending
on the address of the null object at snapshot creation time.
BUG=
R=rmacnak@google.com
Review URL: https://codereview.chromium.org//1367973002 .
-Pre-mark instructions when writing the snapshot.
-Write the megamorphic miss function to the snapshot.
-Add missing ExceptionHandlers for megamorphic miss code.
-Add missing C++ entry points.
-Relocate Function and Code entry_points_ when reading precompiled snapshot.
-Don't try to load a script again when running from a precompiled snapshot.
R=asiva@google.com
Review URL: https://codereview.chromium.org//1336763002 .
Instead of calling code object directly, call indirectly and
pass the code object in a register. The object pool is then loaded from
the code object. This is another preparation step for making generated code
relocatable.
All non-ia32 platforms:
No entry patching.
ARM:
PC marker (now code object) moves to the same place as on x64 (below saved PP, above saved FP).
R9 is now used as PP, R10 as CODE_REG.
BUG=
R=rmacnak@google.com
Review URL: https://codereview.chromium.org//1192103004 .
- Use snapshot Ids for singleton VM isolate singleton objects instead of writing them out into the snapshot
- Add support for writing function objects as an Id, this is needed to serialize function objects from the core library in a script snapshot (these function objects could potentially appear in the ICData).
BUG=
R=rmacnak@google.com
Review URL: https://codereview.chromium.org//1337083004 .
- Load precompiled stub code from the snapshot.
- Mark isolates reading from precompiled snapshots as not allowed to compile.
- Reset static field values during precompilation.
- Don't run the program after generating a precompiled snapshot.
Fails sooner in loading precompiled snapshots due to null Instructions.
R=asiva@google.com
Review URL: https://codereview.chromium.org//1311403009 .
Prevent megamorphic miss function from losing its code:
- Only include megamorphic function in precompiled snapshots.
- Also put the megamorphic miss code in the object store.
R=asiva@google.com
Review URL: https://codereview.chromium.org//1339363002 .
I was able to convert 49 SNPrint(NULL, 0, ...) patterns to use the
macro. I had to use a #define for the format string 5 times due to
uses that didn't fit the macro.
2 occurences of SNPrint(NULL, 0, ...) had >=2 possibilities for the
format string based on runtime values, and I didn't try to convert
them.
Fixed ~10 format strings.
BUG=
R=iposva@google.com
Review URL: https://codereview.chromium.org//1331623002 .
This enables thread-safe logging (e.g., ISL_Print, which will soon be renamed to THR_Print), which is needed for concurrent
marking (DetachCode) and compilation.
Make finalization of GC marking tasks concurrent, now that it's thread-safe.
BUG=
R=iposva@google.com
Review URL: https://codereview.chromium.org//1314673008 .
Prints the stats into a zone-allocated string that can either be dumped to the console, or displayed as a whole in the observatory.
Distinguish token consumption between class parsing and function parsing when compiling.
Change stat counter macros use thread instead of isolate.
Review URL: https://codereview.chromium.org//1300033002 .
- Rename accessors of class Field to make it more apparent as to what is being accessed (static field values or instance field offsets
- Use precompiled initializer state (Used only during precompilation) to also store saved initial value of static fields (Used only during application snapshot generation)
BUG=
R=hausner@google.com, rmacnak@google.com
Review URL: https://codereview.chromium.org//1289643005 .
deprecated isolate based API.)
- Update all code impacted by this change. E.g. DARTSCOPE
- TEST_CASE now passes the current thread as a parameter to the unit test.
BUG=
R=asiva@google.com
Review URL: https://codereview.chromium.org//1310463005 .
- Create singleton empty context scope object
- Add an implicit field in the context scope so we can distinguish implict context scope objects
- Allow serialization of extractor_parameter_types, extractor_parameter_names
BUG=
R=regis@google.com
Review URL: https://codereview.chromium.org//1323813004 .
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 .