Commit Graph

1140 Commits

Author SHA1 Message Date
William Hesse 3f0988bc17 [infra] Allow upload of SDK to CIPD to fail in SDK builders
Change-Id: Ib8272650c7c468127c00a54e6bab679131deff5f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/237366
Auto-Submit: William Hesse <whesse@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
2022-03-15 17:27:18 +00:00
Daco Harkes 89c5ddef4f [infra] Add MSVC windows to test matrix
Includes precompiled build targets to ensure we try to build most of the
C++ code.

Does not include any tests. We assume that if the build succeeds the
executables will behave the same. If this turns out to not be the case,
we could add a tests later.

Bug: https://github.com/dart-lang/sdk/issues/48544

Change-Id: I5f6b74676d9bb705d29303c8597d4f420f9030d5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/237340
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2022-03-15 12:17:28 +00:00
Jonas Termansen b9c92fbff0 [infra] Upload Dart SDK builds to Flutter cipd.
Fixes: https://github.com/dart-lang/sdk/issues/40690
Change-Id: If2919ba6e1b7a482b92b26045199599fa7935ba5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/236160
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Jonas Termansen <sortie@google.com>
2022-03-14 12:34:28 +00:00
Alexander Thomas 54fedc818d [infra] Increase the number of shards for dart2wasm to 30
Change-Id: I7e985e52d01f821db9c3626eac433e7352484217
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/235221
Reviewed-by: William Hesse <whesse@google.com>
2022-03-03 14:47:41 +00:00
Joshua Litt 66f14f2996 [dart2wasm] Double number of shards for dart2wasm bot.
Change-Id: Ib424a6a96b48e241667f9d7c9cbe1afe6920b5ae
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/234902
Auto-Submit: Joshua Litt <joshualitt@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
2022-03-02 18:30:42 +00:00
Devon Carew c7680744b0 Revert "Auto-generate the package_config.json file on gclient sync."
This reverts commit 92868580b4.

Reason for revert: I'm seeing failures in golem:

ninja: error: '../../third_party/dart/.dart_tool/package_config.json', needed by 'vm_outline_strong.dill', missing and no known rule to make it

Original change's description:
> Auto-generate the package_config.json file on gclient sync.
>
> Change-Id: Ibb5e548c0738e7dd0061433cf054af8336a0683b
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/234320
> Reviewed-by: Alexander Thomas <athom@google.com>
> Reviewed-by: Lasse Nielsen <lrn@google.com>
> Commit-Queue: Devon Carew <devoncarew@google.com>

TBR=lrn@google.com,devoncarew@google.com,athom@google.com

Change-Id: Ic2b7ae3feedfa064ddbbdb0b36f0e3db088bf177
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/234802
Reviewed-by: Devon Carew <devoncarew@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
2022-03-01 18:20:29 +00:00
Devon Carew 92868580b4 Auto-generate the package_config.json file on gclient sync.
Change-Id: Ibb5e548c0738e7dd0061433cf054af8336a0683b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/234320
Reviewed-by: Alexander Thomas <athom@google.com>
Reviewed-by: Lasse Nielsen <lrn@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
2022-03-01 17:05:28 +00:00
Joshua Litt 75ea74d31a [dart2wasm] Test matrix changes for dart2wasm.
Change-Id: I2388f92a4300e5ee691182e7380091499bb02865
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/233503
Reviewed-by: Alexander Thomas <athom@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Joshua Litt <joshualitt@google.com>
2022-02-19 18:10:33 +00:00
Devon Carew c4dc032f6c [repo] improve the analysis of the tools/ directory
Change-Id: I4185e3bdc1f0f6f8464ebc2a043254200e3df486
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/233502
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
2022-02-17 19:09:52 +00:00
Aske Simon Christensen 6faa5f3bd0 [dart2wasm] Initial commit for the Dart-to-WasmGC compiler.
This is work in progress. Several language features are still
unimplemented or only partially implemented.

Instructions for running the compiler and its output can be found in
pkg/dart2wasm/dart2wasm.md. These procedures are preliminary and
expected to change.

