Commit Graph

2925 Commits

Author SHA1 Message Date
Ryan Macnak 9d69945328 Remove duplicate kind-to-c-string for LocalVarDescriptors.
R=fschneider@google.com

Review URL: https://codereview.chromium.org//1372173005 .
2015-09-29 10:01:18 -07:00
Florian Schneider 4a653d9e17 VM: Store edge counters in one per-function array.
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 .
2015-09-28 13:28:04 +02:00
Srdjan Mitrovic 98340f7d9e Do not eagerly finalize when optimizing. Remove allocation of temporary strings in new space.
BUG=
R=regis@google.com

Review URL: https://codereview.chromium.org//1368173002 .
2015-09-25 14:30:48 -07:00
Ryan Macnak d7b46bf5c1 Don't use a special var descriptor for :async_op since it can now be either stack or context allocated.
BUG=http://dartbug.com/24439
R=regis@google.com

Review URL: https://codereview.chromium.org//1361423004 .
2015-09-25 13:47:41 -07:00
Florian Schneider 9fa3d7c9e4 VM: Initialize Instruction objects with break instructions instead of null.
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 .
2015-09-25 14:10:32 +02:00
Ryan Macnak fcdd855859 Precompile invoke-field-dispatchers for closures.
Improves precompiled DeltaBlueClosures by 8.6x and increases
instructions size by 0.05% (0.0005) on ARM.

R=fschneider@google.com

Review URL: https://codereview.chromium.org//1371453002 .
2015-09-24 17:19:37 -07:00
Srdjan Mitrovic 1ffada9e98 Modify String::IdentifierPrettyName to work with zone allocated temporary strings instead of String heap objects.
BUG=
R=regis@google.com

Review URL: https://codereview.chromium.org//1368773002 .
2015-09-24 14:59:53 -07:00
Todd Turnidge c553cd065a Distinguish internal kill messages from user-initiated kill messages.
BUG=
R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org//1361213003 .
2015-09-24 10:22:05 -07:00
Ryan Macnak f1a0056430 Load the native call wrapper via Thread.
R=fschneider@google.com

Review URL: https://codereview.chromium.org//1358773002 .
2015-09-20 13:48:17 -07:00
Florian Schneider bac82e2592 VM: New calling convention for generated code.
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=koda@google.com, rmacnak@google.com

Committed: https://github.com/dart-lang/sdk/commit/1d343e5a7b75168fb6c9f86b64c55173cdbdc9b2

Review URL: https://codereview.chromium.org//1192103004 .
2015-09-19 13:21:09 +02:00
Ryan Macnak 9764a9f037 -Setup heap page for precompiled instructions to make heap verifier etc happy.
-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 .
2015-09-16 11:22:57 -07:00
Matthias Hausner bb097ec37f Add benchmark output to compiler stats.
Add two compiler stats benchmarks to unit tests

Sample output:
xcodebuild/ReleaseIA32/run_vm_tests  CorelibCompilerStats
NumberOfTokens: 271148
NumClassesParsed: 730
NumFunctionsCompiled: 8987
NumFunctionsOptimized: 0
NumFunctionsParsed: 9694
NumTokensScanned: 0 tokens
ScannerTime: 0 ms
ScannerSpeed: 0 tokens/ms
NumTokensParsed: 531066 tokens
ParserTime: 262 ms
ParserSpeed: 2026 tokens/ms
NumTokensCompiled: 433816 tokens
CompilerTime: 648 ms
CompilerSpeed: 668 tokens/ms
CodeSize: 4428 KB
CodeDensity: 138 tokens/KB
InstrSize: 3127 KB
CorelibCompilerStats(RunTime): 694788

BUG=
R=asiva@google.com

Review URL: https://codereview.chromium.org//1352483002 .
2015-09-16 11:18:31 -07:00
Florian Schneider 7af7a2db87 Revert "VM: New calling convention for generated code."
This reverts commit 1d343e5a7b.

Because of Windows test failures.

BUG=
TBR=whesse@google.com

