Commit Graph

282 Commits

Author SHA1 Message Date
Vijay Menon ed8d1d32e6 Regen DDC SDK
TBR=leafp@google.com

Change-Id: I830fb4b0f293a5b9805907f461e57ccf48214363
Reviewed-on: https://dart-review.googlesource.com/7740
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: William Hesse <whesse@google.com>
2017-09-22 15:29:37 +00:00
Vijay Menon d8083faecc Regen DDC SDK
TBR=jmesserly@google.com

Bug:
Change-Id: Icecb6576b4f5c70fdcfb0e220543a96e3621da92
Reviewed-on: https://dart-review.googlesource.com/7580
Reviewed-by: Vijay Menon <vsm@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Commit-Queue: Vijay Menon <vsm@google.com>
2017-09-21 17:18:02 +00:00
Vijay Menon 8470c871d6 Enable polyfill in d8 modules
This enables running benchmarks (e.g., DeltaBlue) on d8.  d8 tip (with
es6 modules) appears quite a bit faster than the latest dev nodejs (with common modules).

Change-Id: Iedcc97fac57c48b925ae7c1b6cba4bbedeba4d0b
Reviewed-on: https://dart-review.googlesource.com/7443
Commit-Queue: Vijay Menon <vsm@google.com>
Reviewed-by: Jennifer Messerly <jmesserly@google.com>
2017-09-20 22:47:21 +00:00
Florian Loitsch 38bf70d7ac Use generic functions in zones.
Migrated from https://chromiumcodereview.appspot.com/2893893002/

Change-Id: I0bd6dc1438eb1e6762e7760a08b5a760b07d4b10
Reviewed-on: https://dart-review.googlesource.com/4942
Reviewed-by: Florian Loitsch <floitsch@google.com>
Commit-Queue: Florian Loitsch <floitsch@google.com>
2017-09-20 15:46:06 +00:00
Vijay Menon 6ce85d5f99 Revert "Remove support for functions in asserts in DDC."
This reverts commit 8140e1db64.

Change-Id: If505903ba475324392d6c6bcdae3392f523aadc8
Reviewed-on: https://dart-review.googlesource.com/7107
Reviewed-by: Bob Nystrom <rnystrom@google.com>
Commit-Queue: Vijay Menon <vsm@google.com>
2017-09-19 21:46:13 +00:00
Gary Roumanis 07e9cfedad Load exception event
Dispatch load exception so that others can react without capturing the corresponding error. Will be used in conjunction with https://github.com/dart-lang/test/pull/682

Bug:
Change-Id: I19458ac01ba013cac6ad5408b3b763777e50ca4e
Reviewed-on: https://dart-review.googlesource.com/6644
Reviewed-by: Jake Macdonald <jakemac@google.com>
Commit-Queue: Gary Roumanis <grouma@google.com>
2017-09-18 19:12:52 +00:00
Bob Nystrom 8140e1db64 Remove support for functions in asserts in DDC.
These are not supported in Dart 2.0:

https://github.com/dart-lang/sdk/issues/30326
Change-Id: I2e177a647c43af2bf7f37ff382234b12b8c2286c
Reviewed-on: https://dart-review.googlesource.com/4182
Reviewed-by: Jennifer Messerly <jmesserly@google.com>
2017-09-15 23:37:06 +00:00
Jennifer Messerly 5522bb1aa9 fix #29004, unify compiler code for emitting classes
Change-Id: If3a58d364f8f125a3bc1ab5e1fc47c6b43328637
Reviewed-on: https://dart-review.googlesource.com/5140
Reviewed-by: Vijay Menon <vsm@google.com>
2017-09-13 21:05:06 +00:00
Jennifer Messerly 67f82b4eee optimize == in some more cases
Change-Id: Icdda25e85c8d3ab3805c7f0ab180c6e88e47f8ed
Reviewed-on: https://dart-review.googlesource.com/4580
Commit-Queue: Jennifer Messerly <jmesserly@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
2017-09-13 02:02:41 +00:00
Jennifer Messerly e14b589991 fix #30636, improve stack trace for anon closures variable declarations
Change-Id: I193c6cca765821193cdcaa62ddfbf961f1333428
Reviewed-on: https://dart-review.googlesource.com/4183
Reviewed-by: Vijay Menon <vsm@google.com>
2017-09-13 00:19:02 +00:00
Vijay Menon d5c913ef95 Fix null analysis on constants with unknown value
Terry is landing the test for this.  We were throwing on this:

  const u4 = const String.fromEnvironment("XXXXX");

  void main() {
    print(u4.toString());
  }