The best version of d8 to use for this version of dart2wasm is 10.0.40,
as explained here: https://dart-review.googlesource.com/c/sdk/+/232097

This commit also adds a dart2wasm-hostasserts-linux-x64-d8 testing
configuration to run the compiler over the test suite.

The history of the prototype that this is based on can be seen here:

https://github.com/askeksa-google/sdk/tree/wasm_prototype

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

Change-Id: I910b6ff239ef9c5f66863e4ca97b39b8202cce85
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175728
Reviewed-by: Joshua Litt <joshualitt@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2022-02-16 11:11:14 +00:00
Michael Thomsen 34b3382e21 Remove a few uses of bin/pub
Change-Id: Ie21ecb4ddedf8b5f3d10019525fe1b62992812b1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/232094
Reviewed-by: William Hesse <whesse@google.com>
Commit-Queue: Michael Thomsen <mit@google.com>
2022-02-09 17:13:37 +00:00
Siva Annamalai d858c6aa44 Revert "Reland "Remove the pub top-level""
This reverts commit 7bb6841815.

Reason for revert: Flutter rolls are failing, please see https://github.com/flutter/engine/pull/31332

Original change's description:
> Reland "Remove the pub top-level"
>
> This is a reland of 872ffa85c2
>
> Original change's description:
> > Remove the pub top-level
> >
> > The old pub toplevel interface is still reachable via
> >
> > ```
> >  $ dart __deprecated_pub
> > ```
> >
> > That is what `flutter pub` is using.
> >
> > Part of https://github.com/dart-lang/sdk/issues/46100
> >
> > Bug: https://github.com/dart-lang/pub/issues/3292
> > Change-Id: I97a14f2458d0f67c7bf98a90664d504cfaba0e98
> > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/229541
> > Reviewed-by: Jonas Jensen <jonasfj@google.com>
> > Reviewed-by: Michael Thomsen <mit@google.com>
> > Commit-Queue: Sigurd Meldgaard <sigurdm@google.com>
>
> Bug: https://github.com/dart-lang/pub/issues/3292
> Change-Id: I45b5bf93f30c8abad4558cb15b61289c6c786f65
> Cq-Include-Trybots: luci.dart.try:flutter-engine-linux-try,flutter-engine-linux-web_tests-try,flutter-frontend-try
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/231943
> Reviewed-by: Jonas Jensen <jonasfj@google.com>
> Reviewed-by: Michael Thomsen <mit@google.com>
> Commit-Queue: Sigurd Meldgaard <sigurdm@google.com>

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

Bug: https://github.com/dart-lang/pub/issues/3292
Change-Id: Ie64d894efac2b5d686f470e2465819c74dd917ff
Cq-Include-Trybots: luci.dart.try:flutter-engine-linux-try,flutter-engine-linux-web_tests-try,flutter-frontend-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/232131
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Siva Annamalai <asiva@google.com>
2022-02-09 01:59:36 +00:00
Ryan Macnak 554e5660b7 [infra] Simply vm filesets.
Listing each possible output directory separately doesn't reduce the amount copied to shards as there are no other files in "out" to skip.

Change-Id: Ie55bb68d3ffe670d48eba5b03af2bc8ce7ce0dcc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/231337
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2022-02-07 19:02:46 +00:00
Sigurd Meldgaard 7bb6841815 Reland "Remove the pub top-level"
This is a reland of 872ffa85c2

Original change's description:
> Remove the pub top-level
>
> The old pub toplevel interface is still reachable via
>
> ```
>  $ dart __deprecated_pub
> ```
>
> That is what `flutter pub` is using.
>
> Part of https://github.com/dart-lang/sdk/issues/46100
>
> Bug: https://github.com/dart-lang/pub/issues/3292
> Change-Id: I97a14f2458d0f67c7bf98a90664d504cfaba0e98
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/229541
> Reviewed-by: Jonas Jensen <jonasfj@google.com>
> Reviewed-by: Michael Thomsen <mit@google.com>
> Commit-Queue: Sigurd Meldgaard <sigurdm@google.com>

