Commit Graph

4698 Commits

Author SHA1 Message Date
Stephen Adams 31cd4e1457 Factor deferred loading data
'Normalize' the data used for loading deferred libraries.  Replace
URIs and SHA1 hashes with indexes so that the URIs and hashes occur
once.

Bug: https://github.com/dart-lang/sdk/issues/29635
Change-Id: I3ac8791ad44ca588cbb1bd7d86f18243c956a04a
Reviewed-on: https://dart-review.googlesource.com/32505
Commit-Queue: Stephen Adams <sra@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2018-01-05 22:02:49 +00:00
Harry Terkelsen b8b69b1bd9 dart2js-kernel: fix switch with always-throwing method call
Change-Id: I8884207f05ba8cf0a2841f21b1a0e8189ebe14d4
Reviewed-on: https://dart-review.googlesource.com/32662
Commit-Queue: Harry Terkelsen <het@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Emily Fortuna <efortuna@google.com>
2018-01-05 21:48:28 +00:00
Johnni Winther 5aa6132a2c Avoid marking local functions as needing type arguments
Change-Id: I857414d58f2ee413ecf2a04987b61184a90ee164
Reviewed-on: https://dart-review.googlesource.com/32542
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2018-01-05 12:35:13 +00:00
Johnni Winther 534dcf6874 Register methods depending on the rti need of classes.
Change-Id: I634d78152fc56167b6f32819ffce5d2221da600a
Reviewed-on: https://dart-review.googlesource.com/32320
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2018-01-05 10:28:00 +00:00
Johnni Winther 4f8682f162 Start computing which generic methods need type arguments
+ rename runtime type concepts

Change-Id: I4d5a73a1327abd62a34c91582ed7a2c9b46a9bc4
Reviewed-on: https://dart-review.googlesource.com/32260
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2018-01-05 10:01:14 +00:00
Dan Rubel 86ee5b05d4 Add fasta parser invalid top level member recovery
Change-Id: Id343a220d1dd203dfbb31caa50d1e76046081c2a
Reviewed-on: https://dart-review.googlesource.com/32480
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-01-05 01:43:06 +00:00
Kevin Millikin 6fa813d818 Change handling of Kernel static errors
Before: Kernel static errors were represented by throwing a distinguished
error or else by calling a distinguished library const constructor.

Now: Kernel static errors are represented by InvalidExpression.  To support
error reporting, InvalidExpression has an optional message and a file
offset.  A back end can choose to signal these errors at any time; for
example, when deserializing the binary, or when compiling the procedure
containing the static error, or when the erroneous expression is evaluated
at run time.

InvalidStatement is removed because it can be encoded as ExpressionStatement
of InvalidExpression.

Future work:

* supporting static errors where an expression cannot appear in the AST
* allowing InvalidExpression to contain an Expression for error recovery
* adding a top-level list of static errors and warnings to the binary

Bug: https://github.com/dart-lang/sdk/issues/29840
Change-Id: Ifdfe9a76cee6cefed28061bf245be70531d2f413
Reviewed-on: https://dart-review.googlesource.com/31320
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2018-01-04 11:00:25 +00:00
Johnni Winther 985eba5139 Refactor RuntimeTypesNeed(Builder) and make them testable
Change-Id: I67234dd2b076327c138e5b1d7de47ee3edc987d1
Reviewed-on: https://dart-review.googlesource.com/31901
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2018-01-04 08:35:31 +00:00
Stephen Adams 6ceb6ce00e Emit type representation for generic function types
Change-Id: I0a10f5316b3e3c633c34f2a9e184de01ed9cf7de
Reviewed-on: https://dart-review.googlesource.com/32004
Commit-Queue: Stephen Adams <sra@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2018-01-04 02:45:15 +00:00
Brian Wilkerson 1d0f198eea Replace function arguments to assert with invocations of those functions
Change-Id: I09a3da573c7c936d4d381405c1a68805cbc065c4
Reviewed-on: https://dart-review.googlesource.com/32120
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-01-03 18:48:25 +00:00
Johnni Winther ca31d3e341 Handle inlining of static generic method calls.
Change-Id: I8531fd72589da0b823e59087361e4ff31b7be8cf
Reviewed-on: https://dart-review.googlesource.com/31786
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2018-01-03 08:36:35 +00:00
Johnni Winther e9243a4d16 Pass type arguments in static calls.
+ support generic type variable type literals
+ support generic type variable is test

