Commit Graph

882 Commits

Author SHA1 Message Date
Martin Kustermann 039e8a1755 [vm/kernel] Enable kernel2kernel "constants" transformation in AOT mode (after running TFA)
This CL also uses the newer `onProblem` error reporting mechanism, which supports contexts.

The errors by the constant evaluator are formatted e.g. like this:

    .../language_2/compile_time_constant_o_test_01.dart:14:8: Error: Duplicate keys are not allowed in constant maps (found duplicate key "StringConstant(foo)").
      "foo": 499
       ^
    .../language_2/compile_time_constant_o_test_01.dart:32:24: Context: While analyzing:
      Expect.identical(m1, m3);

Change-Id: I463416e14686e218b0f08903bd6aa0bca7392260
Reviewed-on: https://dart-review.googlesource.com/53021
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-05-09 09:00:02 +00:00
Alexander Markov 04e9f7da27 [vm/kernel/aot] Fix infinite looping in TFA (ensure convergence of analysis)
Change-Id: If4fe0d6522271880b4bf8d0957ca07ef1f038a90
Reviewed-on: https://dart-review.googlesource.com/53525
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-05-04 17:28:46 +00:00
Alexander Markov 2929b71aa2 [kernel/vm] Address follow-up review comments for bytecode generation
Change-Id: Ifa9dd128ef7179ec521c893ac567b0f81ba5e306
Reviewed-on: https://dart-review.googlesource.com/53120
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-05-03 16:45:03 +00:00
Alexander Aprelev dcf4886500 [frontend-server] Add verbose option.
Change-Id: I49e2e4a70b91262765509504e4da303459f29fba
Reviewed-on: https://dart-review.googlesource.com/53170
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2018-05-01 16:43:14 +00:00
Martin Kustermann 4697e3c8f6 [vm/kernel] Change "constants" kernel2kernel transformation to be able to recover from errors
Instead of simply throwing an exception when a compile-time error was
discovered during constant evaluation, we report the error and continue
transforming.

This also collects a context, which can be used by error reporters to
show users in which context an error occured.

The reason for using an interface for reporting errors is to be able to
report reasonable nice error messages, keep the transformation inside
package:kernel and allow users of the transformation to possibly report
nicer error message, e.g. by adding quotes of source positions (which
will come in another CL). This makes it slightly verbose.

Change-Id: I965cafc690dddb525b20368d03bb978e18a6ee58
Reviewed-on: https://dart-review.googlesource.com/52447
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-04-30 11:27:55 +00:00
Alexander Markov e7848a8cda [vm/kernel] Avoid dangling references to DartTypes from constant pool
While generating bytecode, avoid flattening of type arguments used for
instance allocations (and thus avoid creating new types when substituting
type parameters). This is a workaround to limitation of kernel metadata
which is unable to serialize references to nodes (such as DartType)
not reachable from root Component.

Change-Id: I52c5e21873d0159d389895dc570a9e7283f2a6ff
Reviewed-on: https://dart-review.googlesource.com/52643
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-04-25 21:36:31 +00:00
Alexander Markov 5484b94695 [vm/kernel] Support more operations in bytecode generator
Change-Id: Ie459289196d75fbd69490a0cd4d3d0445e025748
Reviewed-on: https://dart-review.googlesource.com/51800
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 22:50:21 +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
Samir Jindel 8aa36b75c5 Re-land "[vm/kernel] Fix non-canoncialized type arguments in partial instantiation."
Original revision is in Patchset 1.

Run against failing kernel-precomp tests in "cl-linux-try".

Change-Id: I997de294150ef7dd0874eeccb8b6187ae64ea813
Reviewed-on: https://dart-review.googlesource.com/51220
Reviewed-by: Erik Corry <erikcorry@google.com>
2018-04-18 13:44:25 +00:00
Vyacheslav Egorov 30655dcea0 [vm/aot] Treat Endian.host as a compile time constant.
VM only supports little-endinian targets at the moment so it makes sense
to default Endian.host to be equal to Endian.little when AOT compiling.

JIT (non app-jit configuration) does not have this problem because it can treat
static final fields as constants.

Bug: https://github.com/dart-lang/sdk/issues/32836
Change-Id: Id186c3d384cd06c304111cb5a5bfc7d8eda89166
Reviewed-on: https://dart-review.googlesource.com/50720
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2018-04-15 11:36:06 +00:00
Martin Kustermann b52931ff30 Revert "[vm/kernel] Fix non-canoncialized type arguments in partial instantiation."
This reverts commit bd12c869ae.

Reason for revert: Made many dartkp builders result in crashes.

Change-Id: I908f3929bf3a0227fcc3979b8ba134b1904c8e1c
Reviewed-on: https://dart-review.googlesource.com/51140
Reviewed-by: Régis Crelier <regis@google.com>
2018-04-13 16:39:20 +00:00
Samir Jindel bd12c869ae [vm/kernel] Fix non-canoncialized type arguments in partial instantiation.
Also lay the foundation for partial instantiation of regular closures.