Bug: https://github.com/dart-lang/pub/issues/3292
Change-Id: I45b5bf93f30c8abad4558cb15b61289c6c786f65
Cq-Include-Trybots: luci.dart.try:flutter-engine-linux-try,flutter-engine-linux-web_tests-try,flutter-frontend-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/231943
Reviewed-by: Jonas Jensen <jonasfj@google.com>
Reviewed-by: Michael Thomsen <mit@google.com>
Commit-Queue: Sigurd Meldgaard <sigurdm@google.com>
2022-02-07 14:12:57 +00:00
Jens Johansen b41922f925 [DDC][infra] Shard DDC nnbd differently
Currently:
 * "ddc nnbd weak tests" is split into 5 shards.
 * "ddc nnbd weak co19 tests" is split into 2 shards.
 * "ddc nnbd strong tests" is not spit into shards.
 * "ddc nnbd strong co19 tests" is not spit into shards.

From a recent run taking a total of 45 minutes the timings
were like this:

```
ddc nnbd weak tests shard 1: 02:57
ddc nnbd weak tests shard 2: 01:56
ddc nnbd weak tests shard 3: 02:16
ddc nnbd weak tests shard 4: 01:49
ddc nnbd weak tests shard 5: 02:31
```

(i.e. a combined total time of 11:39 if run one after another)

```
ddc nnbd weak co19 tests shard 1: 08:45
ddc nnbd weak co19 tests shard 2: 09:48
```

(i.e. a combined total time of 18:33 if run one after another)

```
ddc nnbd strong tests: 09:51
```

```
ddc nnbd strong co19 tests: 20:44
```

Here I try to change the sharding "robin hood style" so that
"ddc nnbd weak tests shard" which seems pretty fast gets fewer,
but "ddc nnbd strong co19 tests" gets sharded.

Hopefully the result will be something like

ddc nnbd weak tests shard 1: 06:00
ddc nnbd weak tests shard 2: 06:00
ddc nnbd weak co19 tests shard 1: 09:00
ddc nnbd weak co19 tests shard 2: 09:00
ddc nnbd strong co19 tests shard 1: 7:00
ddc nnbd strong co19 tests shard 2: 7:00
ddc nnbd strong co19 tests shard 3: 7:00
ddc nnbd strong tests: 10:00

Which - with the same number of shards used - would hopefully cut off
~20 minutes (as the shards run concurrently)

Update: Total runtime was ~21 minutes, and runtimes seems pretty
agreeing with the expected.

Change-Id: Ie699e5687ab9a0d49cd197a4064bc8007d1dd806
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/231700
Reviewed-by: Alexander Thomas <athom@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Sigmund Cherem <sigmund@google.com>
2022-02-04 17:41:59 +00:00
Ryan Macnak 3d2371180f [infra] Add missing out directories to vm-kernel fileset.
Change-Id: I41e34cd88084b057225fac33baf1e7160e0a8afa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/231281
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2022-02-02 23:00:16 +00:00
Ryan Macnak 66efc26520 [infra] Can't use clang when cross-building for RISC-V.
Change-Id: If8d37c1569550feb252b12c9970a786f4462d4f7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/230951
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2022-02-02 00:18:26 +00:00
Sigurd Meldgaard 0e67d987a1 Revert "Remove the pub top-level"
This reverts commit 872ffa85c2.

Reason for revert: flutter needs fixes:
https://github.com/flutter/engine/pull/31181
https://github.com/flutter/flutter/pull/97575


Original change's description:
> Remove the pub top-level
>
> The old pub toplevel interface is still reachable via
>
> ```
>  $ dart __deprecated_pub
> ```
>
> That is what `flutter pub` is using.
>
> Part of https://github.com/dart-lang/sdk/issues/46100
>
> Bug: https://github.com/dart-lang/pub/issues/3292
> Change-Id: I97a14f2458d0f67c7bf98a90664d504cfaba0e98
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/229541
> Reviewed-by: Jonas Jensen <jonasfj@google.com>
> Reviewed-by: Michael Thomsen <mit@google.com>
> Commit-Queue: Sigurd Meldgaard <sigurdm@google.com>

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