Change-Id: I2473c39c33940c631070b919c7dcfe712fd1fe3d
Reviewed-on: https://dart-review.googlesource.com/31783
Reviewed-by: Stephen Adams <sra@google.com>
2018-01-03 07:57:58 +00:00
Johnni Winther 220a91122a Add --strong-mode flag to dart2js
+ move generic methods tests into a subfolder.

Change-Id: I00cde6a7dc7d6ff1677a8ca60f3a243f065e3765
Reviewed-on: https://dart-review.googlesource.com/31782
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2018-01-02 08:42:21 +00:00
Johnni Winther f6e69b1681 Port unittests, #10 of ?
Change-Id: Ic9b8f26d2d08b640a4e06653a1ea8f0623a406b5
Reviewed-on: https://dart-review.googlesource.com/31480
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-29 11:58:19 +00:00
Johnni Winther 9c954eb0ee Port unittests, part #8 of ?
Change-Id: I04b456d2a7c7d7ce0ad58546f2592d7ae852bf36
Reviewed-on: https://dart-review.googlesource.com/31420
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-29 10:33:42 +00:00
Johnni Winther 7fd07aa6a2 Sort emitted instance members
- and include injected members in ElementEnvironment.forEachLocalClassMember

Change-Id: I90afacf62177fcc5dfd57f23ccc6a7bb5ca4ef37
Reviewed-on: https://dart-review.googlesource.com/31342
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-29 10:15:23 +00:00
Sigmund Cherem 1ddb7db237 Add support for deferred globals in kernel.
Change-Id: I24adb7e4c67b7c1d077efd6705b9bce92406deac
Reviewed-on: https://dart-review.googlesource.com/31680
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Emily Fortuna <efortuna@google.com>
2017-12-29 07:17:53 +00:00
Emily Fortuna fa9e576a40 Adjust importsTo so that you can get the import chain for entities other than memberEntities.
Also added some more tests to the deferred equivalence test.


Bug:
Change-Id: Ia5ca50728a96020ff76b7b519558cdb5847d598e
Reviewed-on: https://dart-review.googlesource.com/31600
Commit-Queue: Emily Fortuna <efortuna@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-28 19:31:13 +00:00
Stephen Adams f937039bd6 Remove unused JS_BUILTIN
Became unused at:
https://github.com/dart-lang/sdk/commit/1ae1ec7df4b22238fd61e9e529ad62a498b3199e
Change-Id: I92c167dc2a071a45b2635b9b1d907015043d60ab
Reviewed-on: https://dart-review.googlesource.com/31560
Reviewed-by: Emily Fortuna <efortuna@google.com>
Commit-Queue: Stephen Adams <sra@google.com>
2017-12-28 01:16:02 +00:00
Stephen Adams 7fbacb037d Add comment on external dependency
TBR=sigmund@google.com
Bug:
Change-Id: I61a5a6d53921168c31118b42901a64015f5426bc
Reviewed-on: https://dart-review.googlesource.com/31402
Reviewed-by: Stephen Adams <sra@google.com>
Commit-Queue: Stephen Adams <sra@google.com>
2017-12-22 22:04:14 +00:00
Emily Fortuna 21891a965f Do id equivalence testing for deferred imports.
Also allows us to more generally compare annotations in multi-file tests.

Bug:
Change-Id: I2f4ac34b918cc80400ebc417dfcc2caf56457ac2
Reviewed-on: https://dart-review.googlesource.com/30923
Commit-Queue: Emily Fortuna <efortuna@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2017-12-22 20:04:44 +00:00
Johnni Winther 9fe7c0e806 Port unittests, part #5 of ?
Change-Id: I58c9deea426072907a5d02f61f23f138b1f50c1d
Reviewed-on: https://dart-review.googlesource.com/31101
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-22 12:11:47 +00:00
Sigmund Cherem f404b59d1f Disable multi-inheritance error when using the kernel FE
Workaround for Issue #31118

