OSDN Git Service
Nicolas Geoffray [Tue, 21 Apr 2015 16:04:32 +0000 (16:04 +0000)]
Revert "Run DCE again after all the other optimizations have run."
Reverting because of libcore failures.
This reverts commit
7a9c885684c965fe84f91d8ad74f54f869e2a448.
Change-Id: Iafe59b02fe7617243d81533d66e609a3528e7a58
Calin Juravle [Tue, 21 Apr 2015 13:07:50 +0000 (14:07 +0100)]
Run DCE again after all the other optimizations have run.
On docs this doubles the amount of instructions removed.
Change-Id: I1712a92c0c0b3b32b111d194b64d8ea81d652822
Calin Juravle [Tue, 21 Apr 2015 12:56:34 +0000 (13:56 +0100)]
Use --dump-stats to dump optimizing compiler stats.
VLOG(compiler) produces too much output and it takes a long time if you
only need to see how an analysis performs.
Change-Id: Ic17c2b2b5fec431d356cecd37289fb96985d4d7f
Calin Juravle [Mon, 20 Apr 2015 17:30:42 +0000 (18:30 +0100)]
[optimzing] Fix codegen bug and improve type propagation
- don't bound the type if there are no relevant uses
- insert the bound type in the bounded block (this allows for condition
materialization without changing the logic there).
- add more comments
- add tests for BoundType generation
- fix GenerateTestAndBranch
Change-Id: I5c1fdda104da4a46775d207270220d410234a472
Mathieu Chartier [Mon, 20 Apr 2015 17:16:57 +0000 (17:16 +0000)]
Merge "Add sanity check for large object allocation"
David Brazdil [Mon, 20 Apr 2015 17:12:53 +0000 (17:12 +0000)]
Merge "ART: Simplify more bool operations"
David Brazdil [Fri, 17 Apr 2015 13:52:19 +0000 (14:52 +0100)]
ART: Simplify more bool operations
Now that we have the HBooleanNot instruction, the instruction
simplifier can optimize out more conditions comparing a boolean
against a constant, as well as sequences of Boolean negations.
Change-Id: I7f634f6428a3984dd97b27b3d6362491346f1ff6
Mingyao Yang [Mon, 20 Apr 2015 17:11:32 +0000 (17:11 +0000)]
Merge "RecordPcInfo() in GenerateStaticOrDirectCall() is misplaced on x86."
Nicolas Geoffray [Mon, 20 Apr 2015 16:54:36 +0000 (16:54 +0000)]
Merge "Disable tests for volantis."
Nicolas Geoffray [Mon, 20 Apr 2015 16:52:58 +0000 (17:52 +0100)]
Disable tests for volantis.
They're triggering a segfault.
Change-Id: If99bd9b2faba5422320764ca52808720d533745a
Nicolas Geoffray [Mon, 20 Apr 2015 15:20:15 +0000 (15:20 +0000)]
Merge "Opt compiler: Implement parallel move resolver without using swap."
Roland Levillain [Mon, 20 Apr 2015 15:13:07 +0000 (15:13 +0000)]
Merge changes Ib9648605,I34a3bd17
* changes:
Opt compiler: ARM64: Block VIXLpools when recording the pc.
Opt compiler: ARM64: Follow other archs for a few codegen stubs.
Calin Juravle [Mon, 20 Apr 2015 13:50:50 +0000 (13:50 +0000)]
Merge "optimizing: fix gtests"
Calin Juravle [Mon, 20 Apr 2015 13:49:09 +0000 (14:49 +0100)]
optimizing: fix gtests
by taking into account that the compilation unit is null during tests.
Change-Id: I01a28ce8f03c927ff679b84bcdf2464fa97e0924
Alexandre Rames [Thu, 16 Apr 2015 14:07:16 +0000 (15:07 +0100)]
Opt compiler: ARM64: Block VIXLpools when recording the pc.
VIXL automatically handles and generate literal and veneer pools when
using the MacroAssembler. In general, the pools can be emitted
anywhere. Helpers are provided to forbid VIXL from emitting pools
locally.
So when writing the pseudo-code
__ Fmov(d0, 1.2345);
__ Ldr(dst, MemOperand(src, offset));
FunctionRecordingCurrentPC();
__ Add(x0, x1, x2);
VIXL might generate code looking like
0x00: ldr s0, [pc, 0xc]
0x04: ldr dst, [src, offset]
0x08: b #0x10
0x0c: <literal 1.2345>
0x10: add x0, x1, x2
and the program counter recorded by the helper will point after the
literal pool.
So we explicitly stop VIXL from emitting pools when dealing with code
where we care about the program counter.
Change-Id: Ib964860539bdb10f5704c290bdf74e5db149e462
Alexandre Rames [Wed, 15 Apr 2015 10:47:56 +0000 (11:47 +0100)]
Opt compiler: ARM64: Follow other archs for a few codegen stubs.
Code generation for HInstanceFieldGet, HInstanceFieldSet,
HStaticFieldGet, and HStaticFieldSet are refactored to follow the
structure used for other backends.
Change-Id: I34a3bd17effa042238c6bf199848cbc2ec26ac5d
Calin Juravle [Mon, 20 Apr 2015 13:03:14 +0000 (13:03 +0000)]
Merge "[optimizing] Add memory barriers in constructors when needed"
Calin Juravle [Fri, 17 Apr 2015 18:12:31 +0000 (19:12 +0100)]
[optimizing] Add memory barriers in constructors when needed
If a class has final fields we must add a memory barrier before
returning from constructor. This makes sure the fields are visible to
other threads.
Bug:
19851497
Change-Id: If8c485092fc512efb9636cd568cb0543fb27688e
David Brazdil [Mon, 20 Apr 2015 12:58:55 +0000 (12:58 +0000)]
Merge "ART: Extend list of instructions accepted as boolean inputs"
David Brazdil [Mon, 20 Apr 2015 09:14:42 +0000 (10:14 +0100)]
ART: Extend list of instructions accepted as boolean inputs
Previous change allowed integer Phis as inputs of instructions
expecting a boolean type. This list, however, was not exhaustive as
binary operations And, Or and Xor are also valid inputs. This patch
extends the list in SSAChecker.
Change-Id: I5b5c9e7a17992cc4987e3a078ee23ea80028ecfc
Nicolas Geoffray [Mon, 20 Apr 2015 11:40:30 +0000 (11:40 +0000)]
Merge "Fix lint error."
Nicolas Geoffray [Mon, 20 Apr 2015 11:39:57 +0000 (12:39 +0100)]
Fix lint error.
Change-Id: Id956c0e8c864a14c05d291f6b890df4877652306
Nicolas Geoffray [Mon, 20 Apr 2015 11:24:01 +0000 (11:24 +0000)]
Merge "Opt compiler: Correctly require register or FPU register."
Alexandre Rames [Tue, 14 Apr 2015 16:35:39 +0000 (17:35 +0100)]
Opt compiler: Correctly require register or FPU register.
Also add a check that location summary are correctly typed
with the HInstruction.
Change-Id: I699762ff4e8f4e321c7db01ea005236ea1934af9
Nicolas Geoffray [Mon, 20 Apr 2015 09:12:07 +0000 (09:12 +0000)]
Merge "Fix codegen_test for long multiplication."
Nicolas Geoffray [Mon, 20 Apr 2015 08:29:18 +0000 (09:29 +0100)]
Fix codegen_test for long multiplication.
It seems like clang (that we use on the host) was *very* forgiving
with this broken test: the code generated for for MulLong used ebx
but this is a callee-save register in C but not ART. Also, the test
was not properly written for handling longs, so it was taking
unitialized stack entries.
GCC on target is not as forgiving.
Change-Id: I5d7a962f8a72b3ce407dce50ca50b4ffc690c99e
Nicolas Geoffray [Mon, 20 Apr 2015 08:38:05 +0000 (08:38 +0000)]
Merge "Run jdwp tests now that localhost issues have been solved."
Nicolas Geoffray [Mon, 20 Apr 2015 08:29:48 +0000 (09:29 +0100)]
Run jdwp tests now that localhost issues have been solved.
Change-Id: I5ae67c2caf73695316ea9530274e97272114af1b
See: https://android-review.googlesource.com/#/c/147244/.
Mathieu Chartier [Sun, 19 Apr 2015 20:36:11 +0000 (13:36 -0700)]
Add sanity check for large object allocation
If there is a large object which ends up being covered by a space
bitmap, it will not be marked correctly by the GC.
Change-Id: Icdd0aaa207f476dd08effcee6cfbbb5de7ca1d17
Andreas Gampe [Sat, 18 Apr 2015 00:52:30 +0000 (00:52 +0000)]
Merge "ART: Re-add dlopen"
Andreas Gampe [Wed, 8 Apr 2015 01:34:42 +0000 (18:34 -0700)]
ART: Re-add dlopen
Re-add an oat-file path that uses dlopen to load oat files. This
code-path will be necessary to support libunwind unwinding through
properly CFI-annotated oat files, as libunwind consults the linker
about loaded ELF files.
We avoid the original dlopen issue, namely that the semantics of
dlopen disallow loading the same soname twice, by using an extension
of bionic that supersedes the specified behavior.
Change-Id: I4a7e3cb00d1ea156dad84f76826def2a5967c9ca
Mingyao Yang [Fri, 17 Apr 2015 23:51:08 +0000 (16:51 -0700)]
RecordPcInfo() in GenerateStaticOrDirectCall() is misplaced on x86.
GenerateStaticOrDirectCall() is invoked in intrinsics_x86.cc and
RecordPcInfo() is already taken care of there. It should be moved
to VisitInvokeStaticOrDirect() as done in other archs.
Change-Id: Id08d84c9046e55dea9d8a8452c979294c4183150
Christopher Ferris [Fri, 17 Apr 2015 22:36:50 +0000 (22:36 +0000)]
Merge "Fix access past end of args array."
Christopher Ferris [Fri, 17 Apr 2015 20:26:09 +0000 (13:26 -0700)]
Fix access past end of args array.
Bug:
20340831
Change-Id: Ibc0995e28e74c65d81f001e5b4d1e4780ff19686
Dan Albert [Fri, 17 Apr 2015 17:32:28 +0000 (17:32 +0000)]
Merge "Fix undefined behavior in hash calculation."
Dan Albert [Thu, 16 Apr 2015 18:54:24 +0000 (11:54 -0700)]
Fix undefined behavior in hash calculation.
dex_register might be >= the width of the map hash. Shifting by that
value would be undefined behavior. Constrain the value to within the
valid range.
Change-Id: I9037c5c7ec554850ba3385585aca96fde1d50387
David Brazdil [Fri, 17 Apr 2015 17:23:27 +0000 (17:23 +0000)]
Merge "ART: Fix a failing gtest"
David Brazdil [Fri, 17 Apr 2015 17:19:30 +0000 (18:19 +0100)]
ART: Fix a failing gtest
Stricter assumptions about the state of linear scan caused a reg alloc
gtest to fail.
Change-Id: I0c568bf996ce6adefe4f000524b38acd3967421e
David Brazdil [Fri, 17 Apr 2015 16:25:16 +0000 (16:25 +0000)]
Merge "ART: Improve range search caching in LiveInterval"
David Brazdil [Thu, 16 Apr 2015 17:31:55 +0000 (18:31 +0100)]
ART: Improve range search caching in LiveInterval
Register allocator spends too long in LiveInterval queries. This patch
builds on previously introduced caching of range search results to
further speed up LiveInterval's Covers and FindIntersectionWith.
Only calls which are guaranteed to query the current->GetStart()
position are cached. Other calls are replaced with CoversSlow which
searches through the entire list of ranges.
Change-Id: I84d92b526e174caa70d6477497a06afd85016c4a
David Brazdil [Fri, 17 Apr 2015 15:07:25 +0000 (15:07 +0000)]
Merge "ART: Fix incorrect last range when adding high interval"
David Brazdil [Fri, 17 Apr 2015 14:49:51 +0000 (15:49 +0100)]
ART: Fix incorrect last range when adding high interval
Adding a high interval clones live ranges but assigns last_range from
the low interval. This should not cause any problems as last_range
is only used for constant-time GetEnd which will return the same
value for both low/high intervals.
Change-Id: Iaf242183436c8ac2f78c0aeea22cd07cd4beacc0
Zheng Xu [Fri, 17 Apr 2015 10:48:56 +0000 (18:48 +0800)]
Opt compiler: Implement parallel move resolver without using swap.
The algorithm of ParallelMoveResolverNoSwap() is almost the same with
ParallelMoveResolverWithSwap(), except the way we resolve the circular
dependency. NoSwap() uses additional scratch register to resolve the
circular dependency. For example, (0->1) (1->2) (2->0) will be performed
as (2->scratch) (1->2) (0->1) (scratch->0).
On architectures without swap register support, NoSwap() can reduce the
number of moves from 3x(N-1) to (N+1) when there is circular dependency
with N moves.
And also, NoSwap() algorithm does not depend on architecture register
layout information, which means it can support register pairs on arm32
and X/W, D/S registers on arm64 without additional modification.
Change-Id: Idf56bd5469bb78c0e339e43ab16387428a082318
Calin Juravle [Fri, 17 Apr 2015 10:03:22 +0000 (10:03 +0000)]
Merge "Cleanup unnecessary test conditions in ssa builder."
Calin Juravle [Fri, 17 Apr 2015 09:36:57 +0000 (10:36 +0100)]
Cleanup unnecessary test conditions in ssa builder.
Change-Id: Ic36e535aec3f977ebe36bfe20bc54a1033de62c6
Dan Albert [Thu, 16 Apr 2015 23:24:24 +0000 (23:24 +0000)]
Merge "Fix value used for shift in quick_cfi_test."
Mathieu Chartier [Thu, 16 Apr 2015 21:39:11 +0000 (21:39 +0000)]
Merge "Fix build"
Mathieu Chartier [Thu, 16 Apr 2015 21:34:45 +0000 (14:34 -0700)]
Fix build
art/runtime/mirror/art_method-inl.h:142: error: undefined
reference to 'art::ClassLinker::ResolveType(unsigned short,
art::mirror::ArtMethod*)'
Change-Id: I3c5d26eed13e3f8d0a4d96756c09364707b6358e
Dan Albert [Thu, 16 Apr 2015 18:52:45 +0000 (11:52 -0700)]
Fix value used for shift in quick_cfi_test.
The spill mask bit should be shifted by the register number, not the
whole register mask.
Previously this test was shifting by values well over the width of the
type, which is undefined behavior.
Change-Id: Idf750be6d95b4487f8f4570b8c7ff9dba38be9f2
Yabin Cui [Thu, 16 Apr 2015 18:35:13 +0000 (18:35 +0000)]
Merge "Remove transitive dependency on <cutils/atomic.h>."
Yabin Cui [Wed, 15 Apr 2015 22:40:18 +0000 (15:40 -0700)]
Remove transitive dependency on <cutils/atomic.h>.
Bug:
20262261
Change-Id: Ic6c2ed76e692fc09100b917e00ee9b73621ec8f0
Mathieu Chartier [Thu, 16 Apr 2015 17:23:31 +0000 (17:23 +0000)]
Merge "Disable parallel GC by default"
David Brazdil [Thu, 16 Apr 2015 17:22:19 +0000 (17:22 +0000)]
Merge "ART: Replace expensive calls to Covers in reg alloc"
David Brazdil [Thu, 16 Apr 2015 16:59:03 +0000 (17:59 +0100)]
ART: Replace expensive calls to Covers in reg alloc
LiveInterval::Covers is implemented as a linear-time search over
liveness ranges and can therefore be rather expensive and should be
avoided unless necessary. This patch replaces calls to Covers when
searching for a sibling with the cheaper IsDefinedAt call.
Change-Id: I93fc73529c15a518335f4cbdc3a0def52d9501e5
Mathieu Chartier [Thu, 16 Apr 2015 16:52:33 +0000 (16:52 +0000)]
Merge "Don't call ComputeEagerResolvedStrings"
Mathieu Chartier [Thu, 16 Apr 2015 03:03:16 +0000 (20:03 -0700)]
Don't call ComputeEagerResolvedStrings
Doesn't add any strings to the dex caches, takes 50ms on nexus 5
during image writing.
Change-Id: Ib38d456b765a90efc0008955f974446fbe285bff
Calin Juravle [Thu, 16 Apr 2015 15:53:22 +0000 (15:53 +0000)]
Merge "Remove duplicates phis created during SSA transformation"
Calin Juravle [Thu, 16 Apr 2015 11:57:19 +0000 (12:57 +0100)]
Remove duplicates phis created during SSA transformation
When creating equivalent phis we copy the inputs of the original phi
which may be improperly typed. This will be fixed during the type
propagation but as a result we may have two equivalent phis with the
same type for the same dex register. This is correct but generates more
code and prevent some optimizations.
This CL adds another step in the SSA builder to remove the extra Phi
nodes created due to equality operators.
The graph checker verifies that for a given dex register not two phis
have the same type.
Also, replace zero int constant with null constant when we compare a
reference against null.
Change-Id: Id37cc11a016ea767c7e351575e003d822a9d2e60
David Brazdil [Thu, 16 Apr 2015 15:41:52 +0000 (15:41 +0000)]
Merge "ART: Fix whitespace in test"
Calin Juravle [Thu, 16 Apr 2015 15:41:02 +0000 (15:41 +0000)]
Merge "Fallback to quick in case of soft verification errors"
David Brazdil [Thu, 16 Apr 2015 15:37:01 +0000 (16:37 +0100)]
ART: Fix whitespace in test
Change-Id: Ia17ac99868efcc7ff32ea63f72644097dd2065bf
Calin Juravle [Mon, 13 Apr 2015 17:42:21 +0000 (18:42 +0100)]
Fallback to quick in case of soft verification errors
Add a regression test: using uninitialized values triggers a soft
verification error and optimizing should not crash.
Thanks to Stephen Kyle (stephenckyle@googlemail.com) for the bug report.
Bug:
19988704
Change-Id: I67174538eed853baff735694b3ae8eb34afe2a39
David Brazdil [Thu, 16 Apr 2015 15:17:10 +0000 (15:17 +0000)]
Merge "ART: Adds a regression test for an inliner issue"
David Brazdil [Thu, 16 Apr 2015 14:42:27 +0000 (15:42 +0100)]
ART: Adds a regression test for an inliner issue
Regression test for CL Ieddadcd94135930a1f29ad64ad57349a384da07f.
Change-Id: Ibc8fd827a4b8b3d0cddf7f7590a689ec99bf1329
David Brazdil [Thu, 16 Apr 2015 14:25:55 +0000 (14:25 +0000)]
Merge "ART: Hot fix for an inliner issue"
David Brazdil [Thu, 16 Apr 2015 14:18:00 +0000 (15:18 +0100)]
ART: Hot fix for an inliner issue
Change 147130 caused a problem with duplicit instruction ids when
inlining methods with constants. This is a hot fix to unblock build.
Change-Id: Ieddadcd94135930a1f29ad64ad57349a384da07f
Nicolas Geoffray [Thu, 16 Apr 2015 13:36:44 +0000 (13:36 +0000)]
Merge "Split safepoint positions to avoid calling Covers."
Nicolas Geoffray [Thu, 16 Apr 2015 12:01:01 +0000 (13:01 +0100)]
Split safepoint positions to avoid calling Covers.
This is also in preparation for caller/callee save based
register allocation.
Change-Id: I63954bdae5ea7870568fd93b4d11e1c9dcd6de6f
David Brazdil [Thu, 16 Apr 2015 10:10:59 +0000 (10:10 +0000)]
Merge "ART: Remove DCHECKs for boolean type"
David Brazdil [Wed, 15 Apr 2015 15:29:32 +0000 (16:29 +0100)]
ART: Remove DCHECKs for boolean type
Since bool and int are interchangeable types, checking whether an
input is kPrimBoolean can fail when replaced with 0/1 constant or
a phi. This patch removes the problematic DCHECKs, adds a best-effort
verification into SSAChecker but leaves the phi case empty until a
suitable analysis is implemented.
Change-Id: I31e8daf27dd33d2fd74049b82bed1cb7c240c8c6
David Brazdil [Thu, 16 Apr 2015 09:49:55 +0000 (09:49 +0000)]
Merge "ART: Don't duplicate null/int/long constants when inlining"
David Brazdil [Thu, 16 Apr 2015 09:38:44 +0000 (10:38 +0100)]
ART: Don't duplicate null/int/long constants when inlining
Change-Id: I7e6a3393fcbbcf76b4ba2000915ba6bbbfb7c70e
Calin Juravle [Thu, 16 Apr 2015 09:40:38 +0000 (09:40 +0000)]
Merge "Revert "[optimizing] Improve x86 parallel moves/swaps""
Nicolas Geoffray [Thu, 16 Apr 2015 08:00:07 +0000 (08:00 +0000)]
Merge "Remove dead blocks for the blocks_ array."
Andreas Gampe [Thu, 16 Apr 2015 04:24:04 +0000 (04:24 +0000)]
Merge "ART: Streaming trace mode"
Andreas Gampe [Fri, 27 Feb 2015 20:49:04 +0000 (12:49 -0800)]
ART: Streaming trace mode
Add a streaming mode for tracing. Streaming uses a buffer of 16KB
and writes to the output when that buffer gets full. Streaming mode
can be enabled with -Xmethod-trace-stream and is currently not
exposed otherwise.
Add a python script that can parse the streaming format, which
simply contains strings for newly encountered threads and methods
inline, and create output that can be used with traceview.
Add Trace::Pause and Trace::Abort, which can pause and abort tracing.
Abort is different from Stop in that it does not write the data.
Add code to the zygote hooks JNI implementation that pauses tracing
before the fork, making sure that a child cannot clobber the parent's
data.
Add code to the zygote hooks JNI implementation that aborts old
tracing and starts new tracing in the child after the fork. Currently
base the output on the pid. This will not work on an unmodified
device, as the profiles directory is not generally writable, but
we do not have enough information at that point. Consider a scheme
that restarts tracing later.
Change-Id: I93c7bf87e35af582bdfdd3ecc7c52454514220dd
Mathieu Chartier [Wed, 15 Apr 2015 21:21:33 +0000 (14:21 -0700)]
Disable parallel GC by default
Not using parallel GC seems to reduce avg pauses by ~0.1s on
EvaluateAndApplyChanges. Avoiding creating the thread pool should
help app launch slightly and reduce memory ussage.
Change-Id: Iebec2a17701c76e4145b41d7c0b4f6dd17806efa
Nicolas Geoffray [Wed, 15 Apr 2015 17:22:45 +0000 (18:22 +0100)]
Remove dead blocks for the blocks_ array.
This prevents crashing because of structurally incorrect
blocks. Also we now don't need to remove its instructions.
Test case courtesy of Serguei I Katkov.
Change-Id: Ia3ef9580549fc3546e8cd5f346079b1f0ceb2a61
Guillaume Sanchez [Wed, 15 Apr 2015 18:57:27 +0000 (18:57 +0000)]
Revert "[optimizing] Improve x86 parallel moves/swaps"
This reverts commit
a5c19ce8d200d68a528f2ce0ebff989106c4a933.
This commit introduces a performance regression on CaffeineLogic of 30%.
Change-Id: I917e206e249d44e1748537bc1b2d31054ea4959d
Nicolas Geoffray [Wed, 15 Apr 2015 14:10:29 +0000 (14:10 +0000)]
Merge "Type MoveOperands."
Nicolas Geoffray [Wed, 15 Apr 2015 13:29:02 +0000 (13:29 +0000)]
Merge "Move the linear order to the HGraph."
Nicolas Geoffray [Wed, 15 Apr 2015 13:17:44 +0000 (14:17 +0100)]
Move the linear order to the HGraph.
Bug found by Zheng Xu: SsaLivenessAnalysis being a stack allocated
object, we should not refer to it in later phases of the compiler.
Specifically, the code generator was using the linear order, which
was stored in the liveness analysis object.
Change-Id: I574641f522b7b86fc43f3914166108efc72edb3b
Nicolas Geoffray [Wed, 15 Apr 2015 10:56:51 +0000 (11:56 +0100)]
Type MoveOperands.
The ParallelMoveResolver implementation needs to know if a move
is for 64bits or not, to handle swaps correctly.
Bug found, and test case courtesy of Serguei I. Katkov.
Change-Id: I9a0917a1cfed398c07e57ad6251aea8c9b0b8506
David Brazdil [Wed, 15 Apr 2015 11:53:08 +0000 (11:53 +0000)]
Merge "ART: Implement HBooleanNot instruction"
David Brazdil [Fri, 3 Apr 2015 15:02:44 +0000 (16:02 +0100)]
ART: Implement HBooleanNot instruction
Optimizations simplifying operations on boolean values (boolean
simplifier, instruction simplifier) can benefit from having a special
HInstruction for negating booleans in order to perform more transforms
and produce faster machine code.
This patch implements HBooleanNot as 'x xor 1', assuming that booleans
are 1-bit integers and allowing for a single-instruction negation on
all supported platforms.
Change-Id: I33a2649c1821255b18a86ca68ed16416063c739f
David Srbecky [Wed, 15 Apr 2015 10:15:09 +0000 (10:15 +0000)]
Merge "Do not deduplicate code if --debuggable is set."
Nicolas Geoffray [Wed, 15 Apr 2015 10:08:06 +0000 (10:08 +0000)]
Merge "Revert "Add a check in the location summary.""
Nicolas Geoffray [Wed, 15 Apr 2015 10:07:52 +0000 (10:07 +0000)]
Revert "Add a check in the location summary."
My assumption was wrong. We actually can use same as first input with any, *only if* the generate code does not clobber the first input. We use this for, e.g. DivZeroCheck, NullCheck.
This reverts commit
95bf7547986e68d4ac93b0a529aaa8eb3c998c1f.
Change-Id: Ib72d73fe580f5bc707b41c651f2c8936bd4e2407
David Srbecky [Wed, 15 Apr 2015 01:46:30 +0000 (02:46 +0100)]
Do not deduplicate code if --debuggable is set.
This ensures that the correct method is displayed in backtrace, and it
makes it possible to reliably set native breakpoints in the methods.
I assume this will also be needed for java debugging as soon as the
ArtMethod* is removed from the stackframe.
Change-Id: I289e85461c231fde2d45473bb19aff9ad5fb496d
Nicolas Geoffray [Wed, 15 Apr 2015 09:17:19 +0000 (09:17 +0000)]
Merge "Add a check in the location summary."
Nicolas Geoffray [Wed, 15 Apr 2015 09:17:03 +0000 (09:17 +0000)]
Merge "Refactor safepoints in register allocator."
Nicolas Geoffray [Tue, 14 Apr 2015 13:10:59 +0000 (14:10 +0100)]
Refactor safepoints in register allocator.
This is in preparation for adding logic around callee/caller
saved in the register allocator.
Change-Id: I4204169f0a6a01074880538833144be7b0810882
Nicolas Geoffray [Tue, 14 Apr 2015 16:05:16 +0000 (17:05 +0100)]
Add a check in the location summary.
Having SameAsFirstInput for out, and first input Any does not
make sense currently. If it's stack, we are going to overwrite
it, potentially clobbering another local. And constant does not
make sense.
Change-Id: I0ce357137487ed3dcecf4efd9922a039a2a1a29d
Vladimir Marko [Wed, 15 Apr 2015 08:28:59 +0000 (08:28 +0000)]
Merge "ARM64: Remove suspend register."
Andreas Gampe [Wed, 15 Apr 2015 05:44:30 +0000 (05:44 +0000)]
Merge "ART: More nullptr checks in unstarted runtime"
Andreas Gampe [Wed, 15 Apr 2015 05:16:14 +0000 (22:16 -0700)]
ART: More nullptr checks in unstarted runtime
More checks necessary for the compiler-driver test.
Change-Id: I29bc20d1f571df5407f9b5fca212e3e79ef9cdc7
David Srbecky [Wed, 15 Apr 2015 01:10:13 +0000 (01:10 +0000)]
Merge "Split .debug_info section to compilation units."
David Srbecky [Tue, 14 Apr 2015 00:57:43 +0000 (01:57 +0100)]
Split .debug_info section to compilation units.
This resolves old TODO in the code. It is also very important
for performance and memory usage of any tools which might be
consuming the debug data. Without this split, the tools
would be forced to decode (and probably store in memory) all of
debug data even for a simple query. With this change it should
be easy to find only the relevant compilation unit.
Change-Id: I9f285eaa01632b6adea39cae866df6f76e9d0062
Mathieu Chartier [Tue, 14 Apr 2015 22:54:07 +0000 (22:54 +0000)]
Merge "Remove suspend point from field loading"
Mathieu Chartier [Tue, 14 Apr 2015 22:43:10 +0000 (15:43 -0700)]
Remove suspend point from field loading
The error was that we had a partially constructed field array when we
got suspended by moving GC. This caused the already allocated fields
to not get updated, and be stale roots the next GC. Fixes test 125
with GSS collector.
Change-Id: I7278def915f540b6a9d12677a6ba61637f5949a2