Bug: https://github.com/dart-lang/pub/issues/3292
Change-Id: Ida7ae463a78ece7ff9e5aef3fc2ef984a4ac1b10
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/231081
Reviewed-by: Sigurd Meldgaard <sigurdm@google.com>
Commit-Queue: Sigurd Meldgaard <sigurdm@google.com>
Reviewed-by: Jonas Jensen <jonasfj@google.com>
2022-02-01 12:03:05 +00:00
Sigurd Meldgaard 872ffa85c2 Remove the pub top-level
The old pub toplevel interface is still reachable via

```
 $ dart __deprecated_pub
```

That is what `flutter pub` is using.

Part of https://github.com/dart-lang/sdk/issues/46100

Bug: https://github.com/dart-lang/pub/issues/3292
Change-Id: I97a14f2458d0f67c7bf98a90664d504cfaba0e98
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/229541
Reviewed-by: Jonas Jensen <jonasfj@google.com>
Reviewed-by: Michael Thomsen <mit@google.com>
Commit-Queue: Sigurd Meldgaard <sigurdm@google.com>
2022-01-28 10:04:54 +00:00
Ryan Macnak d1adda2be5 [infra] Fill out some missing builders in the test matrix.
Change-Id: I1e8f24b61bb704e1d9d4c8c23dd4d464ee32290b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/230380
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
2022-01-28 08:46:11 +00:00
Michael Thomsen 208e7bc2e2 Remove dartdoc commands
Part of previously announced deprecation, see:
https://github.com/dart-lang/sdk/issues/46100

Fixes https://github.com/dart-lang/sdk/issues/44610

Change-Id: Ic3eaa793149da412b7520b154a0909ee59fbfb5d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/228647
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Michael Thomsen <mit@google.com>
2022-01-27 08:12:00 +00:00
Sigmund Cherem c007407e42 [try] use 'dart compile js' in benchmark presubmit
The dart2js script under the SDK will be deprecated soon, we are
switching all tests and benchmarks to use the supported `dart
compile js` entrypoint.

Change-Id: Ibd68aaddeb29fbae79ec11093446f233eb13c25e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/229061
Reviewed-by: Jonas Termansen <sortie@google.com>
2022-01-21 16:42:40 +00:00
Jonas Termansen 4bf6354b97 [infra] Handle DART_EXPERIMENTAL_BUILD in tools/bots/dart-sdk.py.
This change uses the DART_EXPERIMENTAL_BUILD environment variable to
detect whether the current build happens to be experimental and
shouldn't have side effects.

Bug: b/215113476
Change-Id: Id5442d80d69309e320077f053d8af75b3aab670a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/228862
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Jonas Termansen <sortie@google.com>
2022-01-21 13:06:00 +00:00
Ryan Macnak 230bdbd229 [infra] Split the fuzzer build into steps to avoid exceeding the maximum number of threads.
Change-Id: I311a8b66e113cf99b946a356e3eabc8fadf419e1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/229065
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2022-01-20 16:26:57 +00:00
Ryan Macnak 04ba20aa98 [vm] Support RISC-V.
Implements a backend targeting RV32GC and RV64GC, based on Linux standardizing around GC. The assembler is written to make it easy to disable usage of C, but because the sizes of some instruction sequences are compile-time constants, an additional build configuration would need to be defined to make use of it.

The assembler and disassembler cover every RV32/64GC instruction. The simulator covers all instructions except accessing CSRs and the floating point state accessible through such, include accrued exceptions and dynamic rounding mode.

