- Adds RV64 support
- Toolchain and sysroot will come from the same place
Change-Id: Ic835de7667a334dc450e89b979bf19950f77efc2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/331746
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
This fixes `identical` checks when the input doesn't need case mapping.
This change was originally made in [1], but I'm trying to split it into
smaller CLs as it currently has a lot of conflicts with the main branch.
[1]: https://dart-review.googlesource.com/c/sdk/+/316628
Change-Id: I88da52a3a73c9d587acefe2b14fd39edaf01c966
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/332200
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Ömer Ağacan <omersa@google.com>
Now that some basic support has landed internally, this will help to keep language versions more consistent for targets using macros, which will make SDK rolls easier.
Change-Id: Ifb9bb3def161edb3974cfc68271daad8a12707b4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/333200
Auto-Submit: Jake Macdonald <jakemac@google.com>
Reviewed-by: Ömer Ağacan <omersa@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Ömer Ağacan <omersa@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
This is follow up to bd57548 which switched us to use manual copying
for call back pages on Mac OS and iOS. However these newly allocated
pages need to be created with MAP_JIT flag otherwise OS will kill
us with code signing violation if hardened runtime is enabled.
This can only be observed when the binary is signed that's why
we have not seen it on CI.
TEST=manually signed and tested that it no longer crashes.
Fixes https://github.com/dart-lang/sdk/issues/53928
Change-Id: Ic15673d354d4fdf1bb8179066b37c7ae90877982
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/333260
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Slava Egorov <vegorov@google.com>
Lays the stage to acquire options from files during error verification.
Change-Id: I3b715a93e99fc3bc6f33f736e8b38c06b8c1cd4b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/333126
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
Sharing the visibility tracker this way prevents shadowed elements from
being suggested and improves performance.
Most of these changes can be reverted once the local reference
contributor has been removed.
Change-Id: Ib156ae56455e8d85a31163f9e59ce4dd93f5920b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/333124
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
If range analysis has determined that a integer operation cannot throw
or deoptimize and can only result in a single possible value that
matches the operation's representation, replace the operation with that
constant value.
Be more precise about when a BinaryInt64OpInstr can throw. Previously
any MOD or TRUNCDIV operation was marked as possibly throwing, but now
in those cases we only mark it as possibly throwing if the right hand
side can be 0.
TEST=vm/dart/unsigned_truncated_division
Change-Id: I0f4fd754199240715606b90a6a423dbeb268c90d
Cq-Include-Trybots: luci.dart.try:vm-aot-linux-debug-simarm_x64-try,vm-aot-linux-release-x64-try,vm-aot-linux-debug-x64c-try,vm-linux-release-simarm-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/331283
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Tess Strickland <sstrickl@google.com>
This is a reland of commit 60d1a40462
Original change's description:
> Reland "[vm/compiler] Consistently use PointerBase.data values as FFiIntPtr."
>
> This is a reland of commit 5c4fd50667
>
> The range analysis change was replaced with a different change,
> on which this CL is based. In addition, another preceding CL
> unified a few methods on subclasses of UnboxIntegerOpInstr, because
> the inconsistencies between UnboxInt32OpInstr and UnboxUint32OpInstr
> and how unboxed int32 vs. uint32 constants were handled caused the
> issue seen after landing the original CL.
>
> Thus, this CL is purely changes of kUnboxedIntPtr to kUnboxedFfiIntPtr
> when appropriate plus test changes.
>
> TEST=vm/dart/regress_306327173_il_test
> vm/dart/address_local_pointer_il_test
>
> Original change's description:
> > [vm/compiler] Consistently use PointerBase.data values as FFiIntPtr.
> >
> > Also if converting an unboxed int with only non-negative values
> > that fit in 32 bits to a uint32, then keep the range from the value.
> >
> > TEST=regress_306327173_il_test
> >
> > Cq-Include-Trybots: luci.dart.try:vm-aot-linux-debug-simarm_x64-try,vm-aot-linux-release-x64-try,vm-aot-linux-debug-x64-try,vm-aot-linux-debug-x64c-try
> > Change-Id: Id9e7c2d5f477e560822a02574739c57d77b5a6d1
> > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/332202
> > Reviewed-by: Daco Harkes <dacoharkes@google.com>
> > Reviewed-by: Slava Egorov <vegorov@google.com>
> > Commit-Queue: Tess Strickland <sstrickl@google.com>
>
> Change-Id: I1f66bc9d1ca7569c913f02b611b4a27f189605ac
> Cq-Include-Trybots: luci.dart.try:vm-aot-linux-debug-simarm_x64-try,vm-aot-linux-release-x64-try,vm-aot-linux-debug-x64-try,vm-aot-linux-debug-x64c-try,vm-ffi-qemu-linux-release-arm-try,vm-ffi-android-release-arm-try
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/332340
> Reviewed-by: Daco Harkes <dacoharkes@google.com>
> Commit-Queue: Tess Strickland <sstrickl@google.com>
TEST=vm/dart/regress_306327173_il_test
vm/dart/address_local_pointer_il_test
Change-Id: I8f789847670c66a823cbbc6dca5b74a8b7a2cd88
Cq-Include-Trybots: luci.dart.try:vm-aot-linux-debug-simarm_x64-try,vm-aot-linux-release-x64-try,vm-aot-linux-debug-x64-try,vm-aot-linux-debug-x64c-try,vm-ffi-qemu-linux-release-arm-try,vm-ffi-android-release-arm-try,vm-linux-release-simarm-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/333002
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Tess Strickland <sstrickl@google.com>
This is a reland of commit baa18e6d29
Fixes IsRepresentable to take a int64_t, not a uint64_t.
Original change's description:
> [vm/compiler] Unify methods for UnboxIntegerOpInstr subclasses.
>
> Unify the Canonicalize() methods on subclasses of UnboxIntegerOp
> so that there aren't subtle differences between canonicalizing
> UnboxInt32 and UnboxUint32 instructions. Also unify the
> ComputeCanDeoptimize() methods for similar reasons.
>
> If canonicalizing a truncating unbox of a constant, then create an
> unboxed constant of the truncated value instead of an unboxed
> constant of the original untruncated value.
>
> Previously, a subclass of Definition that didn't override InferRange
> got a default range solely based on its type. Now, if the representation
> of the definition is an unboxed integer, the default range is the
> intersection of the range inferred from its type with the range
> inferred from its representation.
>
> TEST=ci
>
> Change-Id: Ib022c366904ee6f8a81995bd4c16b87bd876176d
> Cq-Include-Trybots: luci.dart.try:vm-aot-linux-debug-simarm_x64-try,vm-aot-linux-release-x64-try,vm-aot-linux-debug-x64-try,vm-aot-linux-debug-x64c-try,vm-win-release-x64-try,vm-ffi-qemu-linux-release-arm-try,vm-ffi-android-debug-arm-try
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/332400
> Reviewed-by: Slava Egorov <vegorov@google.com>
TEST=ci (including simarm, not just simarm_x64)
Change-Id: I6f3d3976634da9725d1a81faa62ab9b718d6663e
Cq-Include-Trybots: luci.dart.try:vm-aot-linux-debug-simarm_x64-try,vm-aot-linux-release-x64-try,vm-aot-linux-debug-x64-try,vm-aot-linux-debug-x64c-try,vm-win-release-x64-try,vm-ffi-qemu-linux-release-arm-try,vm-ffi-android-debug-arm-try,vm-linux-release-simarm-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/333001
Reviewed-by: Slava Egorov <vegorov@google.com>
Copies of context building bits for context creation refactoring work.
Change-Id: I2ee8d7e03a33bb6f450c190ad59459bbf87cef62
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/333122
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
The changes calls to getInterfaceTypeAsInstanceOfClass (et al.) to
getTypeAsInstanceOf to ensure that we take extension types into account.
Change-Id: I7d732cdae8494002b44561cb02c49d58dd0ba67b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/332920
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Mayank Patke <fishythefish@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Also adds READMEs to some test sub-directories.
Change-Id: Ibf48654bcb43d7d52bd3bc0d2ab6afabc1ea3df6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/333100
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Derek Xu <derekx@google.com>
Also add unsigned value tests for IsUint and MagnitudeIsUint to
verify they don't have similar issues.
TEST=vm/cc/IsInt, vm/cc/IsUint, vm/cc/MagnitudeIsUint
Change-Id: I3c8dcb93b9d019117948bb5c3dac0d1d619931b9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/333083
Commit-Queue: Tess Strickland <sstrickl@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Update gn to e4702d7409069c4f12d45ea7b7f0890717ca3f4b.
Change-Id: Id78149a128eb8e60997788abd641d937477c4be6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/332741
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Previously we only added the type args in constructor invocations, this changes to any named type without explicit type args.
Fixes https://github.com/Dart-Code/Dart-Code/issues/4712
Change-Id: I11a6a96bf34c7e4acff93607a922401d2f0eed83
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/332960
Reviewed-by: Keerti Parthasarathy <keertip@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Keerti Parthasarathy <keertip@google.com>
Build one package with three elf_test_runner components: one for each of the binaries that the test harness invokes on the target. (Though currently only tests that use "dart" are setup.)
Create includable CML shards for the capabilites required by the AOT and JIT VMs.
Fold test_runner's fuchsia_cfv2.dart back into fuchsia.dart.
TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/38752
Change-Id: I7bd8d43d184cbcb11903c7aed77ce31fb30cb894
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/332451
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Zijie He <zijiehe@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
A simple (if provisional) implementation of an analysis options map.
🚧 Datastructure, API and implementation all subject to change.
Change-Id: I94d311d17df3f60b6e36437d37df84ce5091e0fa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/332369
Commit-Queue: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This is a reland of commit 5c4fd50667
The range analysis change was replaced with a different change,
on which this CL is based. In addition, another preceding CL
unified a few methods on subclasses of UnboxIntegerOpInstr, because
the inconsistencies between UnboxInt32OpInstr and UnboxUint32OpInstr
and how unboxed int32 vs. uint32 constants were handled caused the
issue seen after landing the original CL.
Thus, this CL is purely changes of kUnboxedIntPtr to kUnboxedFfiIntPtr
when appropriate plus test changes.
TEST=vm/dart/regress_306327173_il_test
vm/dart/address_local_pointer_il_test
Original change's description:
> [vm/compiler] Consistently use PointerBase.data values as FFiIntPtr.
>
> Also if converting an unboxed int with only non-negative values
> that fit in 32 bits to a uint32, then keep the range from the value.
>
> TEST=regress_306327173_il_test
>
> Cq-Include-Trybots: luci.dart.try:vm-aot-linux-debug-simarm_x64-try,vm-aot-linux-release-x64-try,vm-aot-linux-debug-x64-try,vm-aot-linux-debug-x64c-try
> Change-Id: Id9e7c2d5f477e560822a02574739c57d77b5a6d1
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/332202
> Reviewed-by: Daco Harkes <dacoharkes@google.com>
> Reviewed-by: Slava Egorov <vegorov@google.com>
> Commit-Queue: Tess Strickland <sstrickl@google.com>
Change-Id: I1f66bc9d1ca7569c913f02b611b4a27f189605ac
Cq-Include-Trybots: luci.dart.try:vm-aot-linux-debug-simarm_x64-try,vm-aot-linux-release-x64-try,vm-aot-linux-debug-x64-try,vm-aot-linux-debug-x64c-try,vm-ffi-qemu-linux-release-arm-try,vm-ffi-android-release-arm-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/332340
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Tess Strickland <sstrickl@google.com>
Unify the Canonicalize() methods on subclasses of UnboxIntegerOp
so that there aren't subtle differences between canonicalizing
UnboxInt32 and UnboxUint32 instructions. Also unify the
ComputeCanDeoptimize() methods for similar reasons.
If canonicalizing a truncating unbox of a constant, then create an
unboxed constant of the truncated value instead of an unboxed
constant of the original untruncated value.
Previously, a subclass of Definition that didn't override InferRange
got a default range solely based on its type. Now, if the representation
of the definition is an unboxed integer, the default range is the
intersection of the range inferred from its type with the range
inferred from its representation.
TEST=ci
Change-Id: Ib022c366904ee6f8a81995bd4c16b87bd876176d
Cq-Include-Trybots: luci.dart.try:vm-aot-linux-debug-simarm_x64-try,vm-aot-linux-release-x64-try,vm-aot-linux-debug-x64-try,vm-aot-linux-debug-x64c-try,vm-win-release-x64-try,vm-ffi-qemu-linux-release-arm-try,vm-ffi-android-debug-arm-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/332400
Reviewed-by: Slava Egorov <vegorov@google.com>
Refactor libraries so that JSCM will only use `JSStringImpl` class for
strings.
The goal is to disentangle the native string classes and `JSStringImpl`
and start testing `JSStringImpl` in isolation.
Changes:
- `dart:_string` is no longer available in JSCM.
- Make `int.toString` external to allow patching it differently in JSCM
and normal modes.
`toString` implementations are in `boxed_int_to_string.dart` patch
files.
- `int.parse` now uses JS `parseInt`. However `parseInt` is not
compatible with Dart's `int.parse` so this will cause some more test
failures in JSCM for now.
- Any dependencies to `dart:_string` from JSCM `dart:convert` are
removed. The library implementation now uses JS `TextDecoder` for
UTF-8 decoding.
Note: `TextDecoder` is not available on d8, so text decoding tests
will fail on d8.
JSON encoding and decoding in `dart:convert` will be updated in a
follow-up CL.
- Compiler (translator, constant generator, code generator etc.) is
updated to allocate the `JSStringImpl`s in JSCM.
Initially this will make some JSCM test fail as `int` parsing is not
quite right, those will be fixed in follow-up CLs.
Co-authored-by: Joshua Litt <joshualitt@google.com>
Change-Id: I366e06f44cdc369d28fe47b24015234260304399
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/332680
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Ömer Ağacan <omersa@google.com>
This adds the functionality to ClassMember that enables us to
fully compute the ExtensionTypeAccessTarget.
Change-Id: I62dd5e24f664c2edd70c2fe794f66595cc017173
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/332427
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>