Commit Graph

37 Commits

Author SHA1 Message Date
Ryan Macnak 53f7bb175e Revert "Make --sync-async the default for the VM."
This reverts commit 1ddf553eb6.

Reason for revert: Failing service tests

Original change's description:
> Make --sync-async the default for the VM.
> 
> Change-Id: Ic6d7bbc27835ea7b197cccf05724adb99e95dd51
> Reviewed-on: https://dart-review.googlesource.com/57580
> Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
> Reviewed-by: Martin Kustermann <kustermann@google.com>

TBR=vegorov@google.com,kustermann@google.com,floitsch@google.com

Change-Id: I062cb40badf0d1cf1808bee152fdd4074b00179d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/58380
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-06-04 21:04:20 +00:00
Florian Loitsch 1ddf553eb6 Make --sync-async the default for the VM.
Change-Id: Ic6d7bbc27835ea7b197cccf05724adb99e95dd51
Reviewed-on: https://dart-review.googlesource.com/57580
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-06-04 18:05:20 +00:00
Paul Berry 5db95fbb61 Upgrade mockito to latest version.
And fix frontend_server_test.dart accordingly.

Change-Id: Ic6a57afc9582780e55015a36f3cec6969de13c54
Reviewed-on: https://dart-review.googlesource.com/56709
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-06-01 19:32:13 +00:00
Alexander Aprelev 5cc3736644 [vm/frontend-server] Include errors count into compile expression response.
Change-Id: Ifc42ff221eb5a0d95f7ed0f29f410ab18740b0e6
Reviewed-on: https://dart-review.googlesource.com/56140
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2018-05-24 18:16:16 +00:00
Alexander Aprelev 80b48195b1 [frontend-server] Serialize compiled expression procedure into the file.
Improve comments and test, report errors.

Follow-up to https://dart-review.googlesource.com/c/sdk/+/49040.

Change-Id: Ie02dae1c0edfcb54e3cd7333641e2c5eface1412
Reviewed-on: https://dart-review.googlesource.com/56030
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2018-05-21 23:50:22 +00:00
Alexander Aprelev d5b99860e4 [frontend-server] Introduce compile-expression command.
Change-Id: I5b200ab00076710b08527ec4b35322a6a5fcc4b9
Reviewed-on: https://dart-review.googlesource.com/49040
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Samir Jindel <sjindel@google.com>
2018-05-21 18:11:09 +00:00
Alexander Markov 7e4cec8a49 [vm/kernel/aot] Fix handling of type parameters and annotations on typedefs in TFA tree shaker
Closes https://github.com/dart-lang/sdk/issues/33109

Change-Id: I84204373010ebfdd7d774c8bb29c743d056dc24e
Reviewed-on: https://dart-review.googlesource.com/54981
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-05-14 23:04:48 +00:00
Alexander Aprelev a989bac685 [frontend-server] Re-enable depfile test on Windows.
Split by ': ' and change test so it ignores difference in the path that gets escaped for ninja on Windows.

Bug: https://github.com/dart-lang/sdk/issues/33032
Change-Id: Iceeddba1a9c2d94a74c1f08d52144d2eb030f703
Reviewed-on: https://dart-review.googlesource.com/53681
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2018-05-04 15:21:08 +00:00
Alexander Aprelev fb779df11c [frontend-server] Disable depfile test on Windows.
The test revealed a problem with depfile generation on Windows. Raised dartbug.com/33032 to track the fix.

Bug: dartbug.com/33032
Change-Id: I5950418d2dd61bb00ba6da752b9e3c8d9246715c
Reviewed-on: https://dart-review.googlesource.com/53541
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2018-05-03 07:30:33 +00:00
Alexander Aprelev c129fde29a [frontend-server] Add a test for dep-file generation.
This is a follow-up to 4c9b712052.

Change-Id: I0a20f38b3370eda6dcda218a5a76b58646aeb2f3
Reviewed-on: https://dart-review.googlesource.com/53523
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-05-03 05:01:24 +00:00
Alexander Markov ac7ca17652 [vm/kernel] Experimental: generate DBC-like bytecode in kernel binaries
To enable bytecode generation, toggle kEnableKernelBytecode flag at
the beginning of pkg/vm/lib/bytecode/gen_bytecode.dart.
This will also enable generation of bytecode in platform dill files.

Also, bytecode generation can be enabled using --gen-bytecode option of
pkg/vm/tool/gen_kernel.

In kernel binaries, the generated bytecode and constant pool are
placed into 'vm.bytecode' metadata attached to members.
pkg/vm/tool/dump_kernel tool can be used to disassemble
bytecode and print constant pool.

Differences between generated bytecode and original DBC are
described in pkg/vm/lib/bytecode/dbc.dart.