Quirks:
  - RISC-V is a compare-and-branch architecture, but some existing "architecture-independent" parts of the Dart compiler assume a condition code architecture. To avoid rewriting these parts, we use a peephole in the assembler to map to compare-and-branch. See Assembler::BranchIf. Luckily nothing depended on taking multiple branches on the same condition code set.
  - There are no hardware overflow checks, so we must use Hacker's Delight style software checks. Often these are very cheap: if the sign of one operand is known, a single branch is needed.
  - The ranges of RISC-V branches and jumps are such that we use 3 levels of generation for forward branches, instead of the 2 levels of near and far branches used on ARM[64]. Nearly all code is handled by the first two levels with 20-bits of range, with enormous regex matchers triggering the third level that uses aupic+jalr to get 32-bits of range.
  - For PC-relative calls in AOT, we always generate auipc+jalr pairs with 32-bits of range, so we never generate trampolines.
  - Only a subset of registers are available in some compressed instructions, so we assign the most popular uses to these registers. In particular, THR, TMP[2], CODE and PP. This has the effect of assigning CODE and PP to volatile registers in the C calling convention, whereas they are assigned preserved registers on the other architectures. As on ARM64, PP is untagged; this is so short indices can be accessed with a compressed instruction.
  - There are no push or pop instructions, so combining pushes and pops is preferred so we can update SP once.
  - The C calling convention has a strongly aligned stack, but unlike on ARM64 we don't need to use an alternate stack pointer. The author ensured language was added to the RISC-V psABI making the OS responsible for realigning the stack pointer for signal handlers, allowing Dart to leave the stack pointer misaligned from the C calling convention's point of view until a foreign call.
  - We don't bother with the link register tracking done on ARM[64]. Instead we make use of an alternate link register to avoid inline spilling in the write barrier.

Unimplemented:
 - non-trivial FFI cases
 - Compressed pointers - No intention to implement.
 - Unboxed SIMD - We might make use of the V extension registers when the V extension is ratified.
 - BigInt intrinsics

TEST=existing tests for IL level, new tests for assembler/disassembler/simulator
Bug: https://github.com/dart-lang/sdk/issues/38587
Bug: https://github.com/dart-lang/sdk/issues/48164
Change-Id: I991d1df4be5bf55efec5371b767b332d37dfa3e0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/217289
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2022-01-20 00:57:57 +00:00
William Hesse 0bb1730fb9 Reland "[infra] Remove copy of jsshell to legacy location"
This is a reland of 27d3969eae

Original change's description:
> [infra] Remove copy of jsshell to legacy location
>
> Fixes: b/186078239
> Change-Id: I963af391e67734b9dc130258a871f9b0a2966858
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/214047
> Reviewed-by: Alexander Thomas <athom@google.com>

Change-Id: I38513177d321d9923104776aceb4831669fe73dc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/227400
Auto-Submit: William Hesse <whesse@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2022-01-10 21:30:54 +00:00
Ben Konyi 9f5ef6d5bc [ DDS ] Move package:dds/vm_service_extensions.dart into package:dds_service_extensions
Reduces dependency complexity for tools which don't need the full
contents of package:dds

Change-Id: Ib9c5ce93eea72421f56114ab8a8efaa0dca6ae02
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/225240
Reviewed-by: Kenzie (Schmoll) Davisson <kenzieschmoll@google.com>
2022-01-10 21:11:33 +00:00
William Hesse 47f537cdf7 [infra] Remove duplicate flutter analyze snippets step from script
The snippets analyze step in [flutter]/dev/bots/analyze.dart now uses our built SDK when analyzing the code snippets. The explicit duplicate command to analyze the snippets with our SDK can now be removed.

The temp directory created in the script is not in the builder cache
on swarming, so it is automatically deleted when the builder finishes.
So we remove the cleanup step, which was trapping signals. That trap
seems to have been responsible for these failures and exit code confusion.

Bug: https://github.com/dart-lang/sdk/issues/47881
Change-Id: I49406954af54a0fba1ceec230c3551f8ad14e8e9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/226685
Reviewed-by: Paul Berry <paulberry@google.com>
2022-01-07 14:39:20 +00:00
Joshua Litt 53c21d7b66 [infra] Remove use-sdk from dart2js canary builders.
Change-Id: Id6241b0eda38399447b5ed07f66517de4acac1e1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/224620
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Joshua Litt <joshualitt@google.com>
2021-12-20 18:39:42 +00:00
Vyacheslav Egorov 13d27d669d [vm] Improve Code cluster layout for startup
This change bakes binary search table which maps PC ranges
to corresponding stack maps and Code objects (if still present
in the snapshot) into RO data section of the snapshot - instead
of constructing it at load time.

