The logic for background compiler can be simplified due to:
* we only have one bg compiler
* it always optimizes
* it is allocated at isolate startup and freed on isolate shutdown
* an existing check in the compiler for whether the BG compiler is
disabled is racy and therefore not helpful
* when a mutator communicates with BG compiler it will use
SafepointMutexLocker instead of MutexLocker
This CL also ecapsulates disabling the BG compiler via a
NoBackgroundCompilerScope object. It allows nested disabling and guards
against races.
Issue https://github.com/dart-lang/sdk/issues/36097
TEST=Refactoring of existing code.
Change-Id: I36ed6592c9a8b91e94181698b7de662b4ee984e9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183400
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
It is not a huge improvement, because it does not add static safety,
for this we would need to distinguish between unresolved and resolved
expressions, as separate types.
But it is still an improvement.
1. We get to know the node that was not resolved.
Maybe not enough, in case if it was because of the enclosing
now that this node was not resolved. But still something.
2. We group this use case into one place.
Change-Id: I2e8f029e8a5fcd8ccecdd1b6bc9d78ee9eaf12a1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/184103
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
During isolate shutdown we remove the isolate from the list of isolates
in a group in one step and decrement a counter in another. Those are not
done atomically.
To avoid races where we use one condition and later on assume the other
holds as well, consistently use the same condition.
Fixes https://github.com/dart-lang/sdk/issues/44939
TEST=Fixes flaky tsan hits of ASSERT.
Change-Id: I41eeb00cd3e341d07cba7571b29aeb4eacdfc458
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/184260
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
The various ABIs lay out structs with inline arrays the same way as
they do with only nested structs and primitive values.
Most notably, homogenous structs (arm and arm64) and structs spread
over a CPU and FPU register in x64 Linux/MacOS will even be laid out
this way if irregular size nested arrays are involved.
These cases are covered in the unit tests.
This CL introduces the ByteRange to ease the ContainsOnlyFloats
calculation for x64.
Bug: https://github.com/dart-lang/sdk/issues/35763
tools/build.py run_ffi_unit_tests && tools/test.py ffi_unit
TEST=runtime/vm/compiler/ffi/native_calling_convention_test.cc
TEST=runtime/vm/compiler/ffi/native_type_test.cc
tools/test.py ffi ffi_2
TEST=tests/ffi(_2)/(.*)by_value_(*.)_test.dart
Change-Id: I4bbcbffd47eb8901a87db64e62aa5cbe67d03e18
Cq-Include-Trybots: luci.dart.try:vm-precomp-ffi-qemu-linux-release-arm-try,vm-kernel-win-debug-ia32-try,vm-kernel-win-debug-x64-try,vm-kernel-precomp-nnbd-linux-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-kernel-mac-debug-x64-try,vm-ffi-android-debug-arm64-try,vm-ffi-android-debug-arm-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183682
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Clement Skau <cskau@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
This is in preparation to migrate package:kernel to null safety.
For the visitor interfaces to support non-nullable return types, the
implementations must avoid using `null` as return value in its base case.
TEST=Refactoring
Change-Id: Ie8fa5d41b99850d9e4abb59634c72920c64128d9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183691
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
This expands the fast case in `_asyncThenWrapperHelper` and
`_asyncErrorWrapperHelper` to any zone that uses the root zone
`registerUnaryCallback` (which does nothing).
Informal micro-benchmarking shows a runtime decrease of about
3-5% for custom zones that fall back on the root zone
`register{,Unary,Binary}Callback`.
TEST=Tested all cases.
Bug: https://github.com/dart-lang/sdk/issues/40752
Change-Id: I76c944189cc355eb404163a50914ed0e7711446c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182623
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Clement Skau <cskau@google.com>
SWITCH_EXPRESSION_NOT_ASSIGNABLE is only a pre-null safety code. Under null
safety, CASE_EXPRESSION_TYPE_IS_NOT_SWITCH_EXPRESSION_SUBTYPE is reported
instead, and this case is covered in those tests.
Also tidy up CaseExpressionTypeIsNotSwitchExpressionSubtypeTest.
Change-Id: I7c3b489200b6a8181fdf4ae7b36f826ba0b7bd6c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/184140
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
This also deletes WithNonFunctionTypeAliasesMixin and all mixin
applications.
With how the tests are set up, I had to migrate a few other test cases
to use null safety. A few tests were written in pairs, one
pre-non-function-typedefs, and one post-. These should be combined, but
doing so in this CL would create a much larger diff, with the sorting.
Bug: https://github.com/dart-lang/sdk/issues/44666
Change-Id: Iee7f329ee8d841905f08249888de85256187d84b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/184080
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
- Fix violations
- Ignore lint in js_ast directory. Still holding onto hope that we will
merge this with dart2js version and move out of the ddc package.
- Import all lints from pedantic 1.9.0
Change-Id: I834b4b197dcf0b6924417cdd337cda9a1b6249d5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183043
Reviewed-by: Mark Zhou <markzipan@google.com>
Commit-Queue: Nicholas Shahan <nshahan@google.com>
JSDouble was really "double *excluding integral values*".
This was confusing, with JSDouble sometimes used assuming it was all doubles.
Rename JSDouble to JSNumNotInt to avoid future errors like #44818
Change-Id: I96bf33d5531b94aaf33b582e584702f47ed50395
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183201
Commit-Queue: Stephen Adams <sra@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>