Format of constant pool is described in
pkg/vm/lib/bytecode/constant_pool.dart.

Currently, only a small subset of Dart language is supported.
Bytecode generator will not emit vm.bytecode metadata for a
member if its body has an unsupported operation.


Change-Id: I27d9a361dc779ea115e5676508ee757c1754e05d
Reviewed-on: https://dart-review.googlesource.com/49600
Reviewed-by: Samir Jindel <sjindel@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-04-23 03:42:52 +00:00
Alexander Aprelev f76dad0adc [frontend-server] Report error count on compile and recompile.
This allows frontend-server users(flutter) to do quick check whether frontend compilation reported errors as it produced output kernel file.

Change-Id: I6e4da8fac33104968eb7720200a1b7153ec8f3de
Reviewed-on: https://dart-review.googlesource.com/51000
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2018-04-12 16:54:19 +00:00
asiva 25702d355e [VM / frontend-server] Add ability to pass the 'sync-async' flag into the front end server so that 'flutter tools' can choose to turn
it off or on.

Change-Id: Idf9bdbd3c30d5f0ccae89eccfa414931484199c2
Reviewed-on: https://dart-review.googlesource.com/50880
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Siva Annamalai <asiva@google.com>
2018-04-12 01:15:01 +00:00
Jens Johansen 38fae026b4 Allow to output full component via computeDelta
This is the second attempt at this change.
The original try was committed as f9c7a4a22d.
The revert of that was committed as 2f68e82526.

This CL allows users of the incremental compiler to ask for a computeDelta
call to include the full Component in the output,
basically turning the incremental compiler into a batch compiler.

This CL furthermore changes the frontend_server (in pkg/vm) to use this
functionality.

This change - used in flutter - takes the time it takes to run
`flutter test` in `packages/flutter` from ~8 minutes 30 seconds to
~2 minutes 30 seconds (on my machine).

Fixes #32663.

Change-Id: I073e77b3596b33a24cabcfbcedf97bb0be7aa450
Reviewed-on: https://dart-review.googlesource.com/49125
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-04-03 12:59:48 +00:00
Alexander Aprelev 4da52281aa [frontend-server] Return non-zero exit code if there are errors.
Change-Id: I2a1c28b391fae1cb2f7dd20b9302c70fa2fbd44e
Reviewed-on: https://dart-review.googlesource.com/48684
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-03-29 02:45:39 +00:00
Siva Annamalai 2f68e82526 Revert "Allow to output full component via computeDelta"
This reverts commit f9c7a4a22d.

Reason for revert: This CL breaks the restart functionality in Flutter, when we restart we end up with an empty app.dill file (60 bytes).

Original change's description:
> Allow to output full component via computeDelta
> 
> This CL allows users of the incremental compiler to ask for a computeDelta
> call to include the full Component in the output,
> basically turning the incremental compiler into a batch compiler.
> 
> This CL furthermore changes the frontend_server (in pkg/vm) to use this
> functionality.
> 
> This change - used in flutter - takes the time it takes to run
> `flutter test` in `packages/flutter` from ~8 minutes 30 seconds to
> ~2 minutes 30 seconds (on my machine).
> 
> Change-Id: Ia185d28da1f97b0be5dad8814cd01a8f13482724
> Reviewed-on: https://dart-review.googlesource.com/47020
> Commit-Queue: Jens Johansen <jensj@google.com>
> Reviewed-by: Peter von der Ahé <ahe@google.com>
> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>

TBR=ahe@google.com,vegorov@google.com,jensj@google.com

Change-Id: I5ff39f9d78319413f4bbb7800e24bf27ab4ada9c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/48240
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Siva Annamalai <asiva@google.com>
2018-03-23 21:20:30 +00:00
Jens Johansen f9c7a4a22d Allow to output full component via computeDelta
This CL allows users of the incremental compiler to ask for a computeDelta
call to include the full Component in the output,
basically turning the incremental compiler into a batch compiler.

This CL furthermore changes the frontend_server (in pkg/vm) to use this
functionality.

This change - used in flutter - takes the time it takes to run
`flutter test` in `packages/flutter` from ~8 minutes 30 seconds to
~2 minutes 30 seconds (on my machine).

Change-Id: Ia185d28da1f97b0be5dad8814cd01a8f13482724
Reviewed-on: https://dart-review.googlesource.com/47020
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-03-23 12:07:56 +00:00
Peter von der Ahé 4f2bdff90b Rename Program to Component
Change-Id: I1a3cc03fba9783807fa637a9d42fdbad68ee7686
Reviewed-on: https://dart-review.googlesource.com/31040
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2018-03-15 12:22:23 +00:00
Kevin Millikin 1abf929476 Fix some uses of deprecated API
Fix all deprecation warnings in the kernel and vm packages.