This allows to considerably reduce amount of work done when
loading Code cluster for programs which have majority of their
Code objects discarded (i.e. in DWARF stack traces mode): as
we no longer write / read any information for discarded Code
objects.

This CL also changes program visitor to deduplicate Code objects
if their instructions are deduplicated in AOT mode. Only a single
Code object can be choose as a representative for the given
PC range so it does not make sense to write multiple Code objects
into the snapshot which refer to the same Instructions.

The overall improvement is hard to quantify but ReadProgramSnapshot
shows the following improvement when starting a large
Flutter application on a slow Android device:

  before  223.55±59.94 (192.02 .. 391.74) ms
  after   178.06±47.03 (151.31 .. 291.34) ms

This CL packs CompressedStackMaps next to the binary search table
itself allowing us to address them via offsets instead of
pointers.

Snapshot sizes are actually affected positively by this change. On
the same large Flutter application I see

  DWARF stack traces on:  -1.34% total SO size
  DWARF stack traces off: -1.63% total SO size

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

TEST=ci

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-dwarf-linux-product-x64-try,vm-kernel-precomp-linux-debug-simarm64c-try,vm-kernel-precomp-linux-debug-simarm_x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-debug-x64c-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-linux-release-simarm-try,vm-kernel-precomp-linux-release-simarm64-try,vm-kernel-precomp-linux-release-simarm_x64-try,vm-kernel-precomp-linux-release-x64-try
Change-Id: Ic997045a33daa81ec68df462a0792915885df66b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/220766
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Slava Egorov <vegorov@google.com>
2021-12-16 10:39:49 +00:00
Sam Rawlins 296167d3c9 Add flutter/gallery to flutter-analyze bot
Fixes https://github.com/dart-lang/sdk/issues/47527

Change-Id: I24a7b20f9756197a058eefd507dc139d19762642
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/222660
Reviewed-by: Alexander Thomas <athom@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2021-12-14 22:38:45 +00:00
Alexander Thomas 81723904c8 [infra] Fix flutter-frontend
The third_party directory was removed in https://github.com/flutter/buildroot/commit/d45d8382665c923bdc2f8ab4e49f0deef84dd173

Change-Id: Ib487b801d7446a151b6a1f231e3761ef6158a73f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/223801
Reviewed-by: William Hesse <whesse@google.com>
2021-12-14 12:21:04 +00:00
Paul Berry 3e6d9a5e55 Place the pub cache under the checkout directory when running snippet tests.
This is an attempt to address some recent flakiness in the Flutter analyze trybots.

Bug: https://github.com/dart-lang/sdk/issues/47881
Change-Id: I46eb1fca52fef4bbd3854c5da226512a579e11fb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/222780
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-12-09 20:29:59 +00:00
Joshua Litt 80119cb900 [infra] Add dart2js-canary builder.
Change-Id: Ibf41b38e2ee590aed46f4f763f103c0e42bca311
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221985
Reviewed-by: Mark Zhou <markzipan@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Joshua Litt <joshualitt@google.com>
2021-12-08 17:04:51 +00:00
Sam Rawlins 3432d05089 Use just-built dart in dart fix test
Fixes https://github.com/dart-lang/sdk/issues/47678
Change-Id: I1dbd9927f5a19f19777b468cce8e4812b35d45eb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/220783
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-12-02 19:42:57 +00:00
William Hesse bc9f2bdc88 [infra] Remove old pub/sub processing of results
The results are now updated by the builder, so the builder status
does not need to poll the database for the results to finish processing.

The script is also migrated to null safety.