Change-Id: If1c0afd9291d2f9202d8287ebc3ec563679eb06f
Reviewed-on: https://dart-review.googlesource.com/50182
Reviewed-by: Régis Crelier <regis@google.com>
2018-04-13 13:24:17 +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
Alexander Markov 17fc446579 [vm/kernel/aot] Fix handling of calls via fields/getters in TFA
Bug: https://github.com/flutter/flutter/issues/16182
Change-Id: Ib2021212fd2dde8b549ca5db9b23287276dc33c9
Reviewed-on: https://dart-review.googlesource.com/50840
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-04-12 16:48:39 +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
Kevin Millikin 74cf86cbbb Remove Kernel's DispatchCategory
It complicates the intermediate language, none of the back ends are
using it, and it's not something that we want transformation writers
and code generators to deal with.

Change-Id: Ic79f7935dd8619bd233346bb25947e864f38a104
Reviewed-on: https://dart-review.googlesource.com/50440
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Samir Jindel <sjindel@google.com>
2018-04-11 07:43:41 +00:00
Alexander Markov 83f5b1f740 [vm/kernel/aot] Infer types of bool expressions in TFA
This CL enables type inference for bool expressions used in 'if',
'while', 'for', 'assert', '?:', '&&', '||' and '!' in TFA in order to
eliminate more bool checks.

AOT snapshot size of flutter_gallery (in release mode):

Before:
Instructions(CodeSize): 7297024
Total(CodeSize): 11833828

After:
Instructions(CodeSize): 7159120
Total(CodeSize): 11648470

Issue: https://github.com/dart-lang/sdk/issues/32718
Change-Id: If4212ec493ff9f4443be6da02bdd75f74c8c8c42
Reviewed-on: https://dart-review.googlesource.com/49823
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2018-04-05 23:19:03 +00:00
Aske Simon Christensen 20ea3f5d69 Pass a list of context messages in onProblem callback.
Change-Id: I518e229eba261a999f43ab7ccd8cb3cfc8aae7b1
Reviewed-on: https://dart-review.googlesource.com/44541
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-04-05 13:29:16 +00:00
Aske Simon Christensen 83ef97f873 Wrap a formatted message with line and column in a FormattedMessage.
Change-Id: I9df1bc7ee839d6310e3670d99e813fe969fe1cb4
Reviewed-on: https://dart-review.googlesource.com/44430
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-04-05 13:29:16 +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 Markov 7b51acd37f [vm/kernel/aot] Treat 'return;' as 'return null;' in TFA
Change-Id: I8ccc72494fda00bbcc72b538035e9f6ff8cd2d82
Reviewed-on: https://dart-review.googlesource.com/49060
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-04-02 22:00:05 +00:00
Alexander Markov a60b4d6f56 [kernel/vm/aot] De-duplicate identical mixin applications
Closes https://github.com/dart-lang/sdk/issues/32458

Change-Id: I8439541375d806b0c3ebc5bda2d43a0a0f6643e4
Reviewed-on: https://dart-review.googlesource.com/48884
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-03-30 23:38:03 +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
Alexander Markov c60199cf86 [vm/kernel/aot] Tree shaking based on results of TFA, take 2.
This is a re-landing of

https://github.com/dart-lang/sdk/commit/06ebf884db61b97a60b1578560678329cd51bf61

after the fix was submitted separately at

https://github.com/dart-lang/sdk/commit/e3b9c2860e46f9d673ffc3129ede2a11c6125d06

Original review: https://dart-review.googlesource.com/c/sdk/+/46942

Issue: https://github.com/dart-lang/sdk/issues/30480
Change-Id: I2d3a10acb9b5af0184b3d1504acb2f4ebebfff8a
Reviewed-on: https://dart-review.googlesource.com/48440
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-03-27 23:39:24 +00:00
Alexander Markov e3b9c2860e [vm/kernel/aot] Fix representation of SuperPropertySet in TFA summaries
This CL fixes TFA summary collector to use right-hand side value as the
result of SuperPropertySet expression instead of result of setter invocation.

Change-Id: Ie2388387645eeec95096ab797e2718b7e031131b
Reviewed-on: https://dart-review.googlesource.com/48300
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-03-26 16:41:25 +00:00
Alexander Markov 7386d7b5ec Revert "[vm/kernel/aot] Tree shaking based on results of TFA"
This reverts commit 06ebf884db.

Reason for revert: buildbot failures.

Change-Id: Ie6b33061cad80ae3b20b773cc435d64a755620fc
Reviewed-on: https://dart-review.googlesource.com/48263
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-03-23 22:57:19 +00:00
Alexander Markov 06ebf884db [vm/kernel/aot] Tree shaking based on results of TFA
This CL adds tree shaking transformation into TFA transformer, replacing
simple DropMethodBodiesVisitor. In addition to removing bodies of
unreachable members, tree shaker is able to remove unused classes, typedefs
and member declarations, and replace unreachable calls with 'throw'.

Total(CodeSize) of flutter_gallery in --release mode
before: 11,671,369
after:  11,499,694

https://github.com/dart-lang/sdk/issues/30480