Change-Id: I5ad158978ce9a19c2d5a3b65a39beae1676fe7b1
Reviewed-on: https://dart-review.googlesource.com/5042
Reviewed-by: Jennifer Messerly <jmesserly@google.com>
Commit-Queue: Terry Lucas <terry@google.com>
2017-09-11 22:28:53 +00:00
Jennifer Messerly dc81668848 fix #30659, type tests in enums
Change-Id: I9cecc2a90889276af3cf75b6fa7a1b8f79778167
Reviewed-on: https://dart-review.googlesource.com/4609
Commit-Queue: Jennifer Messerly <jmesserly@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
2017-09-08 22:47:16 +00:00
Leaf Petersen b78fea7129 Restore subtyping between Dart classes and anonymous JS classes
Bug:
Change-Id: I9e7e78d1f309fb814644245d6fd281d3b9110589
Reviewed-on: https://dart-review.googlesource.com/4160
Reviewed-by: Jennifer Messerly <jmesserly@google.com>
2017-09-07 23:56:38 +00:00
Jennifer Messerly afe4e6c7af fix tearoff equality against null
Two different optimizations conflicted (in the SDK, == methods must take care to consider a null value, but at the same time tearoff == was optimized), so it fixes that. Also adds a test for this.

Change-Id: I3d6fef7cae9df2fcbb9c276ae4e48490fd62eabb
Reviewed-on: https://dart-review.googlesource.com/4180
Commit-Queue: Jennifer Messerly <jmesserly@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2017-09-07 22:49:52 +00:00
Jennifer Messerly b075ae01ca fix #30640, give names to async/async*/sync* functions
this will help stack traces

Change-Id: I76a26f87f7690a1a97f3bc40721240232550ed3f
Reviewed-on: https://dart-review.googlesource.com/4121
Reviewed-by: Vijay Menon <vsm@google.com>
2017-09-07 20:28:23 +00:00
Jennifer Messerly 1e9c2e109b fix #30634, optimize generic functions in DDC
this removes the extra closure that is unnecessary

Change-Id: I1f1a6c1e7fd378bd8dc4807c8ce77968b1e94319
Reviewed-on: https://dart-review.googlesource.com/3745
Reviewed-by: Vijay Menon <vsm@google.com>
2017-09-07 18:04:24 +00:00
Vijay Menon a068f82684 Bump stack trace limit
Change-Id: I509832879681f39f2592180166e53070eb6f8ae9
Reviewed-on: https://dart-review.googlesource.com/4060
Reviewed-by: Jacob Richman <jacobr@google.com>
Commit-Queue: Vijay Menon <vsm@google.com>
2017-09-07 16:31:34 +00:00
Jennifer Messerly ab226fd40c optimize Object members in DDC
This should improve performance of these members in most cases:
- toString
- operator ==
- hashCode
- runtimeType
- noSuchMethod

The helpers for checking `null` and then dispatching to the method are now very small again. Also, because we can lookup symbolized names always, we can start taking advantage of this in our Map/Set implementations (for a follow up CL).

This also improves correctness of these helpers given JavaScript objects; we were previously falling back to calling a Dart method name like `.hashCode`, which is incorrect (except for `toString` where fallback is probably the correct behavior).

Change-Id: I39cbc80ca3e93ca7672652610b02bce899894da1
Reviewed-on: https://dart-review.googlesource.com/3427
Commit-Queue: Jennifer Messerly <jmesserly@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2017-09-06 08:12:11 +00:00
Vijay Menon beddf07fdc Refresh DDC SDK
TBR=jmesserly@google.com

Change-Id: I8d1ba8fafadc1d519c511187a36429088e3ce8d1
Reviewed-on: https://dart-review.googlesource.com/3405
Commit-Queue: Vijay Menon <vsm@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
Reviewed-by: Jennifer Messerly <jmesserly@google.com>
2017-09-06 00:10:28 +00:00
Jennifer Messerly 0d8d1af67f fix #30601, covariant checks for bounds were not working in some cases
This has a few related fixes:

fix #30461, DDC now generates covariant checks for superclasses with the correct substitution.

fix #29483, Analyzer can resolve the function type literal syntax correctly when used in type bounds and type arguments.

fix #30095, replace use of DDC's StrongModeError private type with TypeError.

It also has some refactoring to simplify how DDC emits the initialization code at the start of function/method bodies. We no longer jump through AST parent pointers.

Change-Id: I7001f98cd0e00299d77bace49e19aca305abf224
Reviewed-on: https://dart-review.googlesource.com/3100
Reviewed-by: Leaf Petersen <leafp@google.com>
2017-09-05 22:44:19 +00:00
Vijay Menon 0999bffd39 Fix DDC SDK gen
TBR=terry@google.com
BUG=

Review-Url: https://codereview.chromium.org/3011823003 .
2017-09-01 13:31:10 -07:00
Jennifer Messerly 7d142f6033 fix missing SDK symbols
in particular, this fixes the bug that `dartx.noSuchMethod` resulted in undefined