Change-Id: I7913f7fb0a8eedc074a4b79eb75c1c2813525c17
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221780
Commit-Queue: William Hesse <whesse@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
2021-12-02 13:14:27 +00:00
Joshua Litt b735151bbc [dart2js] Restore test coverage for modular analysis.
Change-Id: Iedfc6c1779064db469c209545c361e047ee0318c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221026
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Joshua Litt <joshualitt@google.com>
2021-11-30 01:02:34 +00:00
Gabriel Terwesten 02549a8bce [vm/ffi] Optimize Pointer<T>.asTypedList()
This change refactors `_asExternalTypedData` into multiple functions,
which are data type specific, e.g `_asExternalTypedDataInt8`.
These functions are implemented as recognized methods.
Argument checks have previously been performed in the removed
runtime entry implementation of `_asExternalTypedData.` These are
now handled in Dart.

TEST=tests/ffi/external_typed_data_test.dart

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

Closes https://github.com/dart-lang/sdk/pull/47780
https://github.com/dart-lang/sdk/pull/47780

GitOrigin-RevId: 65763bddd06c633583b4adbf920c32c5a7a3720f
Change-Id: I703b350d89004ebe36e70eaa44dda1d9ebb050c7
Cq-Include-Trybots: luci.dart.try:vm-kernel-reload-rollback-linux-debug-x64-try,vm-kernel-reload-linux-debug-x64-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-ffi-android-debug-arm64c-try,vm-ffi-android-debug-arm-try,app-kernel-linux-debug-x64-try,vm-kernel-nnbd-linux-debug-x64-try,vm-kernel-win-debug-x64-try,vm-kernel-nnbd-mac-debug-x64-try,vm-kernel-linux-debug-ia32-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221360
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2021-11-29 17:38:04 +00:00
Jonas Termansen 73d1ccb2af [infra] Rely on the default ACL when uploading release artifacts.
The dart-archive bucket default ACL has been changed to make all
uploaded objects public. Therefore, we no longer need to specify an ACL
on upload. This change enables the scripts to work with uniform bucket
ACLs.

The bucket cannot be switched to uniform ACLs until this change reaches
the stable branch or it won't be possible to release Dart.

This change removes the uses of the gsutil -a public-read option from
the release scripts.

Change-Id: I27a76b9849771ddc380576ffe962926ebfbf4fc6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221341
Commit-Queue: Jonas Termansen <sortie@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
2021-11-26 11:34:04 +00:00
Vyacheslav Egorov 71c9c2cd83 [vm] Remove support for non-bare AOT snapshots
Every AOT user out there has been using bare instructions mode
and continuing to maintaining non-bare instructions mode simply
adds costs (both in terms of time spent making changes to work
in a mode that is not used and CI resources spent on testing it).

This change removes FLAG_use_bare_instructions and changes the code
to assume that FLAG_precompiled_mode implies bare instructions.

TEST=ci

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-debug-x64c-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-dwarf-linux-product-x64-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,app-kernel-linux-release-x64-try,app-kernel-linux-debug-x64-try
Change-Id: I5032b13bfcb613f79865f2cfa139cca8d1b42556
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/220964
Commit-Queue: Slava Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2021-11-24 13:03:52 +00:00
Clement Skau 36652d3b1a [benchmark] Adds native call benchmark.
Adds new benchmarks for native calls, parallel to the
existing benchmark for FFI calls.

This makes it possible (with some caveats) to compare
overheads of calling through native and FFI.

Local results on Linux, x64, AOT (for reference):

NativeCall.Uint8x01(RunTime): 585.9797891036907 us.
NativeCall.Int64x20(RunTime): 1340.2451440053583 us.
NativeCall.Doublex01(RunTime): 694.4875 us.
NativeCall.Doublex20(RunTime): 1610.102172164119 us.
NativeCall.Handlex01(RunTime): 735.7863184994483 us.
NativeCall.Handlex20(RunTime): 836.6783772480134 us.

FfiCall.Uint8x01(RunTime): 202.5837131570951 us.
FfiCall.Int64x20(RunTime): 328.16931911402787 us.
FfiCall.Doublex01(RunTime): 220.58028231142478 us.
FfiCall.Doublex20(RunTime): 373.4350261389096 us.
FfiCall.Handlex01(RunTime): 357.4213724088635 us.
FfiCall.Handlex20(RunTime): 1152.427995391705 us.

