Commit Graph

1263 Commits

Author SHA1 Message Date
Florian Schneider fbdce6a59e VM: Const-correctness fixes.
Three types of fixes:
1. Remove redundant const_cast
2. Remove const_cast by adding const when appropiate.
3. Remove const_cast by removing const (e.g. places where we call free with it)

For now I only fixed places where the fix is local enough - i.e. does not require
changed a large amount of code.

BUG=
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/1526123002 .
2015-12-15 19:24:40 +01:00
John McCutchan 27d05fc98a Add more compiler timeline durations
All phases of unoptimized and optimized compilation are now on the timeline.

R=fschneider@google.com, rmacnak@google.com

Review URL: https://codereview.chromium.org/1523833003 .
2015-12-15 09:51:47 -08:00
Florian Schneider 12155b1920 VM: Add missing source line info in await-for statements.
When an exception occurs in the constructor of the steam iterator, the
stack trace was missing the source position.

BUG=#24084
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/1516493002 .
2015-12-10 18:58:12 +01:00
Matthias Hausner d68a7de36a Fix mismatched parenthesis error message
'file:xxxx.dart': error: line 2 pos 4: unterminated '('
foo(state { // <= missing closing parenthesis
   ^

Also include a couple of postscripts from previous change.

BUG=5830
R=iposva@google.com

Review URL: https://codereview.chromium.org/1504313003 .
2015-12-08 15:36:10 -08:00
Ryan Macnak bf1724948f Add timeline events for CompileClass and CompileTopLevel.
R=iposva@google.com

Review URL: https://codereview.chromium.org/1513503003 .
2015-12-08 15:26:07 -08:00
Matthias Hausner 23bfa8163d Strip meta-data when VM runs with --enable-mirrors=false
When the mirrors system is unavailable, there is no need to create the fields for metadata annotations in code.

BUG=
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/1504673004 .
2015-12-07 12:49:08 -08:00
Matthias Hausner 0bbfe1e23b There are about 60 patch classes in the libraries. Running dart2js causes about 25 of them to be compiled and applied, so we get rid of 25 of 60 Class objects.
Review URL: https://codereview.chromium.org/1498933002 .
2015-12-04 13:11:25 -08:00
Matthias Hausner 4733386ca8 Reset top-level class finalization
BUG=
R=regis@google.com

Review URL: https://codereview.chromium.org/1493533002 .
2015-12-02 09:59:32 -08:00
Florian Schneider 5f073e7be0 VM: More read-only handles for constant null-objects/-instances.
Use Object::null_## for null-constants where possible.

BUG=
R=asiva@google.com

Review URL: https://codereview.chromium.org/1488773004 .
2015-12-02 11:36:30 +01:00
Matthias Hausner ad0f14e0ce Eliminate all but one top-level class per library.
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 .
2015-12-01 09:21:17 -08:00
Zachary Anderson c888f04ba3 Fixes setjmp clobbering warnings.
Also fixes an unused result warning.

BUG=https://github.com/dart-lang/sdk/issues/25052
R=whesse@google.com

Review URL: https://codereview.chromium.org/1484653002 .
2015-11-28 14:00:53 -08:00
Siva Annamalai 01b69ebabc Move ApiLocalScope out of class ApiState into class Thread so that the API local handles and zone etc. are thread specific instead of being Isolate specific.
R=zra@google.com

Review URL: https://codereview.chromium.org/1473403003 .
2015-11-25 11:07:22 -08:00
Florian Schneider f0a35b3260 VM: Add dart_precompiled build target, a standalone VM without the JIT compiler.
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 .
2015-11-19 10:13:16 +01:00
Matthias Hausner 648e52baa8 Collect closure functions in isolate
Instead of collecting closures functions in each class object, maintain one list per isolate. This is a step towards getting rid of top-level classes.

I'd appreciate if John could take a look at the service isolate and coverage related change.

I'd appreciate if Ryan could take a look at the precompilation related change.

When compiling all of corelib, the list of closures in the isolate is about 600 entries long. If this linear list should become a bottleneck, I'll deal with it later. (Sadly, some code relies on the fact that a closure can be identified with a list index, so making it a hash table instead of an array does not work.)

BUG=
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/1436243005 .
2015-11-17 15:40:27 -08:00
Ryan Macnak 8be0d4aca1 Save the native name on the function instead of finding it in the token stream to resolve lazily-linked natives. Drop token streams from precompiled snapshots.
dart2js ARM -7.0% size

Before
VMIsolate(CodeSize): 4663679
Isolate(CodeSize): 11970519
Instructions(CodeSize): 12904384
Total(CodeSize): 29538582

After
VMIsolate(CodeSize): 2611555
Isolate(CodeSize): 11965825
Instructions(CodeSize): 12906464
Total(CodeSize): 27483844

BUG=
R=asiva@google.com

Review URL: https://codereview.chromium.org/1412633007 .
2015-11-12 17:24:42 -08:00
Srdjan Mitrovic c4aee38224 Pass type argument to Field construction, thus freezing that field, denoting it cannot be changed later.
BUG=
R=regis@google.com, rmacnak@google.com

Review URL: https://codereview.chromium.org/1406943006 .
2015-11-09 13:54:57 -08:00
Srdjan Mitrovic 9dcd1fd076 Background compilation fixes
BUG=
R=hausner@google.com

Review URL: https://codereview.chromium.org/1426513006 .
2015-11-05 09:53:13 -08:00
Srdjan Mitrovic 181e8cc2a9 Move resolving of natives to a late stage (during code emission). That eliminates unnecessary native resolution (e.g., when native gets recognized or rejected in the inliner). Removed tests that are now impossible to implement with AST (fake native functions).
BUG=
R=hausner@google.com

Review URL: https://codereview.chromium.org/1420173006 .
2015-11-03 16:18:24 -08:00
Florian Schneider 598018bd21 VM: Fix bug with ??= expressions using await.
Moving the construction of ?? into the parser using LetNode, so that the await-transformations are properly applied.

a ?? b becomes { temp = a; temp !== null ? temp : b; }

a ??= b becomes { temp = a; temp != null ? temp : a = b; }

BUG=issue #24392
R=hausner@google.com

Review URL: https://codereview.chromium.org/1417733007 .
2015-11-03 21:47:06 +01:00
Srdjan Mitrovic 8e27f43f36 Allocate some data structures in old instead of in new space. Early inlining bailout for native functions. Verify heap after background compiler was shutdown.
BUG=
R=asiva@google.com

Review URL: https://codereview.chromium.org/1433463002 .
2015-11-02 16:39:22 -08:00
Matthias Hausner f094c36141 Constant cache improvement
Change the compile-time constant map to use a pair (url, token_pos) as
the key. Previously, the two values were concatenated into a string, which creates a lot of new strings.

BUG=
R=srdjan@google.com

Review URL: https://codereview.chromium.org/1424393002 .
2015-11-02 10:59:19 -08:00
Siva Annamalai 99abe7d883 - Some cleanup of dynamic_type usage.
- Avoid egregious creation of handles in Class::CreateInvocationDispatcher

R=regis@google.com

Review URL: https://codereview.chromium.org/1409113006 .
2015-10-21 17:24:10 -07:00
Florian Schneider 9a0b13fe86 VM: Replace CheckedHandle with Cast/Handle in some places.
CheckedHandle are only when entering C++ from native code,
or when calling out via the API.

Otherwise Cast and Object::Handle is sufficient.

BUG=
R=hausner@google.com

Review URL: https://codereview.chromium.org//1376183002 .
2015-10-21 16:54:50 +02:00
Srdjan Mitrovic b9426418d8 Get rid of deprecated methods accessing mutator_thread_ instead of current thread
BUG=
R=zra@google.com

Review URL: https://codereview.chromium.org/1410643008 .
2015-10-20 10:26:08 -07:00
Srdjan Mitrovic 8915fb6fde More work for background compilation; move pending_functions_ from ObjectStore to Thread.
BUG=
R=asiva@google.com

Review URL: https://codereview.chromium.org/1409173002 .
2015-10-16 17:02:43 -07:00
Ryan Macnak b56991878f Fix Enum.toString when enum type is private.
R=hausner@google.com

Review URL: https://codereview.chromium.org/1398843008 .
2015-10-15 11:28:13 -07:00
Florian Schneider 7fe1e05826 VM: Precompile method extractors for implicit and explicit closurization.
Also, avoid creating duplicate method extractors with explicit closurization:
Before the compiler would create one extractor per site when using the explicit
#-closurization operator.

BUG=
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/1404163002 .
2015-10-15 12:27:23 +02:00
Matthias Hausner 45034b7626 Eliminate RawClass::patch_class_ field
BUG=
R=asiva@google.com

Review URL: https://codereview.chromium.org/1407533005 .
2015-10-14 14:52:14 -07:00
Srdjan Mitrovic 8d618766a8 Remove isolate argument from handle allocation: Part II
BUG=
R=regis@google.com

Review URL: https://codereview.chromium.org/1389353004 .
2015-10-12 14:06:50 -07:00
Matthias Hausner 019a4e4e5c Add flag which moves super initializer statement
--move_super directs the VM compiler to move the super initializer
of a constructor to the end of the initializer list. The default
value is false. If we opt to enable this functionality, the implicit
phase parameter of constructors can be eliminated, simplifying
constructors significantly.

BUG=
R=regis@google.com

Review URL: https://codereview.chromium.org/1382533003 .
2015-10-07 10:26:22 -07:00
Regis Crelier 451eaab718 Remove --supermixin flag from VM.
Update tests and test status files.

Fixes #24479.

R=hausner@google.com

Review URL: https://codereview.chromium.org/1383923002 .
2015-10-01 18:04:31 -07:00
Matthias Hausner 4995b84051 Remove obsolete timer list from VM
The functionality is now covered with TimeLine and CompilerStats

BUG=
R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org//1375343002 .
2015-09-30 12:47:23 -07:00
Srdjan Mitrovic d867784de5 Cleanups and preemptively pass Heap::kOld whenever subtype testing in compiler
BUG=
R=regis@google.com

Review URL: https://codereview.chromium.org//1377453005 .
2015-09-29 11:05:54 -07: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
Rico Wind 2e22f41612 This is a fixed up version of:
https://codereview.chromium.org/1305183010/

- Reorder the priority of flags in the test harness when passed to the VM:
  default flags, file flags, command line flags
- Ensure to not enable assertions when not being requested.

Peter, any reason to not move the flags in to the
configuration file?  Why don't we actually have all of them in there? (not
that I want to move them, I am just currious why we don't add them in
there, it seems more logical to me)

BUG=
R=iposva@google.com, whesse@google.com

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

Review URL: https://codereview.chromium.org//1330643003 .
2015-09-14 07:58:18 +02:00
Rico Wind 02320ff26e Revert "This is a fixed up version of:"
This reverts commit dd7767d95e.

This made the analyzer fail:
http://build.chromium.org/p/client.dart/builders/analyzer_experimental-linux-release-be/builds/3418/

Please note that this is just not the new test (which I would just have
suppressed)
It seems that in --checked --host-checked mode we see a range of new
failures, because of the change to flags.

It also made dart2js fail on the new tests

Ivan: Will you look into this with the analyzer people?

R=iposva@google.com
BUG=

Review URL: https://codereview.chromium.org//1308743006 .
2015-09-07 08:41:46 +02:00
Rico Wind dd7767d95e This is a fixed up version of:
https://codereview.chromium.org/1305183010/

- Reorder the priority of flags in the test harness when passed to the VM:
  default flags, file flags, command line flags
- Ensure to not enable assertions when not being requested.

Peter, any reason to not move the flags in to the
configuration file?  Why don't we actually have all of them in there? (not
that I want to move them, I am just currious why we don't add them in
there, it seems more logical to me)

BUG=
R=iposva@google.com, whesse@google.com

Review URL: https://codereview.chromium.org//1330643003 .
2015-09-07 07:44:41 +02: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 6fad437e5c BUG=
R=srdjan@google.com

Review URL: https://codereview.chromium.org//1327003003 .
2015-09-04 19:39:21 -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
Matthias Hausner d0f408811e Cache more constants
BUG=
R=srdjan@google.com

Review URL: https://codereview.chromium.org//1311393010 .
2015-09-03 16:32:58 -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
Regis Crelier 1abc4ce8e9 Reduce the number of captured variables in async code, by only capturing local
variables that are in scope at each await location.

R=hausner@google.com

Review URL: https://codereview.chromium.org//1308163006 .
2015-09-02 18:29:32 -07:00
Srdjan Mitrovic 0094f0a76f More cleanups in compiler (remove allocation in new space).
BUG=
R=hausner@google.com

Review URL: https://codereview.chromium.org//1314363003 .
2015-09-02 16:03:24 -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
Matthias Hausner f286b5b8b6 Moar constant caching
Insert all compile-time constants expression in the constant cache.

BUG=

Review URL: https://codereview.chromium.org//1303973007 .
2015-09-01 14:42:53 -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