Change-Id: I1d19eb1adeb7236501c276eeee5446ada36115a3
Reviewed-on: https://dart-review.googlesource.com/31240
Reviewed-by: Emily Fortuna <efortuna@google.com>
Commit-Queue: Sigmund Cherem <sigmund@google.com>
2017-12-21 21:33:03 +00:00
Johnni Winther a521c7f255 First step debugging tests.
Change-Id: I8a947999778f851ed38c1a9fb518af00664f19ec
Reviewed-on: https://dart-review.googlesource.com/30740
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-21 14:03:51 +00:00
Johnni Winther a671328de3 Merge instance and static member usage maps.
Change-Id: I2c4802b946af162be2257a10502b2c8f823786d1
Reviewed-on: https://dart-review.googlesource.com/30448
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-20 14:52:59 +00:00
Johnni Winther f2c2c99714 Adjust inlining heuristics for in-loop calls
Change-Id: Ifaa1e3ac5405cb9159fd2e6c462e076d9f48b120
Reviewed-on: https://dart-review.googlesource.com/30444
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-20 08:20:03 +00:00
Johnni Winther 12ee4edbb8 Implement inlining heuristics on conditional expression.
Change-Id: I183b6345e29d6c00f140dcbd1ffff05faf0e781f
Reviewed-on: https://dart-review.googlesource.com/30442
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-20 08:02:14 +00:00
Stephen Adams 72736aff0d Avoid introducing js.Parameters in constructor body
Use the Parameter name in the template so that it is converted into a
VariableUse.

This change fixes some double-counting in the function parameter /
local variable minifier which made the --fast-startup constructors
'miss' using some minified names.

I believe the 'missed' names is a regression.

Saves 50k (0.4%) on one large app.

Change-Id: Ib7597f5c474ef285b082697e368667dbac23931b
Reviewed-on: https://dart-review.googlesource.com/30720
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Stephen Adams <sra@google.com>
2017-12-20 06:09:25 +00:00
Sigmund Cherem b280922064 Fix patch location for isolate library
Change-Id: Ie1f0913eb61dfd77e73d483fd48f235c58ded523
Reviewed-on: https://dart-review.googlesource.com/30626
Reviewed-by: Emily Fortuna <efortuna@google.com>
Commit-Queue: Sigmund Cherem <sigmund@google.com>
2017-12-20 00:15:43 +00:00
Sigmund Cherem 414bad86df Directly create dart2js platform files using its patch files
Change-Id: I1c7d59968bfafeeb5a8b5252fa2d47e3c05b893e
Reviewed-on: https://dart-review.googlesource.com/27404
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Emily Fortuna <efortuna@google.com>
2017-12-19 20:31:57 +00:00
Johnni Winther d3f6ce4c42 Use _MemberUsage for tracking static use in resolution
- in preparation for tracking unused optional arguments of static methods

Change-Id: Iba4d8aff488f6c366b587d543b063ae742494b15
Reviewed-on: https://dart-review.googlesource.com/29981
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-19 11:12:02 +00:00
Johnni Winther 66398a511a Store CallStructure in StaticUse
- in preparation for tracking unused optional arguments of static methods

Change-Id: I8a9b1d0d9acd57256d383f880b9c602d91804486
Reviewed-on: https://dart-review.googlesource.com/29801
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-19 10:21:08 +00:00
Emily Fortuna 4cd0593574 Tiny fix to fix type errors in our compiler while running host-checked
and deferred loaded code.

Bug:
Change-Id: I57b51a287fd7ffad59a1a59eae34e739b5e5603b
Reviewed-on: https://dart-review.googlesource.com/29745
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
Commit-Queue: Emily Fortuna <efortuna@google.com>
2017-12-15 18:42:33 +00:00
Johnni Winther b13a6015cc Support subtyping for function type variables.
Change-Id: I0e00330d76cc9b1f3d48bb1f0d87f6334976de54
Reviewed-on: https://dart-review.googlesource.com/29281
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-14 10:09:55 +00:00
Johnni Winther 5f06d51d1a Enable inlining by default
Change-Id: I4810959da23193d8a1b572b4feea329a2f4b2f31
Reviewed-on: https://dart-review.googlesource.com/29320
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-14 10:02:54 +00:00
Johnni Winther b759f8fb15 Use sorted named parameters on inlining.
Change-Id: I066383b86b55e1d76633c281f30ebbc3fa5d46e3
Reviewed-on: https://dart-review.googlesource.com/29280
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-14 09:21:44 +00:00
Johnni Winther 5c0f33934b Register inlined constructor types
Change-Id: I097394c868a0fabe0e83814a65ec7884b64741af
Reviewed-on: https://dart-review.googlesource.com/29121
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-14 09:07:03 +00:00
Johnni Winther 0edef589d4 Ensure type variables for inlined constructors and mixin fields
Change-Id: I348acffb7842ff1c9f28ebf73c507e282c6a045e
Reviewed-on: https://dart-review.googlesource.com/29080
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-14 08:53:21 +00:00
Sigmund Cherem 08bd966708 Count return/throw and their children in inlining heuristic.
I discovered this because a deferred method was being inlined accidentally: we
thought it was empty and inlined it when we shouldn't have.