TEST=Manually ran benchmark locally.
Change-Id: Ib28455fbd9f739c1e3ba487b932b464fc12b7e04
Cq-Include-Trybots: luci.dart.try:benchmark-linux-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/218920
Commit-Queue: Clement Skau <cskau@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2021-11-04 15:16:24 +00:00
William Hesse 12a89261e5 [infra] Fix pub integration test on arm64 macs
Cq-Include-Trybots: luci.dart.try:pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-linux-debug-try,pkg-mac-release-try,pkg-win-release-try
Change-Id: Ied16052c7408d211cc72706a17a4157a777cf906
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/219041
Reviewed-by: Jonas Termansen <sortie@google.com>
Commit-Queue: William Hesse <whesse@google.com>
2021-11-03 10:10:12 +00:00
William Hesse 1ca06b9531 [infra] Support non-cross-compiled ARM64 on Mac testing
The python running on Mac M1 test builders is now native ARM64,
which makes the compilation and test use the xcodebuild/ReleaseARM64
directory, not the xcodebuild/ReleaseXARM64.

Add the xcodebuild/[mode]ARM64 build directories to sharding filesets.

Change-Id: Ide074dab3d4645f1776e83dc62c02f5ded630a9e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/218923
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2021-11-02 17:33:06 +00:00
Mayank Patke 639cfd857f [dart2js] Provide unit tests with the sound null safety fileset.
Change-Id: Ife2f60025c635d7fc335cbb1533a0dcf50ced8ab
Fixes: https://github.com/dart-lang/sdk/issues/47558
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/218668
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Mayank Patke <fishythefish@google.com>
2021-10-29 20:29:40 +00:00
Kevin Moore 74dea5d1bd _http: Fix final doc comment issues
Change-Id: Ie1ed719aca9b1f18240b811271ac952818d04c89
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/218664
Auto-Submit: Kevin Moore <kevmoo@google.com>
Commit-Queue: Kevin Moore <kevmoo@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
2021-10-29 18:02:10 +00:00
Devon Carew b27c191c2a Add the dart: api doc code sample validation to the CI.
Change-Id: Ib2a97728d35d15e6cda247444a00ca813d88b9d3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/218325
Reviewed-by: Michael Thomsen <mit@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
2021-10-28 15:48:38 +00:00
Alexander Thomas 056afdac39 [testing] Merge dart2js-batch into the global batch option
* Remove all uses of `--dart2js-batch`.
* Enable batch mode for dart2js by default.
* Rename `--noBatch` to `--no-batch`.
* Make `--no-batch` affect dart2js configurations.

Change-Id: I33bdb5cfe8a82ccfc6ce9e43843f1b7a34ff1fbf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/217006
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
2021-10-19 13:49:02 +00:00
Kevin Moore cc40080d96 dart2js_info: enable and fix lints, validate analysis on CI
Also updated dependencies and dropped publish information

Change-Id: Ie5d8ca907599c5e504c747d97413d32ef9e329e3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/217061
Auto-Submit: Kevin Moore <kevmoo@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Kevin Moore <kevmoo@google.com>
2021-10-17 06:25:00 +00:00
Mayank Patke 70479beea5 [dart2js] Rename platform files.
This avoids terms like "NNBD" and "strong" in favor of sound/unsound
null safety.

Change-Id: I1c99bea7155f80bc6acf62f46c6f266a29ebf1a2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/213406
Commit-Queue: Mayank Patke <fishythefish@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2021-10-15 21:40:08 +00:00
Kevin Moore ca00a4b27e pkg:native_stack_traces - fix existing lints
And validate lints as part of test matrix

Change-Id: Ia074c56f0c7a7f9a674202667ac4729d06993302
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/216689
Auto-Submit: Kevin Moore <kevmoo@google.com>
Reviewed-by: Tess Strickland <sstrickl@google.com>
2021-10-14 07:35:43 +00:00