R=leafp@google.com

Review-Url: https://codereview.chromium.org/3010873002 .
2017-09-01 13:13:36 -07:00
Jennifer Messerly c1e58bfb69 fix #30591, ensure all extension methods are generated
R=leafp@google.com

Review-Url: https://codereview.chromium.org/3011763002 .
2017-08-31 14:19:52 -07:00
Vijay Menon e96be63fd5 Fix ddc build_sdk step
R=leafp@google.com

Review-Url: https://codereview.chromium.org/3011753002 .
2017-08-31 13:53:18 -07:00
Leaf Petersen f606e559c5 Avoid relying on fuzzy arrow for arity check in _FutureListener
BUG=
R=jmesserly@google.com

Review-Url: https://codereview.chromium.org/3009893002 .
2017-08-30 14:18:52 -07:00
Leaf Petersen f185689873 Regen SDK.
No source changes, just a regen of dart_sdk.js since it seems to be
out of date.

BUG=
R=vsm@google.com

Review-Url: https://codereview.chromium.org/3011673002 .
2017-08-30 14:03:28 -07:00
Leaf Petersen bdfc674a54 SDK core library fuzzy arrow fixes.
Fix a couple of places in the core libraries that were relying on
fuzzy arrow (lack of) checking.

BUG=
R=lrn@google.com

Review-Url: https://codereview.chromium.org/3005653002 .
2017-08-29 14:03:38 -07:00
Jennifer Messerly 673af70fe1 restore FutureOr cast failure ignore
R=vsm@google.com

Review-Url: https://codereview.chromium.org/3003943002 .
2017-08-25 18:53:34 -07:00
Jennifer Messerly 4466c461f0 optimize extension member symbols in DDC, issue #30531
This approach preserves our current semantics. There's room for further optimizations, though, as it's still not as fast as string names

R=vsm@google.com

Review-Url: https://codereview.chromium.org/3002393002 .
2017-08-25 18:36:41 -07:00
Jennifer Messerly 087c5c6a81 fix list_test for strong mode, and fix DDC List constructors
R=vsm@google.com

Review-Url: https://codereview.chromium.org/3009623002 .
2017-08-25 18:32:43 -07:00
Jennifer Messerly 45592ee4bb improve DDC's type checks
fixes #30495 - optimize subtype cache
fixes #30464 - optimize `is List`

