| Commit message (Collapse) | Author | Age | Files | Lines |
|\ |
|
| |
| |
| |
| |
| |
| |
| | |
Also, use explicit flush (instead of passing flush parameter to print)
to enable better compatibility across python versions.
Change-Id: Iaf294d88e932b778d5dce7f3c2b8eca775849973
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In main(), the outer ArrayList may still be reachable after the
try-catch under the interpreter or a compiler without a liveness
analysis and the last ArrayList allocation may fail due to an OOME.
This fixes 114-ParallelGC under the CC and the GSS collectors.
Bug: 12687968
Change-Id: Ie1082d38b2a677ec70fdc23b0187ae8ce0612808
|
|/
|
|
|
| |
Bug: 19125146
Change-Id: I274190a7a60cd2e29a854738ed1ec99a9e611969
|
|
|
|
|
|
|
|
|
|
| |
Do not abort, as daemon threads may still be active.
Bug: 17894429
(cherry picked from commit c0440f69ebf051ff2ffdc00de51005a040014462)
Change-Id: I7c1d50ff8d4a5e150279e703a69c8f2f1d423e6b
|
|
|
|
| |
Change-Id: I797de0bed7b9c51cd7889de5144b8dbfd641335d
|
|
|
|
| |
Change-Id: I928ff56d232a647e8227f2b97a8f4a51791a5f95
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When interpreting a deoptimized shadow frame, we may start with a
pending exception thrown by a previous deoptimized shadow frame (from
a previous invoke). Therefore, we need to handle it before executing
any instruction, otherwise we execute incorrect code.
Because we need the DEX pc of the throwing instruction to find a
matching catch handler, we initialize deoptimized shadow frames with
the current DEX pc at the time the stack is deoptimized.
When we are about to interpret a deoptimized shadow frame, we need to
update the shadow frame with the DEX pc of the next instruction to
interpret. There are three cases:
- if there is no pending exception, this is the instruction following
the current one.
- if there is a pending exception and we found a matching catch
handler, this is the first instruction of this handler.
- if there is a pending exception but there is no matching catch
handler, we do not execute the deoptimized shadow frame and continue
to its caller.
The verifier now fails when a method starts with a move-exception
instruction. Indeed we cannot start executing a method with a pending
exception.
Bug: 19057915
Bug: 19041195
Bug: 18607595
Change-Id: I355ac81e6ac098edc7e3cc8c13dbfa24a2969ab2
|
| |
| |
| |
| | |
Change-Id: I47a834da921930764abdff8fdce09b026b9ad483
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Make the setup simpler and less prone to OOME problems.
Bug: 19027813
Change-Id: Ie2dbe1579a45d554f207a9bf84d53303acbe79d5
|
|\ \ \ |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This patch fixes Mir2Lir::GenInlinedReverseBytes,
Mir2Lir::GenInlinedAbsInt, Mir2Lir::GenInlinedAbsLong,
Mir2Lir::GenInlinedFloatCvt, Mir2Lir::GenInlinedDoubleCvt,
X86Mir2Lir::GenInlinedSqrt, X86Mir2Lir::GenInlinedMinMaxFP,
X86Mir2Lir::GenInlinedMinMax, X86Mir2Lir::GenInlinedPeek,
and X86Mir2Lir::GenInlinedReverseBits to generate no code, when results
are unused.
New calls without assignments are added to 082-inline-execute.
Change-Id: I7076e9ddbea43545315f2aeb677c63a8a6e95224
Signed-off-by: Chao-ying Fu <chao-ying.fu@intel.com>
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Running with prebuilt is added to black-list, so no need to handle
this in the test itself.
Change-Id: I334f291eb4ec2703dbb1f1e4575232fa67ab7fb8
Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
|
|\ \ \ |
|
| |/ /
| | |
| | |
| | |
| | |
| | | |
HNot folds to ~, not !.
Change-Id: I681f968449a2ade7110b2f316146ad16ba5da74c
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
ImplicitNullChecks are recorded only for instructions directly (see NB
below) preceeded by NullChecks in the graph. This way we avoid recording
redundant safepoints and minimize the code size increase.
NB: ParallalelMoves might be inserted by the register allocator between
the NullChecks and their uses. These modify the environment and the
correct action would be to reverse their modification. This will be
addressed in a follow-up CL.
Change-Id: Ie50006e5a4bd22932dcf11348f5a655d253cd898
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch moves Checker-based tests of the optimizing compiler into
the art/test directory and modifies the run-test scripts to dump
the CFG during compilation and to verify the graph using Checker as
part of the "running" stage. Outputs generated by running the test
and running Checker are concatenated and compared with expected.txt.
Checker is invoked only if the test's name name matches the format
"<number>-checker-*" and it's currently enabled only for optimizing +
host configs. The tests are still invoked on other configs but
without Checker.
Change-Id: Ib24da808cd4bca66f07e0dbeb913a418065f2859
|
|
|
|
|
|
|
| |
Hard-float calling convention uses S14 and D7 for argument passing,
so we cannot use them.
Change-Id: I77a2d8c875677640204baebc24355051aa4175fd
|
|\ |
|
| |
| |
| |
| |
| |
| | |
Interpret-only Mips64 runtime support.
Change-Id: Iee22d0c8c77105d9b2f03a67dc4e09957fe0ab0a
|
|/
|
|
|
| |
Bug: 19027813
Change-Id: I13af576dc3e980dc82e466435f41b322e2cd873e
|
|
|
|
|
|
|
|
|
| |
Add intrinsics infrastructure to the optimizing compiler.
Add almost all intrinsics supported by Quick to the x86-64 backend.
Further intrinsics require more assembler support.
Change-Id: I48de9b44c82886bb298d16e74e12a9506b8e8807
|
|
|
|
|
|
|
| |
Increase the timeout to be larger than the run-test timeout. That
way ART will dump all threads when running the test on the host.
Change-Id: I842b056bba650e5c7c3293376a48d48b7468e73d
|
|
|
|
| |
Change-Id: Ie275583aec421f3a40663ff44388a73e890ff894
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Adds a simple check to class-loading when the embedded dex file in
an oat file and the dex file on the class path where we found the
class do not match.
We require that the number of methods and fields do not change, as
that will almost certainly mean that quickened and other compiled
offsets are wrong now. This is a reasonably lightweight change, but
we should investigate a full comparison including name and type of
members.
Bug: 17937814
Bug: 18708951
(cherry picked from commit 15a33b3f88546bce85dcb9d28caf200da51154d7)
Change-Id: Icb9638bebd369ab23822817f4a97c8dd8625fea5
|
|\ \
| |/
|/| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Use SIGRTMIN+2 as a special signal to dump all threads similar to
SIGQUIT. Use nested timeouts to enforce a test timeout and dump
the threads in a deadlock.
Bug: 18933933
Change-Id: I4209047eeca07ff360d7c19922d5b5da64fd69a5
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If ldrd/strd isn't atomic, IPUT_WIDE uses ldrexd+strexd and
we need to record the safepoint for the ldrexd rather than
strexd. IGET_WIDE was simply missing the memory barrier.
Bug: 18993519
Change-Id: I4e9270b994f413c1a047c1c4bb9cce5f29e42cb4
|
|\ \ \ |
|
| |/ /
| | |
| | |
| | |
| | |
| | | |
Currently reserve a global register DTMP for these operations.
Change-Id: Ie88b4696af51834492fd062082335bc2e1137be2
|
|\ \ \
| |_|/
|/| | |
|
| |/
| |
| |
| |
| |
| |
| |
| | |
Refactor things a bit to make it easier to stream.
Add a simple test that dumps the heap and runs hprov-conf on it.
Change-Id: I79a9ad37d4cf41fa8d63d039586aa80394d96005
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We now do the two-step memory protection strategy (first protect the
from space with PROT_READ and later protect it with PROT_NONE) only if
the from space is a rosalloc space (excluding the more common bump
pointer space case). This strengthens the GC verification for the bump
pointer space case as we avoid the case where mutators run while the
from space is PROT_READ rather than PROT_NONE.
Add a command line flag to override the minimum interval for the
hspace compaction for OOM and set it to zero in the gcstress/gcverify
run-tests to run the hspace compaction more frequently in tests.
Fix some comments.
Bug: 18960494
Change-Id: I518b011e026f578e53c4ec269cfb82865b0fae68
|
|
|
|
|
|
|
| |
Ran the test hundreds of times with gcstress without any failures.
Bug: 16406852
Change-Id: Idd2d248bd43bfb20ad7313e12ce3dce85bea3de5
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We now avoid running GC if we are handling a stack overflow, this
helps prevent running past the end of the stack overflow reserved
bytes.
Added logic in ThrowStackOverflowError to use a stack overflow
exception without a stack trace if we fail to allocate the stack
trace.
Bug: 16406852
Change-Id: Ib34e235cd0af6d7c4c93c9705fa822f2b9b23b38
|
|
|
|
|
|
|
|
| |
There was an infinite loop in the code generation for a divide
by literal zero.
Bug: 18887754
Change-Id: Ibd481918d3c6d7bc62fdd1a6807042009f561d95
|
|
|
|
|
|
|
|
| |
Add support for rem-float, rem-double and volatile memory accesses
using acquire-release and memory barriers.
Change-Id: I96a24dff66002c3b772c3d8e6ed792e3cb59048a
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
A constructor must call its superclass constructor. However, if one
replaces the invoke-direct superclass.<init>() instruction with a
variety of instructions, the verifier would NOT complain that the
superclass constructor hadn't been called.
Detailed explanation:
This was because if we are verifying the return-void insn of a
constructor, then we check that the register line doesn't contain a
register with an UninitializedThis type. With a method like follows:
Class.<init>()V:
return-void
Then we hit the return-void, see the UninitializedThis, and fail the
method. However, with a method like follows:
Class.<init>()V:
nop
return-void
Any insn that continues or branches onto a return-void instruction will
mark all of the registers as Conflict. This meant that the check in
return-void for an UninitializedThis residing the register line would
_always_ pass if there were any insns before it - the entire line had
been set to Conflict.
The fix is to bring the check for an UninitializedThis forward to the
point just before we set all registers to Conflict, if we're about to
hit a return-void insn in a constructor. It still needs to be done
again in the verification of return-void itself, to avoid the solo
return-void case.
This patch also deals with the case where the only remaining
UninitializedThis reference is overwritten, to avoid a method like the
following from getting through verification:
Class.<init>()V:
const/4 v0, 0
return-void
Bug: 18800943
Change-Id: I2e317261844d3b6c78e35228669f3da173316570
Fuzzed-With: https://android-review.googlesource.com/#/c/119463/
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Introduce a swap-space and corresponding allocator to transparently
switch native allocations to memory backed by a file.
Bug: 18596910
(cherry picked from commit 62746d8d9c4400e4764f162b22bfb1a32be287a9)
Change-Id: I131448f3907115054a592af73db86d2b9257ea33
|
|/
|
|
|
|
|
|
| |
Get rid of BasicBlock::KillUnreachable() and just Kill()
unreachable blocks from the DFS order calculation.
Bug: 18718277
Change-Id: Icaf7b9c2320530e950f87e1e2e2bd1fa5f53cb98
|
|
|
|
|
|
| |
arm and x86 currently don't allocate registers for floating point
and long operations, so we can't inline methods with these operations.
Change-Id: I11e4b97ddbe90f4978f2abe1081fb0f849acb811
|
|
|
|
|
|
|
|
|
|
| |
Currently only inlines simple things that don't require an
environment, such as:
- Returning a constant.
- Returning a parameter.
- Returning an arithmetic operation.
Change-Id: Ie844950cb44f69e104774a3cf7a8dea66bc85661
|
|
|
|
|
|
|
|
|
|
| |
Also added stress test for Thread.getAllStackTraces. The test calls
Thread.getAllStackTraces from multiple threads to stress race
conditions which can cause deadlocks.
Bug: 18661622
Change-Id: Ideee7073fdcce784414808d08eca9ea310240073
|
|
|
|
|
|
|
| |
Try to combine integer multiply and add(sub) into a MAC operation.
For AArch64, also try to combine long type multiply and add(sub).
Change-Id: Ic85812e941eb5a66abc355cab81a4dd16de1b66e
|
|\ |
|