Change-Id: I44e5b128cc8fbc1360ad4c49ecdf2aa7cfd269d8
Reviewed-on: https://dart-review.googlesource.com/46720
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2018-03-15 10:09:23 +00:00
Alexander Aprelev 7328726088 Revert "Revert "Add MultiRootFileSystem options to frontend server.""
Fix check that the option was actuall specified.

This reverts commit 91c3b2c66e.

Change-Id: I0dd3e07dc7d170a8fe66e5f861aa801f4093d9e6
Reviewed-on: https://dart-review.googlesource.com/46566
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2018-03-15 04:25:23 +00:00
Alexander Aprelev 91c3b2c66e Revert "Add MultiRootFileSystem options to frontend server."
This reverts commit 6b0cfd42cd as it
breaks windows buildbot.

Change-Id: Iafdd4b008cef8f9787ec736e3dd89cee201886e4
Reviewed-on: https://dart-review.googlesource.com/46565
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2018-03-15 03:03:33 +00:00
Alexander Aprelev 6b0cfd42cd Add MultiRootFileSystem options to frontend server.
Change-Id: I2ac0d172ba730815db9ea5e17c72abe8d7faeea8
Reviewed-on: https://dart-review.googlesource.com/46620
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2018-03-15 00:41:23 +00:00
Alexander Markov 1c8841e52a [vm/kernel/aot] Fully support named parameters in type flow analysis
This CL adds all necessary support for analyzing types of named
parameters.

Also, optional positional parameters are analyzed more precisely:
default value is taken into account only if there is a call which omits
parameter.

Issue: https://github.com/dart-lang/sdk/issues/30480
Change-Id: I33ee68cfc736afb65ce561361975d67153af04a3
Reviewed-on: https://dart-review.googlesource.com/44883
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-03-07 21:33:42 +00:00
Alexander Aprelev 4688be6320 Pass sdkRoot as file path to frontend server.
This fixes test breakage on Windows.

Change-Id: I54dba0ec6955dee9d2417d81faa42dfc6b7e2da8
Reviewed-on: https://dart-review.googlesource.com/45040
Reviewed-by: William Hesse <whesse@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2018-03-05 16:32:29 +00:00
Alexander Aprelev 4ff939d3e4 [frontend-server] Keep output kernel file name through reload request.
Incremental reload request can switch to new main source. Until this CL, it caused reset of current incremental kernel file name back to full kernel file name, which resulted in full kernel file having incremental kernel contents.

BUG=dartbug.com/32384

Change-Id: Ie5037f7d6316fa262065f9ca6485879d7ee15b28
Reviewed-on: https://dart-review.googlesource.com/44901
Commit-Queue: Siva Annamalai <asiva@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-03-05 09:14:31 +00:00
Alexander Aprelev ee15c8eb68 Move frontend_server from flutter to dart sdk.
Change-Id: I7f8b36977b448f08caf58b88b3fda43fab364514
Reviewed-on: https://dart-review.googlesource.com/43888
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-03-01 22:39:39 +00:00
Alexander Markov 111ea256ad [vm/kernel/aot] Generate list of precompiler entry points during build
This CL adds auto-generation of entry points JSON file for standalone VM
during build (in runtime_kernel target, as it is only used for
kernel-based transformation).

pkg/vm/tool/precompiler2 script is changed to automatically pass
auto-generated entry points to gen_kernel.

New option --entry-points is added to pkg/vm/bin/gen_kernel.dart in order to
specify custom entry points files.

Checked-in entry_points.json is still used for testing and in gen_kernel
if --entry-points is not specified.

Issue: https://github.com/dart-lang/sdk/issues/30480
Change-Id: I39c4461e48763f40d7565656dc33e23fc5d9c2cb
Reviewed-on: https://dart-review.googlesource.com/42521
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2018-02-23 18:30:46 +00:00
Alexander Markov 3b005afc1c [kernel/vm/aot/tfa] Treat incoming arguments as dynamic in opaque calls
This CL changes incoming argument types of raw (opaque, untracked) calls
in type flow analysis (TFA) from static parameter types to 'dynamic'.
Currently, raw calls are used to approximate calls from native code to
entry points and calls through tear-offs. Using static parameter types
is not correct for raw calls as incoming argument types should not include
the effect of strong mode argument type checks inside the body of a
method. This change has almost no impact on the results of analysis
because intersection with static parameter types is already performed when
applying a summary.

To fill out the remaining gap, static types of fields are now taken
into account in TFA: type of an incoming value is intersected with a static
field type in _FieldValue.setValue().

Also, this CL includes a fix for handling cyclic type parameters in TFA
(this problem appears on language_2/cyclic_type_variable_test test as
soon as TFA starts looking at static types of fields).

