Age | Commit message (Collapse) | Author |
|
|
|
Change-Id: I11be5a9b73da207c9eb497bcaffc49d614c1ca89
|
|
|
|
|
|
The art::PrepareForRegisterAllocation visitor can remove an
art::BoundType instruction as value input of an
art::ArraySet instruction, possibly replacing it with an
art::NullConstant. If this happens, remove the need for a
type check in this art::ArraySet.
Bug: 27638110
Change-Id: I6270f8a8e22822a24d8a5919df427ca9c64d121b
|
|
Bots are red. Tentative reverting as this is likely the offender.
Bug: 27689078
This reverts commit a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931.
Change-Id: I3ec6947a5a4be878ff81f26f17dc36a209734e2a
|
|
Record the compiler filter in the oat header. Use that to determine
when the oat file is up-to-date with respect to a target compiler
filter level.
New xxx-profile filter levels are added to specify if a profile should
be used instead of testing for the presence of a profile file.
This change should allow for different compiler-filters to be set for
different package manager use cases.
Bug: 27689078
Change-Id: Id6706d0ed91b45f307142692ea4316aa9713b023
|
|
|
|
|
|
Bug: 27690481
Change-Id: I15ce5524d94fc1780da02e6471bede66b3a1b82a
|
|
|
|
Remove unused allocation types, mostly from removed Quick.
Move logging one level up to capture memory used by stack
maps during AOT compilation. Raise the reporting threshold
to 8MiB to limit the output to the worst offenders.
Change-Id: I8c7a01bfa90bc8ec5eab66187eb6850a022f3543
|
|
|
|
|
|
- Attach a ImtConflictTable to conflict runtime ArtMethod.
- Initially 0, a new one will be created at the first hit of
the conflict method.
- If the assembly code does not find a target method in the table,
we will create a new one again, copying the data from the previous
table and adding the new mapping.
Implemented for arm/arm64/x86/x64.
bug:27556801
bug:24769046
Change-Id: Ie74d1c77cf73d451a1142bdc5e3683f9f84bb4e7
|
|
There may be a lifetime hole in the interval, which means the interval
does not cover the given position.
bug:27617589
Change-Id: Iabd2b3d82936bed498f87be1a01760210954f97e
|
|
- Define maximum int and long shift & rotate distances as
int32_t constants, as shift & rotate distances are 32-bit
integer values.
- Consider the (long, long) inputs case as invalid for
static evaluation of shift & rotate rotations.
- Add more checks in shift & rotate operations constructors
as well as in art::GraphChecker.
Change-Id: I754b326c3a341c9cc567d1720b327dad6fcbf9d6
|
|
Bug: 27651442
Bug: 27151098
Change-Id: I23a428be68ccf9f9557df01ee7e920eeeb8da2ba
|
|
Ensure art::HNeg is only passed a type having the kind of
its input. For a boolean, byte, short, or char input, it
means HNeg's type should be int.
Bug: 27684275
Change-Id: Ic8442c62090a8ab65590754874a14a0deb7acd8d
|
|
|
|
Change-Id: Ie871763b9a36075fd3d70ee6e2e241ae1ccc36cf
|
|
Rationale:
This changelist implements allowing narrowing conversions within
inductions and loop control. More induction and loops recognized,
more bounds eliminated. We all win. The basic idea is pretty simple
(record type with detected induction) but one has to get all the
details right, as illustrated by the many new unit tests.
BUG=27151098
Change-Id: I254020bfa5fa623799b31bbbb5ccc97d4d5a0100
|
|
|
|
Seem to get randomly compressed incorrectly on volantis. Added
verifiation in the image writer.
Using LZ4HC now silently uses LZ4. This is still safe since both use
the same decompression code.
Bug: 27560444
Change-Id: I652eee7498dc84994993be3a5b0447ec5b246304
|
|
So long, old friend.
Change-Id: I0241c798a34b92bf994fed83888da67d6e7f1891
|
|
|
|
Also attribute ArenaBitVector allocations to appropriate
passes. This was used to track down the source of the
excessive memory alloactions.
Bug: 27690481
Change-Id: Ib895984cb7c04e24cbc7abbd8322079bab8ab100
|
|
|
|
|
|
|
|
We can get HInstructions typed with a class that is in an error state.
For such classes, we cannot look at the vtable or imt table as they
are not cleanly populated.
bug:27683927
Change-Id: I0d64ca470e1cb6cf9b40e9f02bb9b0bb12c2bac1
|
|
The null constant might be hiding under a HBoundType
(which we could clean up in instruction simplifier, but
that is orthogonal).
bug:27683874
Change-Id: Ide8ec5bcd439ec0fca5e54175ebeedc5a9f679a3
|
|
Only verifies and dex2dex compiles classes in the profile. Goal
is to reduce application launch time.
~2x faster than interpret-only for Facebook.
Bug: 27688727
(cherry picked from commit a079e3aa62cceb76c1c1811e6e09bcaf75e20289)
Change-Id: Iad5aa1adee3aa6c2408820e8cbbab2d4412021b8
|
|
|
|
Also extend tests covering the IntegerRotateLeft,
LongRotateLeft, IntegerRotateRight and LongRotateRight
intrinsics and their translation into an art::HRor
instruction.
Bug: 27682579
Change-Id: I89f6ea6a7315659a172482bf09875cfb7e7422a1
|
|
|
|
The debugger looks up PC of the call instruction, so the runtime's
stackmap is not sufficient since it is at PC after the instruction.
Change-Id: I0dd06c0b52e8079ea5d064ea10beb12c93584092
|
|
Due to the dex specification, we can be in a state where
two array get with the same dex register inputs are typed
differently.
bug:27683874
Change-Id: Ia821fd32e86c306093372249e7686332a7584263
|
|
- int sun.misc.Unsafe.getInt(Object o, long offset)
- int sun.misc.Unsafe.getIntVolatile(Object o, long offset)
- long sun.misc.Unsafe.getLong(Object o, long offset)
- long sun.misc.Unsafe.getLongVolatile(Object o, long offset)
- Object sun.misc.Unsafe.getObject(Object o, long offset)
- Object sun.misc.Unsafe.getObjectVolatile(Object o, long offset)
- void sun.misc.Unsafe.putInt(Object o, long offset, int x)
- void sun.misc.Unsafe.putOrderedInt(Object o, long offset, int x)
- void sun.misc.Unsafe.putIntVolatile(Object o, long offset, int x)
- void sun.misc.Unsafe.putObject(Object o, long offset, Object x)
- void sun.misc.Unsafe.putOrderedObject(Object o, long offset, Object x)
- void sun.misc.Unsafe.putObjectVolatile(Object o, long offset, Object x)
- void sun.misc.Unsafe.putLong(Object o, long offset, long x)
- void sun.misc.Unsafe.putOrderedLong(Object o, long offset, long x)
- void sun.misc.Unsafe.putLongVolatile(Object o, long offset, long x)
Change-Id: I89c07a443ee81a5573a083e871b82f446416b71f
|
|
|
|
|
|
Check if both --debuggable and --generate-debug-info are set instead.
History: I have recently added the --native-debuggable flag to control
whether extra stack maps are generated in order to produce accurate
native line number mapping of all generated code. I didn't want to
include it into --debuggable since we compile boot.oat as debuggable
and so it would be affected.
On second thought, it would have been reasonable to generate the extra
stackmaps only if both --debuggable and --generate-debug-info are set,
instead of introducing another compiler flag. This means we do not
affect boot.oat but we still get the extra stack maps if DWARF debug
information is explicitly requested.
Change-Id: I7e5e557e4850a88b3b6f86178d2cb645fb1e1110
|
|
Change-Id: If9eced6d5bd6d8d0248bad0e7b12095fb5a84d26
|
|
|
|
Also extend tests covering the IntegerSignum, LongSignum,
IntegerCompare and LongCompare intrinsics and their
translation into an art::HCompare instruction.
Bug: 27629913
Change-Id: I0afc75ee6e82602b01ec348bbb36a08e8abb8bb8
|
|
- Do not agressively try to resolve a return type.
- Deal with unresolved return type.
bug:25492619
Change-Id: Idc9c96a0b376fe5ee86b411c02ce7078c7f48c84
|
|
|
|
|
|
Collect data for stack maps, profiling info, and compiled code.
bug:27520994
Change-Id: Ic87361230c96ce0090027a37d750e948d806c597
|
|
This removes redundant code from the generators and allows for easier
stat recording.
Change-Id: Iccd4368f9e9d87a6fecb863dee4e2145c97851c4
|