Change-Id: I9795b62f4ffb81222100afedd3b42cb8828900bd
Reviewed-on: https://dart-review.googlesource.com/27925
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2017-12-13 23:26:54 +00:00
Dan Rubel 3ab29148f4 Add fasta parser cascade recovery
Change-Id: I1cf32604acf2124a9d61621fbb4cfb9343d98d33
Reviewed-on: https://dart-review.googlesource.com/28840
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2017-12-13 18:30:25 +00:00
Erik Ernst f95a3cc1e6 dart2js no longer warns that function type variables are not reified
Change-Id: I69746c92912fcbbc35e1f6c37e310352f92708f6
Reviewed-on: https://dart-review.googlesource.com/28641
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2017-12-13 14:01:16 +00:00
Johnni Winther 5599c80edd Don't create HParameterValue nodes for type arguments when inlining
Change-Id: If44fc4cbb39336f7ac01b906702f5aaa2ed1cd90
Reviewed-on: https://dart-review.googlesource.com/28721
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-13 10:10:23 +00:00
Johnni Winther a1f5474f80 Allow inlining of platform library functions
Change-Id: I2803d66f54d2e1052ca8af5fb719bded8f400171
Reviewed-on: https://dart-review.googlesource.com/28563
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-13 09:35:59 +00:00
Johnni Winther 9df549a2d0 Avoid inlining of external functions
Change-Id: I43aed9e484c55d40a9fa7d5db029e0d11a698b3e
Reviewed-on: https://dart-review.googlesource.com/28562
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-13 09:28:09 +00:00
Harry Terkelsen 1e0a657961 dart2js kernel: Add types seen in the superclass chain to the hierarchy
Change-Id: I5c0f6b76042e7a3cf8f54326963d56eb6a78f568
Reviewed-on: https://dart-review.googlesource.com/27020
Commit-Queue: Harry Terkelsen <het@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2017-12-13 00:19:03 +00:00
Bob Nystrom 650c9dcc8e Support extractTypeArguments() in 1.0 mode on the VM and dart2js.
Without strong mode, a "good enough" implementation is to simply call
the generic method with "dynamic" for the type arguments, which is what
this does. That should be enough to unblock our internal users.

We also need to not report a compile error when
dart_internal/extract_type_arguments.dart imports the hidden
"dart:_internal" library.

This patch does both of those for the VM and dart2js (using its old
front end).

Note that the test still fails because the test is more particular than
most actual user code would be -- it validates that the instantiated
type arguments are *exactly* correct, and not that the returned object
is merely subtype compatible.

Bug:
Change-Id: I0343beace4991861b29712b3fd7067ec8dc8f8ba
Reviewed-on: https://dart-review.googlesource.com/28020
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-12 19:04:18 +00:00
Johnni Winther 59106e8f55 Fix crashes caused by inlining
Change-Id: I7fef190a4b5248f1508f0122c5dcb5ee7fdc4c40
Reviewed-on: https://dart-review.googlesource.com/27940
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-12-12 08:07:29 +00:00
Emily Fortuna 1dab6ab88c Add List/Map factory type checks.
Bug:
Change-Id: I27b4cd1e4b528606e2ea2028eab3cdea1d47abc4
Reviewed-on: https://dart-review.googlesource.com/27882
Commit-Queue: Emily Fortuna <efortuna@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
2017-12-08 23:11:20 +00:00
Sigmund Cherem 5fde58ceb0 Map closure entities so they get emitted in the correct output unit
Change-Id: I7edcf1715adcff3caba5bbe7ebfc18ecaeca6801
Reviewed-on: https://dart-review.googlesource.com/27920
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Emily Fortuna <efortuna@google.com>
2017-12-08 22:40:40 +00:00
Stephen Adams d7516551ca measure computeWorldImpact in Kernel pipeline
Change-Id: I23d80a1272413350f3bf846d6e55e4bc533ddc59
Reviewed-on: https://dart-review.googlesource.com/25724
Commit-Queue: Stephen Adams <sra@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2017-12-08 21:01:51 +00:00