Review URL: https://codereview.chromium.org//1343373003 .
2015-09-16 13:46:05 +02:00
Florian Schneider 1d343e5a7b VM: New calling convention for generated code.
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 .
2015-09-16 13:05:58 +02:00
Siva Annamalai 228e8f6edd - Turn on writing of ic_data_array so that we have that information for script snapshots that would allow for code to be optimized right away
- 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 .
2015-09-15 17:18:21 -07:00
Ryan Macnak 998f19dfbb More precompiled snapshotting.
- 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 .
2015-09-15 16:53:44 -07:00
Ryan Macnak 491b1d42f8 Reapply "Move megamorphic cache table into the Dart heap."
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 .
2015-09-15 11:18:43 -07:00
Ryan Macnak 33b037125f Revert "Move megamorphic cache table into the Dart heap."
We're somewhere attempting to recompile the megamoprhic miss function.

Review URL: https://codereview.chromium.org//1334283004 .
2015-09-14 17:54:43 -07:00
Ryan Macnak 3068f1e092 Move megamorphic cache table into the Dart heap.
R=asiva@google.com

Review URL: https://codereview.chromium.org//1346473002 .
2015-09-14 17:11:55 -07:00
Todd Turnidge b0ca0789be Fix a variety of service protocol bugs.
Add documentation for breakpoint.

Fix Instance.pattern documentation.

Fix Instance.bytes documentation.

Add class field for null instances.

Fix documentation of Context and closureContext.

Make getObject return Collected for deleted breakpoints.

Closes #24247
Closes #24249
Closes #24309
Closes #24325
Closes #24326
Closes #24327

BUG=
R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org//1341473002 .
2015-09-11 12:29:21 -07:00
Ryan Macnak 690cccf03c Remove remaining uses of null's absolute address from non-IA32.
Note not every file is touched for every architecture because some already load null via Thread in most places.

Don't use absolute stack overflow address when precompiling.

R=fschneider@google.com

Review URL: https://codereview.chromium.org//1332923005 .
2015-09-11 11:34:21 -07:00
Zachary Anderson 16393ee9c6 Uses SNPRINT macro where possible. Otherwise uses #define for format.
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 .
2015-09-11 00:18:14 -07:00
Ryan Macnak ebad0abfa9 ISL_Print -> THR_Print
TBR=koda@google.com

Review URL: https://codereview.chromium.org//1335773002 .
2015-09-10 15:58:54 -07:00
Ryan Macnak 8ebb9f9b39 Track which entries in the ObjectPool are native entries, and reset them when loading a precompiled snapshot.
R=fschneider@google.com

Review URL: https://codereview.chromium.org//1316673005 .
2015-09-10 15:41:37 -07:00
Daniel Andersson a1bc527306 Migrate logging infrastructure Isolate->Thread
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 .
2015-09-09 15:30:38 -07:00
Todd Turnidge dee6ddf966 Support column-based breakpoints in the VM and Observatory.
BUG=
R=hausner@google.com, rmacnak@google.com

Review URL: https://codereview.chromium.org//1312763010 .
2015-09-09 09:01:13 -07:00
Srdjan Mitrovic cba48a6ab6 More cleanups for background compilation.
BUG=
R=hausner@google.com

Review URL: https://codereview.chromium.org//1325373004 .
2015-09-06 11:10:48 -07:00
Matthias Hausner d3a2f619bb Fix compiler stats
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 .
2015-09-04 13:13:56 -07:00
Siva Annamalai 79ef28317f Changes to prepare for allowing script snapshots to be taken after running the main application:
- 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 .
2015-09-04 11:03:46 -07:00
Srdjan Mitrovic 771f2dfb52 Symbols::NewFormatted and old space allocation.
BUG=
R=hausner@google.com

Review URL: https://codereview.chromium.org//1322973006 .
2015-09-04 10:59:28 -07:00
Ryan Macnak f5adc13468 Load predefined symbols address via Thread.
R=fschneider@google.com

Review URL: https://codereview.chromium.org//1304243008 .
2015-09-04 10:32:46 -07:00
Srdjan Mitrovic d4365bc6f4 Lookup getter/setter symbols before alllocating them, thus eliminating extra String allocations in new space.
Various old space allocations, cleanups.
Add a test for Symbols concatenation.

BUG=
R=hausner@google.com

Review URL: https://codereview.chromium.org//1320673012 .
2015-09-03 14:09:34 -07:00
Matthias Hausner 9a79cbd78e Eliminate LocalVarDescriptors in some corner cases
Fix initializing functions so they can be recompiled if
var descriptors are needed for a stack trace.

BUG=
R=srdjan@google.com