Issue: https://github.com/dart-lang/sdk/issues/30480
Change-Id: Ib79f1399e6c086445a61acc22a24a5e37bf481e6
Reviewed-on: https://dart-review.googlesource.com/42820
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-02-23 01:23:42 +00:00
Alexander Markov f69cf3b3dc [vm/kernel/aot] Improve efficiency of set operations in TFA
This CL revises implementation of concrete types and set types in
global type flow analysis. For concrete types, unique comparable
class identifiers are assigned. SetType, instead of storing elements
in a Set, stores them in a List ordered by class identifiers.
This makes comparison, union and intersection of set types linear of
number of elements.

Issue: https://github.com/dart-lang/sdk/issues/30480
Change-Id: I85a2aa7e550fd5708352bdca515bf5cb5dc221d1
Reviewed-on: https://dart-review.googlesource.com/42120
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-02-22 22:24:01 +00:00
Alexander Aprelev 99e8f560af Revert "Revert "Reintroduce incremental compiler wrapper that supports accept protocol.""
This reverts commit 2d4c606e63.

The fix for the debug buildbot breakage now consists of skipping wide to utf8 conversion
altogether, instead move uri to path conversion directly into newly added File::OpenUri method.

Change-Id: Id3d7457d6a6b5045e5f38678548f4d7bed6d2c43
Reviewed-on: https://dart-review.googlesource.com/39801
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2018-02-07 20:58:51 +00:00
Alexander Aprelev 2d4c606e63 Revert "Reintroduce incremental compiler wrapper that supports accept protocol."
This reverts commit d78a41e0ee.

Revert "Fix length for WideToUTF8 conversion in UriToPath"

This reverts commit 011e1cc1c5.

Change-Id: I36140426a474962f77605e1aed6ddfd158bd064a
Reviewed-on: https://dart-review.googlesource.com/39480
Reviewed-by: Alexander Aprelev <aam@google.com>
2018-02-07 04:02:36 +00:00
Alexander Aprelev d78a41e0ee Reintroduce incremental compiler wrapper that supports accept protocol.
This reverts 4e677e9606

Change-Id: I32410b3a4ee9cc8a6f3318917ed519e13eea14f6
Reviewed-on: https://dart-review.googlesource.com/37862
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-02-06 18:38:58 +00:00
Alexander Aprelev 4e677e9606 Revert "Introduce incremental compiler that can support accept/reject vm flow."
This reverts commit 2912e95451 as it introduced a flaky test.

Change-Id: I09c5d64eb2fe75ed67b6af5aa60b91de88f4bbda
Reviewed-on: https://dart-review.googlesource.com/37865
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2018-01-31 19:17:39 +00:00
Alexander Markov d69ac00676 [vm/kernel/tfa] Remove unused static type approximations
This CL removes .staticType from all Types and most Statements as they
are not currently used.

Change-Id: Ia29bac49327356b26395c4851d84941daf61614d
Reviewed-on: https://dart-review.googlesource.com/37124
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-01-31 19:15:15 +00:00
Alexander Aprelev 2912e95451 Introduce incremental compiler that can support accept/reject vm flow.
This is to be used in Flutter tools: https://github.com/flutter/engine/pull/4601

Bug: https://github.com/dart-lang/sdk/issues/31919
Change-Id: Ib94562e797b3455c047ce5a9dae959375f957e5f
Reviewed-on: https://dart-review.googlesource.com/37360
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-01-31 17:06:06 +00:00
Alexander Markov f9503cda50 [vm/kernel] Improvements and fixes in type flow analysis
* Invocation handlers and InvocationAnalyzer are revised to reduce
  complexity of the code, improve precision and efficiency of analysis.

* Invocation now has 2 subclasses: DirectInvocation and
  DispatchableInvocation; processing of invocations is moved to these
  subclasses and simplified.
  DirectInvocation is responsible for processing particular
  methods and fields, while DispatchableInvocation processes polymorphic
  calls by collecting targets and accurate receiver types for each target,
  and delegating to DirectInvocations for processing of each target.

* Dynamic tear-offs and dynamic calls via getter/field are
  supported.

* Invalidation of field initializers is implemented.

* Implicit 'return null' at the end of a function is correctly
  detected.

Issue: https://github.com/dart-lang/sdk/issues/30480
Change-Id: I3d2ea69fbc95e3eb9aee244ee909016dfcf79bee
Reviewed-on: https://dart-review.googlesource.com/34507
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-01-19 17:39:35 +00:00
Alexander Markov bcdb32bc1a [vm/kernel] Unit tests for type flow analysis
Issue: https://github.com/dart-lang/sdk/issues/30480
Change-Id: If6cf8c7dfb59703b00f5432ce803f81e1bf90232
Reviewed-on: https://dart-review.googlesource.com/34301
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-01-19 00:55:34 +00:00