Commit Graph

1162 Commits

Author SHA1 Message Date
Samir Jindel 39c93a2b19 Revert "Revert "[vm/kernel] Expression execution through Kernel."
This reverts commit b5154dd01e.

Original revision is in patchset 1.

Change-Id: Ic0776011c6fdbd64c025086535351474a9a88b6e
Reviewed-on: https://dart-review.googlesource.com/54407
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2018-05-15 12:03:22 +00:00
Samir Jindel 1a23ff68a5 Fix incorrect handling of NSM forwarders and pull all logic into CFE. (Take 2)
The behavioral difference is that named and optional arguments are filled in
with their default values in the `Invocation` object passed to `noSuchMethod`.

On the implementation side we make NSM forwarders concrete and fill in their
bodies in the CFE. The custom (and somewhat hacky) VM support is no longer
needed, and Dart2JS can benefit from this implementation as well.

According to discussion on #33031 we will be able to re-land this soon without
breaking Mockito.

Prior failures on precompiler bots are fixed in Patchset 2.

Change-Id: If1b7fe4cf6da5ef38f330e1ad226121bcfc958a1
Reviewed-on: https://dart-review.googlesource.com/54401
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-05-15 11:23:32 +00:00
Alexander Markov 344c68e54c [kernel, vm] Revise how metadata is written in kernel binaries
Metadata is no longer written ahead of all nodes. Instead, metadata for
each node is written in the same context as the node itself (into a separate
buffer). This allows metadata to contain (serialize) arbitrary nodes
(for example, arbitrary DartTypes) and use serialization context of parent
nodes (such as declared type parameters).

However, with this change metadata looses the ability to reference
arbitrary AST nodes. This ability was overly restricted and had no
practical uses. (It was not possible to reference nodes which are not
reachable from root Component. As a consequence, it was not possible to
write references to arbitrary DartTypes.)

This change aligns the serialization capabilities of metadata with
how kernel AST nodes are serialized.

Change-Id: I027299a33b599b62572eccd4aa7083ad1dd2b3b3
Reviewed-on: https://dart-review.googlesource.com/54481
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2018-05-15 00:41:08 +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
Samir Jindel 184e2a8b4c [vm] Support partial instantiation of noSuchMethod forwarders in VM.
This is complicated by the fact that the normal factory method for creating
Invocation objects references the arguments descriptor to determine how many
type arguments are passed. This doesn't work for partially instantiated
closures, because the arguments descriptor will say "0" type arguments even when
there may be delayed type arguments attached to the closure from partial
instantiation. The arguments descriptor can't be modified, so we have a new
factory method which takes the number of delayed type arguments directly.

Change-Id: Ic9a35a482b3b7ef80564e674cc6207873e255111
Reviewed-on: https://dart-review.googlesource.com/54245
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2018-05-14 14:34:58 +00:00
Jens Johansen 7b3ba3f41f ClassHierarchy refactorings
This CL:
* Removes unused functions in the ClassHierarchy
* Turns the data structures used in the ClassHierarchy upside down
  (nodes have a lists of supers instead of lists of subs)
* Factors some things that needs the original list-of-subs into another
  class that the user can ask the ClassHierarchy to compute if needed.
  It appears that it isn't generally.

This is step #1 in turning the ClassHierarchy into an incremental
ClassHierarchy.

Change-Id: I48c5731c01c1b0e8bf1fcd4ddba7f2bf7ce3b9c9
Reviewed-on: https://dart-review.googlesource.com/53662
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2018-05-14 11:33:20 +00:00
Jens Johansen 94a6a48edd Don't encode strings up front; don't toString uris
Second try. First try was reverted because a previously empty URL (the
default 'always there' one) is now a null url instead, which wasn't
handled properly in the frontend_server.

See 47e9039512 for original details.

This reverts commit 4c9b712052.

Change-Id: I717eb927cbe29b6388e72f7e270428d234d44e4d
Reviewed-on: https://dart-review.googlesource.com/53580
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-05-14 11:31:58 +00:00
Régis Crelier 6d7d6fdf01 [VM interpreter] Recover EntryOptional bytecode, improve interpreter tracing.
Change-Id: I51a4bd6ac5b55ff0250965386199057c723d7fdb
Reviewed-on: https://dart-review.googlesource.com/54742
Reviewed-by: Zach Anderson <zra@google.com>
2018-05-11 22:39:49 +00:00
Zach Anderson 46ab040e58 Revert "[vm/kernel] Enable kernel2kernel "constants" transformation in AOT mode (after running TFA)"
This reverts commit 039e8a1755.

Reason for revert:
Blocks the roll into Flutter.
See https://github.com/dart-lang/sdk/issues/33095

