This CL:
* Adds a benchmark of running `dart analyze` on a single small file.
* Adds a benchmark of running `dart analyze` on a single project.
* Adds a benchmark of running `dart analyze` on several projects.
* Adds a hidden flag to `dart analyze` so it reports ram usage:
run via `dart analyze --format=json --memory` and the memory
usage will be reported in the json output.
All the bencmarks run without and with cache for speed testing, and
without and with cache when measuring memory usage.
The idea of running this via `dart analyze` instead of running either
the script or the snapshot is to measure the "real world" speed which
could be different (although in practise it _does_ just run the
snapshot).
Future CL(s) should also add benchmarks for queries using the
language server.
Change-Id: Iad6d6d72c1a2ed18ab51d056b4914f8b6eb963e4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/276100
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
Implement the necessary flow analysis bookkeeping so that in a pattern
of the form `P1 && P2`, any type checks performed by `P1` will be
reflected in the matched value type used by `P2`. To accomplish this,
we allocate a promotion key to represent the "cached value" matched by
every pattern and subpattern (so that `P1 && P2` promotes properly
even when in a subpattern of another pattern). This promotion key is
stored (in the form of a `ReferenceWithType<Type>`) in the
`_PatternContext` class.
Also, move `_scrutineeReference` and `_scrutineeType` into
`_FlowAnalysisImpl`; this preserves the existing behaviour of
promoting the scrutinee expression, but with less bookkeeping (since
we don't need to pass it along from one context to the next). And add
`_FlowAnalysisImpl._scrutineeSsaReference` so that if the scrutinee is
modified during execution of the switch statement, it won't be
erroneously promoted by patterns that follow.
Finally, implement some preliminary logic for `||` patterns to avoid
breaking existing tests. I will fill this out (and test it
thoroughly) in a follow-up CL.
Bug: https://github.com/dart-lang/sdk/issues/50419
Change-Id: I0d934e706ad5b19cda46a198afb2fb7a4309829b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275788
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
It is being removed in Dart 3.0 and a `TypeError` should be used
instead. This is true in legacy code as well and all test
expectations will be updated.
Change-Id: I021fa4ecb1a9bbc404598113c65349e17926cd91
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275782
Commit-Queue: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
These tests have some exceptions caused by missing fields on the
dynamic variable. The exceptions cause the `isolate.resume()` call to
not run, which also cause the test body to not complete.
Currently this is masked by the test runner, which immediately ignores
the test body once the first error occurs. That behavior is changing,
and a failure will not immediately end a test when the body is still
running. https://github.com/dart-lang/test/pull/1815
Some of these tests are currently are expected to fail, but not to
timeout. Fix the test implementations to more reliably complete the test
body, even when the test had an error. This does not fix the tests
themselves, it maintains the current pattern of failure, even after
updating the test runner.
- Use `Stream.firstWhere` over cancelling the stream subscription after
the first breakpoint.
- Use `Future.whenComplete` to ensure the isolate is always unpaused,
including after an exception in the expectations.
Tested: Passes with updated test runner in https://dart-review.googlesource.com/c/sdk/+/275401/4
Change-Id: If5a7f0264c580cb38bcc1bd95c035aaf5644124b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275787
Auto-Submit: Nate Bosch <nbosch@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Nate Bosch <nbosch@google.com>
This API allows embedder to append arbitrary footers to DWARF stack
traces. For example, embedder can append a link to a symbolizer
service, which could be used to symbolize the stack-trace.
TEST=manually tested, hard to create automatic tests because vm/cc tests only support JIT, not AOT.
Bug: b/255741575
Change-Id: Id034b9b3194f7b91a8405574ea771c4a06fda2c2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275700
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Slava Egorov <vegorov@google.com>
This CL allows the heap snapshot tool to load a file as it is launched
via a command like
```
../../../out/ReleaseX64/dart bin/explore.dart my_snapshot.heapsnapshot
```
Change-Id: I4eca4ec18daef4d3361c754018d234045e725ef5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275860
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
This deprecated class cannot be removed just yet because
we still need to throw something in case of cyclic initialization
in Dart legacy libraries (which are still supported).
Class CyclicInitializationError is copied for each implementation
(VM, dart2js and DDC) and made private. Each implementation now has
an independent private class which can be removed separately.
TEST=ci
Issue: https://github.com/dart-lang/sdk/issues/49529
Change-Id: I8100bbe16636c12c4cbabbb5fe770f4c648c4249
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275120
Commit-Queue: Michael Thomsen <mit@google.com>
Reviewed-by: Lasse Nielsen <lrn@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Migration tool currently crashes if a class overrides
some methods it got by adding a mixin.
Added a test for that and fixed the crash, the fix
boils down to casting to just `InterfaceElement` instead
of `ClassElement`.
Tested: added a new test
Change-Id: Iab5ddb26c4930ed2020d6f3caa0710e55f24d8c2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275721
Commit-Queue: Ilya Yanok <yanok@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Language specification (section 17.2) says two strings are identical
when they're both constants and equal.
It doesn't mention adjacent strings, but looking at the tests, it seems
like juxtaposition of constant strings are expected to be constants as
well.
This adds a special case in string juxtaposition compiler to handle the
case where parts of the adjacent strings are all constants.
New passing tests:
- co19/Language/Expressions/Instance_Creation/Const/canonicalized_t05
- co19/Language/Expressions/Strings/adjacent_strings_t02
- language/const/string_test
Change-Id: Ib46582be492ba20c417546cbfb4e67b2d90e3ba3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275200
Commit-Queue: Ömer Ağacan <omersa@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Revisions updated by `dart tools/rev_sdk_deps.dart`.
browser_launcher (https://github.com/dart-lang/browser_launcher/compare/5fa0bd6..2712dda):
2712dda 2022-12-13 Anna Gringauze Fix internal CI test failures (#35)
dartdoc (https://github.com/dart-lang/dartdoc/compare/eb90a44..1f42216):
1f422163 2022-12-13 Sam Rawlins Bump to 6.1.5 (#3274)
intl (https://github.com/dart-lang/intl/compare/234b291..6fb07f2):
6fb07f2 2022-12-14 Copybara-Service Merge pull request #520 from dart-lang:revto18
1f9815c 2022-12-14 Moritz Rev version in preparation for publish of 0.18.0
1d37c42 2022-12-13 Googler Internal change
708b85c 2022-12-13 Copybara-Service Merge pull request #498 from dart-lang:remove_intl_stream
2d9eca9 2022-09-28 moritz sort imports
08a35bd 2022-09-28 moritz Merge branch 'master' into remove_intl_stream
0fc6ab9 2022-09-28 moritz Changes as per review
4680742 2022-09-27 moritz rename to stack
f687c72 2022-09-27 moritz changes as per review
ef36013 2022-09-26 moritz add reference to benchmark
117c0cf 2022-09-26 moritz separate read and pop
434378a 2022-09-26 moritz move method
e98c4aa 2022-09-26 moritz fix typo
9234540 2022-09-26 moritz rename file
024cffc 2022-09-26 moritz make it a tad faster
c6f7b6a 2022-09-26 moritz some renaming
443c9e0 2022-09-26 moritz Remove StringIterator
1953002 2022-09-23 Nate Bosch Inline the extension
4dfdc1b 2022-09-22 Nate Bosch Simplify the IntlStream class
mime (https://github.com/dart-lang/mime/compare/c0c4c47..273d454):
273d454 2022-12-13 tomk9 Add .dcm to extension map (#74)
aacec32 2022-12-12 Kevin Moore Update to latest lints, bump min SDK to 2.18 (#77)
536db4f 2022-12-12 Kevin Moore blast_repo fixes (#79)
2343229 2022-12-12 Kevin Moore Add .msj (and change .js) to text/javascript (#76)
mockito (https://github.com/dart-lang/mockito/compare/347d3e4..942dd03):
942dd03 2022-12-12 yanok Override `SmartFake.toString` to be super-verbose
5f97a43 2022-12-09 Sam Rawlins Stop using deprecated analyzer APIs
0660e61 2022-12-06 yanok Generate method overrides even then source lib is not null-safe
cf7d851 2022-12-06 yanok Add override for `Object.operator==` in `SmartFake`
6b89e99 2022-12-02 yanok Automated g4 rollback of changelist 492410078.
d11d010 2022-12-02 yanok Generate method overrides even then source lib is not null-safe
sse (https://github.com/dart-lang/sse/compare/d396145..cfa93b1):
cfa93b1 2022-12-14 Elliott Brooks (she/her) Add `package:js` to dependencies (#71)
00335e4 2022-12-13 Elliott Brooks (she/her) Update `package:sse` to `4.1.2`(#70)
webdev (https://github.com/dart-lang/webdev/compare/3e2364e..317288a):
317288a 2022-12-14 Derek Xu Remove ChromeProxyService.setExceptionPauseMode() (#1820)
bbe7143 2022-12-14 Elliott Brooks (she/her) Migrate `events_test.dart` to null-safety (#1819)
1d1c98f 2022-12-14 Elliott Brooks (she/her) Settings page, Dart Debugger panel, and Flutter Inspector panel match DevTools styles (#1815)
a9b8887 2022-12-13 Elliott Brooks (she/her) Update tests that are incompatible with `3.0.0` (#1817)
Change-Id: I08e555dc22e5577740fe43e91ff31e4601ac15f0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275781
Commit-Queue: Nate Bosch <nbosch@google.com>
Auto-Submit: Devon Carew <devoncarew@google.com>
Reviewed-by: Nate Bosch <nbosch@google.com>
TypeParameter::set_index was already asserting for 16 bits but silently truncating to 8 bits. The size of TypeParameter does not increase due to allocation rounding.
Add explicit range check to class finalization.
TEST=ci
Change-Id: Id4017f74b7dba47b00d64e77e787712c70290dac
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275560
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Benchmarks improved by:
JIT:
RecordCollections.ListAddPoly.Record ~9.6 times
RecordCollections.ListSetIndexed.Record ~8.3 times
RecordCollections.ListSetIndexedPoly.Record ~16.1 times
RecordCollections.MapAdd.RecordKey ~3.6 times
RecordCollections.MapAdd.RecordValue ~4.4 times
RecordCollections.SetAdd.Record ~4.1 times
AOT:
RecordCollections.ListAdd.Record ~8.7 times
RecordCollections.ListAddPoly.Record ~8.8 times
RecordCollections.ListSetIndexed.Record ~19.5 times
RecordCollections.ListSetIndexedPoly.Record ~18.3 times
RecordCollections.MapAdd.RecordKey ~7.1 times
RecordCollections.MapAdd.RecordValue ~8.8 times
RecordCollections.SetAdd.Record ~8.9 times
TEST=vm/cc/TTS_RecordSubtypeRangeCheck
Issue: https://github.com/dart-lang/sdk/issues/49719
Change-Id: I96e4c6a40a897a72b3570b59e014c8af77a9ef99
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275082
Reviewed-by: Tess Strickland <sstrickl@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>