Review URL: https://codereview.chromium.org//1317753004 .
2015-09-03 13:55:03 -07:00
Ryan Macnak 0ed4d44a99 Toward precompiled snapshots.
Gets as far as encountering null Instructions in the first Dart_Invoke after loading the snapshot.

R=asiva@google.com

Review URL: https://codereview.chromium.org//1318803002 .
2015-09-02 16:15:02 -07:00
Srdjan Mitrovic 7fb555045a Remove allocation in old space ....
Eliminate need for GrowableObjectArray, allocate constants in old space.

BUG=
R=regis@google.com

Review URL: https://codereview.chromium.org//1305223006 .
2015-09-02 08:59:33 -07:00
Ivan Posva 4bd7cdc75c - Ensure that HandleScope is initialized with a thread. (Remove
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 .
2015-09-01 17:18:55 -07:00
Srdjan Mitrovic 59db5010a9 More elimination of new space allocation, fix bugs in Symbols::FromConcatAll
BUG=
R=regis@google.com

Review URL: https://codereview.chromium.org//1322043002 .
2015-09-01 10:30:03 -07:00
Siva Annamalai 6b2ae767fd Changes to prepare for allowing script snapshots to be taken after running the main application
- 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 .
2015-08-31 15:41:41 -07:00
Todd Turnidge 7ac3150ee3 Improve display of simd vector types and stack traces in Observatory.
Associated protocol changes.

BUG=
R=rmacnak@google.com

Review URL: https://codereview.chromium.org//1316123004 .
2015-08-31 10:35:01 -07:00
Srdjan Mitrovic dd5410209f Added {Zone}GrowableHandlePtrArray types: simplifies code, makes code safer
BUG=
R=regis@google.com

Review URL: https://codereview.chromium.org//1312833009 .
2015-08-31 09:24:00 -07:00
Ryan Macnak 4a7d56902b Decorate ObjectPool dumps with offsets to match disassembly and names for most external labels.
Remove dead runtime entry from list macro.

R=srdjan@google.com

Review URL: https://codereview.chromium.org//1318883004 .
2015-08-28 12:50:28 -07:00
Srdjan Mitrovic f857c1ba8e Remove more GrowableObjectArray usage in parser
Allocate appropriate data structures in old space from beginning

BUG=
R=koda@google.com

Review URL: https://codereview.chromium.org//1316373002 .
2015-08-27 13:46:32 -07:00
Srdjan Mitrovic 42f32322cb Change trail from GrowableObjectArray to ZoneGrowableArray.
BUG=
R=regis@google.com

Review URL: https://codereview.chromium.org//1309113004 .
2015-08-27 09:56:36 -07:00
Matthias Hausner 62e9d05668 Introduce per-isolate cache for compile time constants
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 .
2015-08-26 16:17:20 -07:00
Srdjan Mitrovic b5c256b85f Use zone allocated C-strings instead of String heap objects to construct signature symbols
BUG=
R=koda@google.com

Review URL: https://codereview.chromium.org//1313363005 .
2015-08-26 13:30:55 -07:00
Regis Crelier 8b825b3f73 Simplify and improve canonicalization of signature types.
R=srdjan@google.com

Review URL: https://codereview.chromium.org//1311773006 .
2015-08-24 14:53:33 -07:00
Regis Crelier 26031ab6b0 Avoid numerous type allocations by caching the canonical type of a class, which
is used as the receiver type for non-static methods of this class, be it a
generic, non-generic, or signature class.

R=srdjan@google.com

Review URL: https://codereview.chromium.org//1309613002 .
2015-08-21 13:37:07 -07:00
Srdjan Mitrovic 2b6219fd5a Addressed review comments from previous CLs; adding more Symbols::FromConcat
BUG=
R=hausner@google.com

Review URL: https://codereview.chromium.org//1308013002 .
2015-08-21 11:16:30 -07:00
Srdjan Mitrovic 4280716656 Remove new space allocation in optimizing compiler, use Symbols::FromConcat where appropriate
BUG=
R=hausner@google.com

Review URL: https://codereview.chromium.org//1303923002 .
2015-08-20 15:13:06 -07:00
Ryan Macnak 7055e4862b Toward precompiled snapshots.
R=asiva@google.com, fschneider@google.com

Review URL: https://codereview.chromium.org//1290933002 .
2015-08-19 15:34:17 -07:00