Several tricks here:
* When zeroing registers we can use xorl instead of xorq because the 'l'
variant will zero the top bits.
* test and 'and' instructions with immediate arguments can use 8-bit and 32 bit
variants more heavily.
* mov reg, immediate can use more compact encodings when sign-extension is not
needed.
Performance is better than +1% when measured on Dart2JS.
R=vegorov@google.com
Intel optimization manual says: "Assembly/Compiler Coding Rule 64. (H impact, M
generality) Use the 32-bit versions of instructions in 64-bit mode to reduce
code size unless the 64-bit version is necessary to access 64-bit data or
additional registers."
Bug:
Change-Id: I2a989315c45f8d8ebab719653fbfa2b18ebb77c9
Reviewed-on: https://dart-review.googlesource.com/23400
Commit-Queue: Erik Corry <erikcorry@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
The discussion about SDK issue 31305 showed that the definition of
covariant/contravariant/invariant occurrences need to be given
somewhere, and also that covariant-from-class.md is a reasonable place
to put it.
This CL adds those definitions there, based on Leaf's proposal in the
above-mentioned issue, and adjusts the definition of what it means to
be a covariant parameter such that the case where the relevant type
parameter occurs in the bound of a formal type parameter in a function
type is taken into account.
(It also reformats the document to stay within 80 columns and follow
the style of newer informal specs more closely, but that should be
easy to skip over because Gerrit colors white space changes
differently from "real" changes).
Change-Id: I0b0a688c616d0bb56755ceea08e1792abfa7936d
Reviewed-on: https://dart-review.googlesource.com/23422
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Unlabeled while loops in Kernel (these are ones that are not the
target of a break) did not shadow labeled ones. The compiler would
generate a break without a label in JS which would target the wrong
loop.
Bug:
Change-Id: Ib060ab66326a3ea0779eaceccaf1ca06ccfafb75
Reviewed-on: https://dart-review.googlesource.com/23421
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Expect.equals (and Expect.listEquals) takes expected first and actual
second. When these are flipped in tests, the failure message can be super
hard to understand.
Bug:
Change-Id: I1d3c5a31365fa41ee7bcc7781474d76de9184cd5
Reviewed-on: https://dart-review.googlesource.com/23420
Reviewed-by: Jonas Termansen <sortie@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
This CL adds a test for stepping over - among others - a reassignment of
a variable with a new named constructor.
It additionally improves the situation in DDC via kernel.
Bug:
Change-Id: I1658d433575e6614b1cbbbeb7f1765651b0d34bb
Reviewed-on: https://dart-review.googlesource.com/20667
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
First stacktrace test making use of the shared testing functionality
originally used by dart2js.
Bug:
Change-Id: Ia3528e2860a5bea48365c32a6526811d06ec001c
Reviewed-on: https://dart-review.googlesource.com/23060
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
We can create new FunctionElement(s), set its types from the existing
KernelType, and resolve references to it from invocations.
No formal paramerers, no type parameters, no assignment yet.
No tests for context element.
Will work on this later.
R=brianwilkerson@google.com
Bug:
Change-Id: I0d8d36601916727d11e43160f9c9392fc75854ba
Reviewed-on: https://dart-review.googlesource.com/23223
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
- Remove random build-id.
- Replace build time in embedded version string with commit time.
- Remove timestamps from Observatory tarball.
- Zero-initialize skipped bytes in snapshot streams.
- Fix uninitialized fields in PatchClass, Script and Library.
- Disable (under flag) random identity hashes and concurrent GC.
Bug: https://github.com/dart-lang/sdk/issues/31427
Change-Id: I3e95de679c8372841cd27ca60df78d9b00ffbfe1
Reviewed-on: https://dart-review.googlesource.com/22901
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Remove comment syntax on methods signatures in convert. This doesn't
change the reified types, but may cause new errors and warnings in
non-strong mode code.
Bug:
Change-Id: Ib811a4918d30eb5ba04300df928ac6c3868b2c2b
Reviewed-on: https://dart-review.googlesource.com/21783
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Leaf Petersen <leafp@google.com>
The safestack stack pointer is cached when invoking Dart code, and
manually restored when jumping over C++ frames for Dart exceptions
in Exceptions::JumpToFrame().
fixes#31356
Change-Id: I71c2e86d1d4f24571dd618a5db06fd1277339ebc
Reviewed-on: https://dart-review.googlesource.com/23141
Commit-Queue: Zach Anderson <zra@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
The output file name was recently changed (in
d42c44069a) but the name
in the .gitignore file was not updated.
Change-Id: Id9e5a1769294e24394703ac94cc0692eb3f36da2
Reviewed-on: https://dart-review.googlesource.com/22801
Reviewed-by: Morten Krogh-jespersen <mkroghj@google.com>
Commit-Queue: Siva Chandra <sivachandra@google.com>
This was a temporary measure to verify the VM could handle moving old-space objects before we had the sliding compactor.
Bug: https://github.com/dart-lang/sdk/issues/30978
Change-Id: I4ffec413918481c0af4828d126930455f620935d
Reviewed-on: https://dart-review.googlesource.com/22663
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Erik Corry <erikcorry@google.com>
Tests that have begun failing due to this change are marked with a
reference to issue #31402.
Change-Id: I3d29a1058af5ba43bc2868d85de1e9d87b666ee2
Reviewed-on: https://dart-review.googlesource.com/23080
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
I was working on adding support for treating RuntimeError as Pass if
runtime == none and I noticed a lot of dead or redundant code, so
cleaned it up some.
Change-Id: I0be451a7075d99bc07d1407883861fb06d777c02
Reviewed-on: https://dart-review.googlesource.com/22800
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Tests that have begun failing due to this change are marked with a
reference to issue #31402.
Change-Id: Id570bf354583a3780087ffc820eefc3619573af4
Reviewed-on: https://dart-review.googlesource.com/22842
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Now that some files were factored out into a separate package, delete
the copied file and use the package instead.
Bug:
Change-Id: I3e58ae0213517234b179d6dcfcf251830cb1166a
Reviewed-on: https://dart-review.googlesource.com/22980
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
Update the expected paths for summary, sdk and dill files.
Report errors saying that it cannot find specific files instead of
letting ddc crash with some exit code.
Bug:
Change-Id: I88348dc28ebad8cc4b630b85555be978244c8cd7
Reviewed-on: https://dart-review.googlesource.com/22920
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
Change-Id: I3fcea6cc5cbce30092bc96a322d5d4a3866c3d37
Reviewed-on: https://dart-review.googlesource.com/22960
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
Change-Id: I9fa3d34cc23430763ea7b314c03ed860650b9cd6
Reviewed-on: https://dart-review.googlesource.com/22620
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
This reverts commit 5ac157c572.
Reason for revert:
After a roll of this into flutter engine and a roll of flutter engine
into flutter this broke flutter tests.
In particular it causes us to not load the entire application from the
dill file which makes us crash during lookup of embedder entrypoints,
or more specifically during lookup of "main" since
`I->object_store()->root_library()` is `null`.
Bug:
Change-Id: If3b05cba47ed20c2e9bfd48c89abd8200e0bf28b
Reviewed-on: https://dart-review.googlesource.com/23001
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
R=vegorov@google.com
This removes the IA32 disassembler and uses the X64 disassembler for
both variants. Instructions that were in the IA32 assembler, but not
supported by the X64 disassembler have been added. It also adds some
regression tests for a lot of the disassembler output.
Bug:
Change-Id: I243abbb04c3a77810ce96ca74f7f42a5a1aea0cf
Reviewed-on: https://dart-review.googlesource.com/22982
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Erik Corry <erikcorry@google.com>
The code for reading dill files via dart has a "debugPath" list that is
continously added and removed to in order to be able to debug what went
wrong if something goes wrong (e.g. if the dill file is invalid or the
reading code is wrong etc).
This CL wraps the updates of this list in assert so that we don't pay
for what we don't use in the general case. In a debug setting we can get
the functionality back via --checked.
On a benchmark of 10 runs, the time it takes to read vm_outline.dill 100
times after a 2 second warmup changes by -2.77% +/- 1.21%.
Bug:
Change-Id: I643b8dd778972621046fe76b536fd95e9bb66d1c
Reviewed-on: https://dart-review.googlesource.com/18820
Reviewed-by: Peter von der Ahé <ahe@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>