Original change's description:
> [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>

TBR=vegorov@google.com,kustermann@google.com,alexmarkov@google.com,askesc@google.com

# Not skipping CQ checks because original CL landed > 1 day ago.

Change-Id: I1af0200dcb0aef03c7bd9ba3b5aead1565f05708
Reviewed-on: https://dart-review.googlesource.com/54720
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Todd Volkert <tvolkert@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2018-05-11 17:50:46 +00:00
Alexander Markov 3ca5d165af [frontend server] Add an option to generate delta kernel file
This change adds experimental option '--import-dill' to front-end server
to specify existing kernel file to import when compiling a new one.
Newly generated kernel file will depend on the imported one and will
omit libraries available in the imported dill file, as well as platform
libraries.

Caveat: the new option is not compatible with '--incremental'.
Change-Id: Id637908afdb12f1829e5f634251fa9ad82676baf
Reviewed-on: https://dart-review.googlesource.com/54309
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-05-11 17:18:26 +00:00
Alexander Markov 0f9cbf5885 [vm/kernel/bytecode] Fix bytecode generation for StaticSet
Change-Id: I42fd72ba0b7226fb5e33958af8b242e26f26e811
Reviewed-on: https://dart-review.googlesource.com/54661
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-05-11 17:16:06 +00:00
Régis Crelier 41fcbd097c [VM runtime] Initial version of Kernel Bytecode interpreter in VM runtime.
Not fully working yet, only x64, no gc, no frame walking, etc...

Change-Id: I4d8357f6d46371bf21c3d54266cfe26163e3c8dc
Reviewed-on: https://dart-review.googlesource.com/50021
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-05-09 20:29:27 +00:00
Kevin Millikin 8dbe716085 Remove the unused GenericCovariantInterface bit
None of the back ends are using it and it imposes a cost to have to
compute it and try to preserve it.

Change-Id: I217e1191b535829021fa11f2698cadd8d4baf1c8
Reviewed-on: https://dart-review.googlesource.com/54383
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-05-09 15:04:43 +00:00
Samir Jindel b5154dd01e Revert "[vm/kernel] Expression execution through Kernel.
This reverts commit afd0a52a5a.

Reason for revert: Breaks kernel-a32 and kernel-rbc bots

Original change's description:
> [vm/kernel] Expression execution through Kernel.
> 
> Change-Id: Id90c91cb3b71f9ce703e21fe48147b86a7764d34
> Reviewed-on: https://dart-review.googlesource.com/42562
> Reviewed-by: Ryan Macnak <rmacnak@google.com>
> Reviewed-by: Alexander Aprelev <aam@google.com>
> Commit-Queue: Samir Jindel <sjindel@google.com>

TBR=aam@google.com,rmacnak@google.com,sjindel@google.com

Change-Id: If1ecad6145aeab81d5d3581798a628ead0265c38
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/54420
Reviewed-by: Samir Jindel <sjindel@google.com>
Commit-Queue: Samir Jindel <sjindel@google.com>
2018-05-09 12:41:00 +00:00
Samir Jindel afd0a52a5a [vm/kernel] Expression execution through Kernel.
Change-Id: Id90c91cb3b71f9ce703e21fe48147b86a7764d34
Reviewed-on: https://dart-review.googlesource.com/42562
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Samir Jindel <sjindel@google.com>
2018-05-09 10:27:52 +00:00
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
Samir Jindel 03abbc73d2 CFE support for expression evaluation, refactored.
Change-Id: I7eac1020b7aa11ea0276f909d7b11ee6388b1aa7
Reviewed-on: https://dart-review.googlesource.com/53209
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-05-08 11:20:35 +00:00
Dmitry Stefantsov 4f586e265e [fasta] Update expectation files after CL 50941
Change-Id: I85aba2501a7b8a911e122f0a802dfc21b7e87e1e
Reviewed-on: https://dart-review.googlesource.com/51620
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
2018-05-08 10:53:47 +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 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 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 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 2765fcf2ae Revert "Revert "Revert "Fix incorrect handling of NSM forwarders and pull all logic into CFE."""
This reverts commit 9a7e1f64a2 as it
breaks mockito tests and commit 0bc6e7217a as being done for
9a7e1f64a2.

Bug: https://github.com/dart-lang/sdk/issues/33031
Change-Id: Id20a83c8a7a62ec73446180ecb37e9200f3a92b6
Reviewed-on: https://dart-review.googlesource.com/53540
Reviewed-by: Alexander Aprelev <aam@google.com>
2018-05-03 06:01:08 +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 Aprelev 9a7e1f64a2 Revert "Revert "Fix incorrect handling of NSM forwarders and pull all logic into CFE.""
This reverts commit 24dd9b4176 as it broke
the presubmit buildbots.

Change-Id: If225ad7c5728413860ce7b5493e8a7fcd92f54e8
Reviewed-on: https://dart-review.googlesource.com/53461
Reviewed-by: Emily Fortuna <efortuna@google.com>
2018-05-02 19:48:25 +00:00
Samir Jindel 24dd9b4176 Revert "Fix incorrect handling of NSM forwarders and pull all logic into CFE."
This reverts commit 7d5025e814.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> Fix incorrect handling of NSM forwarders and pull all logic into CFE.
> 
> The original implementation was designed around a shared misunderstanding
> of optional parameter handling in the spec. (which was also ambiguous about type parameters).
> 
> The correct behavior for optional/type parameters is to fill them in with their default values/bounds.
> This behavior can be implemented without any backend support, as is done in this CL.
> 
> Change-Id: Ib81f17ead2d2920e755703e244db5afc328d0315
> Reviewed-on: https://dart-review.googlesource.com/52802
> Commit-Queue: Samir Jindel <sjindel@google.com>
> Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>

TBR=dmitryas@google.com,sjindel@google.com

Change-Id: Ice6cd36cc62772e013bded83e0f589fe4b5e9d53
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/53400
Reviewed-by: Samir Jindel <sjindel@google.com>
Commit-Queue: Samir Jindel <sjindel@google.com>
2018-05-02 16:05:26 +00:00
Samir Jindel 7d5025e814 Fix incorrect handling of NSM forwarders and pull all logic into CFE.
The original implementation was designed around a shared misunderstanding
of optional parameter handling in the spec. (which was also ambiguous about type parameters).

The correct behavior for optional/type parameters is to fill them in with their default values/bounds.
This behavior can be implemented without any backend support, as is done in this CL.

Change-Id: Ib81f17ead2d2920e755703e244db5afc328d0315
Reviewed-on: https://dart-review.googlesource.com/52802
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-05-02 12:18:30 +00:00
asiva ee6351a147 [VM] Set up package config value when invoking the front end for compilation,
this should fix issue 32950 "(Isolate.spawnUri() ignores packageConfig
argument in Dart 2 mode.'

Bug:32950
Change-Id: I1247c87c171ac44d3da6e2a93212adba20c42e54
Reviewed-on: https://dart-review.googlesource.com/52986
Reviewed-by: Alexander Aprelev <aam@google.com>
2018-05-01 22:57:35 +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 Aprelev cd0c4e4fe1 Kernel service just returns errors. Leaves printing to the VM.
Bug: https://github.com/dart-lang/sdk/issues/32976
Change-Id: I797adc8d6db02441d8ffa0972cd6f1be051efa6a
Reviewed-on: https://dart-review.googlesource.com/52882
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2018-04-27 17:17:28 +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
Ben Konyi b641826ccf [ VM / CFE ] Removed changes introduced in c7e4a7d333 which allowed for dart:_internal to be imported for tests and updated DartAPI_InvokeNoSuchMethod to not depend on dart:_internal.
Change-Id: Ia861f7ef9eb6de0ee79743592d3517011c66327e
Reviewed-on: https://dart-review.googlesource.com/52266
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2018-04-24 22:14:48 +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
Ben Konyi c7e4a7d333 [ VM / CFE ] Added override to allowPlatformPrivateLibraryAccess in VmTarget for tests which need to import dart:_internal.
Change-Id: I7421c43b6949092c16af59df449a7c63cfa954c2
Reviewed-on: https://dart-review.googlesource.com/49623
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-04-12 15:39: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
Vyacheslav Egorov 0b83be906c [vm/compiler/aot] Introduce ways to dump instruction size statistics.
We add two things:

* --print_instruction_stats makes compiler dump per IL instruction size
breakdown (how many bytes of code were produced from specific instruction
kinds). This was largely implemented by kustermann@ in
https://codereview.chromium.org/2584613002/ and this CL does only few changes
to the original implementation, namely more uniform handling of slow-path code
and puts statistics object into RawInstructions (which has free space due to
alignment) instead of RawCode.

* --print_instructions_sizes_to=symbols.json makes compiler dump per Instruction
object size breakdown into a JSON file. This JSON file can later be processed
with pkg/vm/tool/run_binary_size_analysis.dart script to produce interactive
binary size diagram similar to runtime/third_party/binary_size tool.

Change-Id: Ied4965b9a0a91b3025eefbe981ecd47cdcf782d6
Reviewed-on: https://dart-review.googlesource.com/50501
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-04-11 13:03:16 +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