Change-Id: I966cf222eb9725b7a75dd193ac479436b9b9b4c3
Reviewed-on: https://dart-review.googlesource.com/46942
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-03-23 22:21: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
Ryan Macnak 38b0825a55 [kernel] Add target for Flutter on Fuchsia.
Change-Id: I7ab8e989e1e2038565e1d04a1c8f8ce880328ed8
Reviewed-on: https://dart-review.googlesource.com/47500
Reviewed-by: Peter von der Ahé <ahe@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2018-03-22 18:21:09 +00:00
Alexander Markov 9a20a001a6 [vm/kernel/aot] Make static non-const fields nullable in TFA
In Dart, if initializer throws an exception, a static non-const field
will have a null value, even if result of initializer is non-nullable.
This CL fixes TFA to make static non-const fields with initializer
nullable in order to correctly handle this case.

Change-Id: Ib451927b3da508c18ea43fcd0533066fb129a45e
Reviewed-on: https://dart-review.googlesource.com/46577
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-03-16 17:15:47 +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 4b8a604705 [vm/kernel/aot] Support new kernel AST node AssertBlock in TFA
This CL adds support for new kernel AST node AssertBlock (introduced in
https://github.com/dart-lang/sdk/commit/65b19ffa3cac1be00cdab797af864be994c705dc)
to type flow analysis.

Change-Id: I86c2243665c7c429ee5d2fab74f20a0a266d1439
Reviewed-on: https://dart-review.googlesource.com/46601
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-03-14 22:36:20 +00:00
Alexander Markov 211bf1ee5f [vm/kernel/aot] Cache specializations of cone types in TFA
This speeds up TFA on Flutter gallery:
Analysis time before change: 10131ms
Analysis time after change:   8041ms

Change-Id: I370cc3f1fefc87e5efc311b390e9a6a07dae4497
Reviewed-on: https://dart-review.googlesource.com/45360
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-03-07 22:03:52 +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 a4c69b7729 Pass platform sdk as uri to frontend server.
This fixes frontend_server.dart.snapshot creation on Windows.

Change-Id: I8dca91ed37ad7c83e951b6fa6c7a34070a35b666
Reviewed-on: https://dart-review.googlesource.com/45060
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-03-05 17:52:00 +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
Martin Kustermann 9104b5d387 [VM] Eliminate more type checks when not needed
Clear out generic-covariant-{impl,interface} on parameters which are
statically checked on call site.  If all call sites are this-dispatches then
we are guaranteed to not need the checks.

Issue https://github.com/dart-lang/sdk/issues/31798

Change-Id: I5452a1c9eb3c3e36c1dfc978327bfdcb256cc003
Reviewed-on: https://dart-review.googlesource.com/43421
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-03-01 14:31:38 +00:00
Alexander Markov a681867054 [vm/kernel/aot] Prepare to enable type flow analysis in Flutter
* Introduce --tfa option in gen_kernel and 'useGlobalTypeFlowAnalysis'
  parameter in compileToKernel(), which is used in Flutter's frontend
  server.

* Split entry_points_extra.json into 2 parts: common to all embedders
  and specific to a standalone VM (entry_points_extra_standalone.json).

* Extract generation of entry points JSON files into a separate .gni
  file, introduce action to generate entry points JSON using
  gen_snapshot instead of dart_bootstrap (required for Flutter), and
  action to copy checked-in extra entry points file.

Issue: https://github.com/dart-lang/sdk/issues/30480
Change-Id: Ie0af9d7128d7fc0e3a9d623fd3c1589e87c83f5c
Reviewed-on: https://dart-review.googlesource.com/43884
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2018-02-27 19:59:19 +00:00
Aske Simon Christensen 9d3e18e14d Do not treat context messages as errors in tests.
Re-enable co19 tests in legacy mode, reverting
f9be43d0f6

Closes https://github.com/dart-lang/sdk/issues/32337

Change-Id: I87922f6d8d727737f51fa6506dd775decd68915e
Reviewed-on: https://dart-review.googlesource.com/43966
Reviewed-by: William Hesse <whesse@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2018-02-27 15:20:19 +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 2dedc4f9bd [vm/kernel/aot] Add unreachable metadata to members and call sites
This CL adds metadata to mark unreachable (unused) members (both
functions and fields) and unreachable calls into kernel binaries
using the information inferred by global type flow analysis.

Issue: https://github.com/dart-lang/sdk/issues/30480
Change-Id: I86c75cd4c7798a23f1de52141d0e9d605b62bf19
Reviewed-on: https://dart-review.googlesource.com/42462
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-02-22 22:44:31 +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
Vyacheslav Egorov d869604387 [vm/kernel/aot] Rename Selector.get/set into Selector.doGet/doSet.
This is a workaround for issue #32196 which breaks Flutter engine
build when frontend_server tries to train by parsing itself.

Change-Id: I5c0d505f41ad5417bcc6a0f66663f28fed192e35
Reviewed-on: https://dart-review.googlesource.com/41983
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2018-02-16 14:51:17 +00:00