Additional changes:
- optimize double type checks
- optimize Object type checks
- optimize FutureOr<T> checks
- optimize interface checks for some dart:core and dart:async types (List, Map, Iterable, Future, Stream, and StreamSubscription )
- optimize checks for generic class default instantiations and exact instantiation (e.g. `C<dynamic>` on any instance `C<T>`, and `C<T> on an instance of C<T>`
- optimize checks for native types
- optimize getReifiedType
- optimize dcall/dsend/dput checks to use faster Type._check pattern
- optimize instanceOf/cast functions by moving special cases to appropriate types
- optimize Object.runtimeType
- optimize JS interop type checks
- optimize all function type checks

There's more we can do (especially for class/interface types) but this should cover a lot of cases.

R=leafp@google.com

Review-Url: https://codereview.chromium.org/3003613002 .
2017-08-25 12:45:13 -07:00
Jennifer Messerly d0072fa73f Fix the return type of String.split in DDC to be correct
It wasn't actually a List<String>, so it could fail a strong mode cast, and also permitted non-Strings to be added.

R=leafp@google.com

Review-Url: https://codereview.chromium.org/3005533002 .
2017-08-25 11:24:54 -07:00
Leaf Petersen 1b8f4ac1e7 Optimize DDC private runtime library files.
Eliminate numerous type checks not needed in strong mode.  Use
private nullability annotations instead of inline JS to mark known
non-null variables, and to make the compiler generate null checks
for null checked variables. Use nullability annotations and code refactoring to
remove redundant null checks and to move checks out of loops.

BUG=
R=jmesserly@google.com

Review-Url: https://codereview.chromium.org/2994203002 .
2017-08-23 10:28:45 -07:00
Leaf Petersen f744dea741 Fix DDC presubmit status.
Update some status entries and fix a few miscellaneous issues.

BUG=
R=jmesserly@google.com

Review-Url: https://codereview.chromium.org/3002133002 .
2017-08-22 16:29:18 -07:00
Jennifer Messerly ed5ced82b1 Re-land "fix #30423, covariant parameter tearoff type should be Object"
This is the original CL plus status file fixes.

Disables auto-generated function_type tests that are not working for the Dart 2 runtime behavior, and filed #30462 to track. Also removes the separate status that was skipping these tests in DDC when $checked was unset. $checked is not a thing for Dart 2, and DDC test status should never depend on it.

This reverts commit 1b0b1a4913.

R=leafp@google.com

Review-Url: https://codereview.chromium.org/3001053002 .
2017-08-16 23:23:36 -07:00
Brian Wilkerson 1b0b1a4913 Gardening: Revert "fix #30423, covariant parameter tearoff type should be Object" (TBR)
Review-Url: https://codereview.chromium.org/2995973002 .
2017-08-15 17:02:49 -07:00
Jennifer Messerly d09868c02f fix #30423, covariant parameter tearoff type should be Object
some tests needed to be updated to reflect the informal spec semantics.

R=leafp@google.com, paulberry@google.com

Review-Url: https://codereview.chromium.org/2995813002 .
2017-08-15 14:27:06 -07:00
Jennifer Messerly 65e609548d fix #28988, remove throw on Dart1 incompatible is-checks for dartdevc
We've had this flag off in testing for quite a while. This should not affect user code because it's removing a throw.

R=leafp@google.com

Review-Url: https://codereview.chromium.org/2996573002 .
2017-08-07 16:41:18 -07:00
Leaf Petersen d3344ed466 Fix incorrect nullability inference for ??
Fix bug where (a?.foo) was being incorrectly inferred to be
non-nullable if `foo` was non-nullable.

BUG=
R=jmesserly@google.com

Review-Url: https://codereview.chromium.org/2996523003 .
2017-08-04 15:31:01 -07:00
Vijay Menon 4ead726a8c Check for cross-frame violation
R=jmesserly@google.com

Review-Url: https://codereview.chromium.org/2991353003 .
2017-08-03 16:53:40 -07:00
Jennifer Messerly d705cff08e fix #30290, assertion messages that contain yield
also fixes list_sort_test to work in strong mode.

R=rnystrom@google.com

Review-Url: https://codereview.chromium.org/2985333002 .
2017-07-31 14:20:21 -07:00
Jennifer Messerly 951e9a5f88 fix DDC travis bot
It appears to have been broken by the language_2 test migration.

Review-Url: https://codereview.chromium.org/2991063002 .
2017-07-28 17:04:32 -07:00
Jennifer Messerly f0c8fe6763 remove redundant type check in DDC's SDK implementation
Review-Url: https://codereview.chromium.org/2985063002 .
2017-07-25 18:33:09 -07:00
Vijay Menon 598b98bd09 Fix DDC travis status
A few more passes, but perhaps one regression:

Chrome 59.0.3071 (Mac OS X 10.12.5)  corelib/date_time10_test FAILED
       Error: Expect.equals(at index 1: Expected <0100-01-01 00:00:00.000Z...>, Found: <0099-01-01 00:00:00.000Z...>) fails.
           at finish (test/browser/language_tests.js:807:59)

TBR=rnystrom@google.com,jmesserly@google.com

Review-Url: https://codereview.chromium.org/2983403003 .
2017-07-25 08:36:20 -07:00
Vijay Menon 19a19f4423 Fix getSetterType in presence of metadata
R=jmesserly@google.com, rnystrom@google.com

Review-Url: https://codereview.chromium.org/2986673002 .
2017-07-23 19:56:06 -07:00
Jennifer Messerly 04f3c8835f implement Invocation.typeArguments in DDC
also fixes various bugs:
* setters now use the correct memberName symbol, fixes #30223
* object members work for callable classes, fixes #30213
* some test fixes to work in strong mode
* a few other small cleanups (e.g. obsolete `dart.list` is removed)

R=vsm@google.com

Review-Url: https://codereview.chromium.org/2979353002 .
2017-07-21 15:51:16 -07:00
Vijay Menon 87ee6cc0d6 Polyfill only once
Avoid dcall on polyfill.

R=jmesserly@google.com

Review-Url: https://codereview.chromium.org/2983903002 .
2017-07-19 13:42:23 -07:00
Vijay Menon 99e672d1cb Registration-based approach to cross frame support.
This approach installs all Dart extension types onto a window whenever
that window is accessed.

See #28326

R=jmesserly@google.com

Review-Url: https://codereview.chromium.org/2980853002 .
2017-07-19 12:53:43 -07:00
Vijay Menon 12e32e230d Add hook to register global object
DDC will use this in a later CL.

R=alanknight@google.com, sra@google.com

Stephen: I assume this will get compiled out be dart2js.
Review-Url: https://codereview.chromium.org/2983813002 .
2017-07-19 05:46:07 -07:00
Vijay Menon ab39958ac5 Dummy DDC implementation of MirrorSystem
It's a bit absurd that a bunch of tests are passing with this.

R=leafp@google.com

Review-Url: https://codereview.chromium.org/2978223002 .
2017-07-18 13:00:23 -07:00