Rationale:
This improves JIT and AOT performance of unary minus
and also improves constant folding and range analysis
on negative constant (viz. x / -3 is often x / - (3)).
The SHIFT operator needed some special treatment, since
we have to avoid converting a NON-speculative shifts
back into a deopt.
https://github.com/dart-lang/sdk/issues/34072
Change-Id: I230c9cfda98297f683bbba53688e57c2cc659360
Reviewed-on: https://dart-review.googlesource.com/68434
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
Avoid depending on the user visible name for a growable list:
VM in product mode returns _GrowableList and dart2js returns JSArray.
R=kustermann@google.com
Change-Id: I820e7cb7c475ba1aa0288beb3ba14c78ea37faf3
Reviewed-on: https://dart-review.googlesource.com/69140
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Until now the expression evaluation implementation was using normal kernel loader
functionality, which registered a new class with the isolate. Then the cid of that
class was set to kIllegalCid.
This caused the direct_subclasses/direct_implementors CHA information to contain a
class with kIllegalCid.
This CL fixes this by ensuring we never register the libraries/classes
created for expression evaluation (which are not even used, they are an artifact
of how the expressions are encoded in kernel).
Issue https://github.com/flutter/flutter/issues/20255
Issue https://github.com/flutter/flutter/issues/20307
Change-Id: Ie6dd76c7ff696cd8adf4f27e9a072274afd90136
Reviewed-on: https://dart-review.googlesource.com/68681
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
40l is not a 64bit value when compiling with MSVC.
Change-Id: Ie22bef131a015c2c41facfdebcc0898d98175d9f
Reviewed-on: https://dart-review.googlesource.com/69103
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
All of those tests are already skipped in the legacy "$compiler == precompiler" configuration.
Change-Id: I963c66d32cf79bed99e81e30aef40f7d01a12cef
Reviewed-on: https://dart-review.googlesource.com/68921
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Having this map file allows for the browser to report source line numbers in case of exception thrown by Observatory code.
Change-Id: Ia47789b89b3a14ca6513143bf9d4cc9c4a8cc1fb
Reviewed-on: https://dart-review.googlesource.com/68847
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
Constant pool:
* Field constant pool entry is renamed to StaticField
* FieldOffset constant pool entry is replaced with InstanceField.
InstanceField occupies 2 slots for field offset and field object.
* ContextOffset constant pool entry is removed.
* TypeArgumentsFieldOffset is renamed to TypeArgumentsField
Bytecodes:
* LoadFieldTOS and StoreFieldTOS require InstanceField entry.
* New bytecodes added: LoadContextParent, StoreContextParent,
LoadContextVar, StoreContextVar, LoadTypeArgumentsField.
This CL is a preparation for compilation of bytecodes related
to instance field accesses.
Change-Id: I1d6274e94bd7cd764e4fc83d9847daf4f21e5a25
Reviewed-on: https://dart-review.googlesource.com/68843
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
These options only make sense with a source input, which is not supported in Dart 2.
Change-Id: I7fcfecf44c310f49a688f189e77e8768cd82db23
Reviewed-on: https://dart-review.googlesource.com/65794
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Also this CL ports x64 changes to StubCode::GenerateSlowTypeTestStub() to arm/arm64.
Change-Id: I1e6bb3ae51724e97dac28c7d75ac9d0f4f2db01b
Reviewed-on: https://dart-review.googlesource.com/68885
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
This change should fix the failing ResynthesizeAstStrongTest.test_class_documented_mix test.
Change-Id: I0b89fa5ddbb4725ec0115836e8b5e801d18678c5
Reviewed-on: https://dart-review.googlesource.com/68900
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Until now the subtype-test cache mechanism did not work (i.e. could
return the wrong result) for partially instantiated generic closures.
Additionally, closures which close over generic methods were always
handled in runtime. This caused a servere performance regression for
any code hitting this (e.g. code which uses `package:stack_trace`).
Fixes https://github.com/dart-lang/sdk/issues/34051
Fixes https://github.com/dart-lang/sdk/issues/34054
Change-Id: Idb73e6f348c2fe0c737f42c57009f5f7a636c9a6
Reviewed-on: https://dart-review.googlesource.com/68369
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
The style guide says to "PREFER relative paths when importing
libraries within your own package’s lib directory". Mixing them with
package: imports doesn't work. Before: we had a mix. Now: we don't.
Change-Id: Iadcf1dda7bae51121e325f5d4b8c6add8759da95
Reviewed-on: https://dart-review.googlesource.com/68082
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
Instead, only filter dead objects from the remembered set at the end of marking.
Allows scavenges to occur during concurrent marking, and avoids changing the mutator to handle a race with the concurrent marker for the remembered bit.
Bug: https://github.com/dart-lang/sdk/issues/34002
Change-Id: I116d7acc8fb57b8c3088febe6c196030a40fb319
Reviewed-on: https://dart-review.googlesource.com/67841
Reviewed-by: Siva Annamalai <asiva@google.com>
About 20 tests that were marked as failing actually pass.
Change-Id: Ib1f8b51359bfba41d0bab7bb28a5eb83340a11fb
Reviewed-on: https://dart-review.googlesource.com/68842
Reviewed-by: Alexander Markov <alexmarkov@google.com>