OSDN Git Service

android-x86/art.git
9 years agoMerge "ART: New types of Checker assertions"
David Brazdil [Wed, 31 Dec 2014 16:16:29 +0000 (16:16 +0000)]
Merge "ART: New types of Checker assertions"

9 years agoART: New types of Checker assertions
David Brazdil [Fri, 19 Dec 2014 11:17:21 +0000 (11:17 +0000)]
ART: New types of Checker assertions

Checker now supports positive out-of-order assertions (CHECK-DAG),
which are useful for matching dependency graphs, and negative
assertions (CHECK-NOT) to test element removal.

ConstantFolding tests are rewritten using -DAG checks and Inliner
tests are added.

Change-Id: I5afb665f532b24683624b6d21ef4377cb441d731

9 years agoMerge "ART: Refactored VisualizerPrinter visitor pattern"
David Brazdil [Tue, 30 Dec 2014 10:36:02 +0000 (10:36 +0000)]
Merge "ART: Refactored VisualizerPrinter visitor pattern"

9 years agoMerge "Update oat version to 053."
Andreas Gampe [Mon, 29 Dec 2014 16:04:04 +0000 (16:04 +0000)]
Merge "Update oat version to 053."

9 years agoART: Refactored VisualizerPrinter visitor pattern
David Brazdil [Mon, 29 Dec 2014 15:35:02 +0000 (15:35 +0000)]
ART: Refactored VisualizerPrinter visitor pattern

This patch refactors the visitor pattern in HGraphVisualizerPrinter
to output instruction-specific details.

Change-Id: Icfed9cd844b973025337a6bb584e1bc88f1ddd58

9 years agoUpdate oat version to 053.
Chenfu Bao [Mon, 29 Dec 2014 08:10:45 +0000 (16:10 +0800)]
Update oat version to 053.

Oat version in class OatHeader had increased to 052,
but commit 2bcb3b228bc418bcc7fdc3d58d0a0da422a0b6d5
(changeID I8cef1c6cc9cb2faa052167a3437e81b4c2cbefa7)
changed it back to 045.

Change-Id: I5bf7b995c9d99a536f6356d9fd5b5e746a933f2e
Signed-off-by: Chenfu Bao <emailwrong@gmail.com>
9 years agoMerge "ART: Fix verification of constructors."
Andreas Gampe [Mon, 22 Dec 2014 21:47:15 +0000 (21:47 +0000)]
Merge "ART: Fix verification of constructors."

9 years agoMerge "ART: Fix common_compiler_test assumptions"
Andreas Gampe [Mon, 22 Dec 2014 21:45:47 +0000 (21:45 +0000)]
Merge "ART: Fix common_compiler_test assumptions"

9 years agoART: Fix common_compiler_test assumptions
Andreas Gampe [Mon, 22 Dec 2014 21:43:33 +0000 (13:43 -0800)]
ART: Fix common_compiler_test assumptions

JNI-compiled methods now do not have mapping tables or GC maps,
not even zero-sized. Update the code in common_compiler_test.

Bug: 18596910
Change-Id: If22bf1b2e369273148f060b0b1ffc02b2b1ef608

9 years agoART: Fix verification of constructors.
Stephen Kyle [Wed, 17 Dec 2014 17:10:02 +0000 (17:10 +0000)]
ART: Fix verification of constructors.

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/

9 years agoMerge "ART: Mac build fix"
Andreas Gampe [Mon, 22 Dec 2014 21:07:46 +0000 (21:07 +0000)]
Merge "ART: Mac build fix"

9 years agoART: Mac build fix
Andreas Gampe [Mon, 22 Dec 2014 21:06:44 +0000 (13:06 -0800)]
ART: Mac build fix

Unused parameter on Mac.

Bug: 18596910
Change-Id: If0fab0b58173997d584fcdce195361d792f1098d

9 years agoMerge "ART: Do not compile swap file functionality on Mac"
Andreas Gampe [Mon, 22 Dec 2014 19:33:15 +0000 (19:33 +0000)]
Merge "ART: Do not compile swap file functionality on Mac"

9 years agoART: Do not compile swap file functionality on Mac
Andreas Gampe [Fri, 19 Dec 2014 20:04:06 +0000 (12:04 -0800)]
ART: Do not compile swap file functionality on Mac

Bug: 18596910

(cherry picked from commit 8a9f0049821803051201edebc6d9a0f0639756c3)

Change-Id: Ic06429f41840ce318cfaa837efecc69c2076440e

9 years agoMerge "ART: Swap-space in the compiler"
Andreas Gampe [Mon, 22 Dec 2014 18:30:07 +0000 (18:30 +0000)]
Merge "ART: Swap-space in the compiler"

9 years agoART: Swap-space in the compiler
Andreas Gampe [Tue, 9 Dec 2014 00:59:43 +0000 (16:59 -0800)]
ART: Swap-space in the compiler

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

9 years agoMerge "ART: Do not JNI abort on nullptr GetObjectRefType"
Andreas Gampe [Mon, 22 Dec 2014 17:43:36 +0000 (17:43 +0000)]
Merge "ART: Do not JNI abort on nullptr GetObjectRefType"

9 years agoART: Do not JNI abort on nullptr GetObjectRefType
Andreas Gampe [Sat, 20 Dec 2014 08:08:35 +0000 (00:08 -0800)]
ART: Do not JNI abort on nullptr GetObjectRefType

A nullptr is a valid input, as it is different from a null reference.

Bug: 18820997
Change-Id: Ibda8907ba13b20d2055049492a356ffdf4ddc714

9 years agoMerge "ART: Use interpret-only for vmSafeMode"
Andreas Gampe [Sat, 20 Dec 2014 07:25:59 +0000 (07:25 +0000)]
Merge "ART: Use interpret-only for vmSafeMode"

9 years agoART: Use interpret-only for vmSafeMode
Andreas Gampe [Fri, 19 Dec 2014 17:53:27 +0000 (09:53 -0800)]
ART: Use interpret-only for vmSafeMode

Set the compiler filter when the zygote tells us that the app is
in vmSafeMode. This ensures that secondary dex files will also be
compiled interpret-only.

Bug: 18812762

(cherry picked from commit 44893692bfb25ceb5c7c5b2e5c606948fbdea298)

Change-Id: Idb61870beebe2eeb5b11554f95ea6a725c77f16a

9 years agoMerge "Add heap task processor"
Mathieu Chartier [Sat, 20 Dec 2014 02:01:01 +0000 (02:01 +0000)]
Merge "Add heap task processor"

9 years agoAdd heap task processor
Mathieu Chartier [Thu, 18 Dec 2014 01:56:03 +0000 (17:56 -0800)]
Add heap task processor

The heap task processor processes async tasks which may be delayed.
The motivation for this change is preventing deadlocks which
can occur when the daemon threads get suspended by GetThreadStack.

Other improvements, reduces daemon thread count by one.
Cleaner pending transition VS heap trimming logic.

Bug: 18739541

Change-Id: Idab52b2d9661a6385cada74b93ff297ddc55fc78

9 years agoMerge "Fix running out of temps when storing invoke-interface result."
Vladimir Marko [Fri, 19 Dec 2014 22:54:57 +0000 (22:54 +0000)]
Merge "Fix running out of temps when storing invoke-interface result."

9 years agoFix running out of temps when storing invoke-interface result.
Vladimir Marko [Fri, 19 Dec 2014 19:27:26 +0000 (19:27 +0000)]
Fix running out of temps when storing invoke-interface result.

On ARM, after emitting invoke-interface we didn't have any
free temps to use for storing the result, so we would crash
if the result was an unpromoted dalvik register with stack
location too far from SP.

Bug: 18769895

(cherry picked from commit d6bd06c713e8ec69de96510ef57bdf7adb4781ed)

Change-Id: Id88f6f3788eaf6ecbc7bd68880b445423f6e4f94

9 years agoMerge "Pass the real capacity to CreateRosAlloc."
Hiroshi Yamauchi [Fri, 19 Dec 2014 20:16:12 +0000 (20:16 +0000)]
Merge "Pass the real capacity to CreateRosAlloc."

9 years agoMerge "Move two members out of MIRGraph::temp_::ssa."
Vladimir Marko [Fri, 19 Dec 2014 18:17:26 +0000 (18:17 +0000)]
Merge "Move two members out of MIRGraph::temp_::ssa."

9 years agoMove two members out of MIRGraph::temp_::ssa.
Vladimir Marko [Fri, 19 Dec 2014 18:11:35 +0000 (18:11 +0000)]
Move two members out of MIRGraph::temp_::ssa.

It turns out they are used outside the SSA transformation
by the x86 back-end.

This is a partial revert of
  https://android-review.googlesource.com/120571

Change-Id: Ia5cb2988ab0625d8519901124bd4fc184d5f0886

9 years agoMerge "ART: Implement FP packed reduce for x86"
Bill Buzbee [Fri, 19 Dec 2014 17:59:51 +0000 (17:59 +0000)]
Merge "ART: Implement FP packed reduce for x86"

9 years agoMerge "Clean up dead loops before suspend check elimination."
Vladimir Marko [Fri, 19 Dec 2014 16:21:08 +0000 (16:21 +0000)]
Merge "Clean up dead loops before suspend check elimination."

9 years agoMerge "Clean up post-opt passes, perform only those we need."
Vladimir Marko [Fri, 19 Dec 2014 15:34:09 +0000 (15:34 +0000)]
Merge "Clean up post-opt passes, perform only those we need."

9 years agoClean up dead loops before suspend check elimination.
Vladimir Marko [Fri, 19 Dec 2014 10:29:51 +0000 (10:29 +0000)]
Clean up dead loops before suspend check elimination.

Get rid of BasicBlock::KillUnreachable() and just Kill()
unreachable blocks from the DFS order calculation.

Bug: 18718277
Change-Id: Icaf7b9c2320530e950f87e1e2e2bd1fa5f53cb98

9 years agoMerge "Clean up MIRGraph::CanThrow()."
Vladimir Marko [Fri, 19 Dec 2014 14:32:07 +0000 (14:32 +0000)]
Merge "Clean up MIRGraph::CanThrow()."

9 years agoClean up MIRGraph::CanThrow().
Vladimir Marko [Thu, 18 Dec 2014 17:01:02 +0000 (17:01 +0000)]
Clean up MIRGraph::CanThrow().

Merge with the code from CombineBlocks().

Change-Id: I73c71286acba1b6042f85f0bd19c525450ce9c05

9 years agoClean up post-opt passes, perform only those we need.
Vladimir Marko [Thu, 18 Dec 2014 17:05:58 +0000 (17:05 +0000)]
Clean up post-opt passes, perform only those we need.

Change-Id: If802074d780d91151d236ef52236b6f33ca47258

9 years agoMerge "Fixed CanBeMoved for field access"
Calin Juravle [Fri, 19 Dec 2014 10:51:16 +0000 (10:51 +0000)]
Merge "Fixed CanBeMoved for field access"

9 years agoFixed CanBeMoved for field access
Calin Juravle [Fri, 19 Dec 2014 10:50:19 +0000 (10:50 +0000)]
Fixed CanBeMoved for field access

Change-Id: I36a1f4a468f3701e0608d71f64d64049c54aec18

9 years agoMerge "[optimizing compiler] Add support for volatile"
Calin Juravle [Fri, 19 Dec 2014 10:11:25 +0000 (10:11 +0000)]
Merge "[optimizing compiler] Add support for volatile"

9 years ago[optimizing compiler] Add support for volatile
Calin Juravle [Tue, 16 Dec 2014 17:02:57 +0000 (17:02 +0000)]
[optimizing compiler] Add support for volatile

- for backends: arm, x86, x86_64
- added necessary instructions to assemblies
- clean up code gen for field set/get
- fixed InstructionDataEquals for some instructions
- fixed comments in compiler_enums

* 003-opcode test verifies basic volatile functionality

Change-Id: I144393efa312dfb2c332cb84056b00edffee338a

9 years agoPass the real capacity to CreateRosAlloc.
Hiroshi Yamauchi [Fri, 19 Dec 2014 05:19:24 +0000 (21:19 -0800)]
Pass the real capacity to CreateRosAlloc.

Bug: 18808732
Change-Id: Id563eb22e8d571c0ef032628b6ba2f3d357fd002

9 years agoMerge "Only dump suspend all histogram if we have samples"
Mathieu Chartier [Fri, 19 Dec 2014 02:32:37 +0000 (02:32 +0000)]
Merge "Only dump suspend all histogram if we have samples"

9 years agoOnly dump suspend all histogram if we have samples
Mathieu Chartier [Fri, 19 Dec 2014 02:24:39 +0000 (18:24 -0800)]
Only dump suspend all histogram if we have samples

Helps fix gcstress ThreadStress.

Bug: 18576985
Change-Id: Ibebc0fed8a21e7b149f4b6e5154fb86deddcc68f

9 years agoMerge "ART: Fix oatdump"
Andreas Gampe [Fri, 19 Dec 2014 01:43:30 +0000 (01:43 +0000)]
Merge "ART: Fix oatdump"

9 years agoMerge "Fix Thumb2 Emit16BitAddSub() to keep full immediate."
Vladimir Marko [Thu, 18 Dec 2014 20:02:38 +0000 (20:02 +0000)]
Merge "Fix Thumb2 Emit16BitAddSub() to keep full immediate."

9 years agoFix Thumb2 Emit16BitAddSub() to keep full immediate.
Vladimir Marko [Thu, 18 Dec 2014 19:56:49 +0000 (19:56 +0000)]
Fix Thumb2 Emit16BitAddSub() to keep full immediate.

Change-Id: I2d4b44752150669119ead16e99f7d7a945d2e88f

9 years agoMerge "Revert "Don't block quick callee saved registers for optimizing.""
Nicolas Geoffray [Thu, 18 Dec 2014 17:46:12 +0000 (17:46 +0000)]
Merge "Revert "Don't block quick callee saved registers for optimizing.""

9 years agoRevert "Don't block quick callee saved registers for optimizing."
Nicolas Geoffray [Thu, 18 Dec 2014 17:45:56 +0000 (17:45 +0000)]
Revert "Don't block quick callee saved registers for optimizing."

X64 has one libcore test failing, and codegen_test on
arm is failing.

This reverts commit 6004796d6c630696127df2494dcd4f30d1367a34.

Change-Id: I20e00431fa18e11ce4c0cb6fffa91977fa8e9b4f

9 years agoMerge "Fix Thumb2 assembler to emit 16-bit add/sub SP, #imm."
Vladimir Marko [Thu, 18 Dec 2014 15:53:02 +0000 (15:53 +0000)]
Merge "Fix Thumb2 assembler to emit 16-bit add/sub SP, #imm."

9 years agoMerge "Explicitly compile core.oat with the Quick compiler."
Nicolas Geoffray [Thu, 18 Dec 2014 15:50:20 +0000 (15:50 +0000)]
Merge "Explicitly compile core.oat with the Quick compiler."

9 years agoMerge "Don't block quick callee saved registers for optimizing."
Nicolas Geoffray [Thu, 18 Dec 2014 15:49:52 +0000 (15:49 +0000)]
Merge "Don't block quick callee saved registers for optimizing."

9 years agoDon't block quick callee saved registers for optimizing.
Nicolas Geoffray [Mon, 15 Dec 2014 00:01:18 +0000 (00:01 +0000)]
Don't block quick callee saved registers for optimizing.

This change builds on:
https://android-review.googlesource.com/#/c/118983/

- Also fix x86_64 assembler bug triggered by this change.
- Fix (and improve) x86's backend byte register usage.
- Fix a bug in baseline register allocator: a fixed
  out register must prevent inputs from allocating it.

Change-Id: I4883862e29b4e4b6470f1823cf7eab7e7863d8ad

9 years agoFix Thumb2 assembler to emit 16-bit add/sub SP, #imm.
Vladimir Marko [Tue, 16 Dec 2014 17:41:59 +0000 (17:41 +0000)]
Fix Thumb2 assembler to emit 16-bit add/sub SP, #imm.

Also allow 16-bit add rN, SP, #imm.

Change-Id: I50100ad0b0e19a1c855a2319615e86d7a2b66a69

9 years agoMerge "When inlining, also look whether we can allocate registers."
Nicolas Geoffray [Thu, 18 Dec 2014 12:59:03 +0000 (12:59 +0000)]
Merge "When inlining, also look whether we can allocate registers."

9 years agoWhen inlining, also look whether we can allocate registers.
Nicolas Geoffray [Wed, 17 Dec 2014 23:21:58 +0000 (23:21 +0000)]
When inlining, also look whether we can allocate registers.

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

9 years agoMerge "Use correct handle scope offset from StackVisitor"
Sebastien Hertz [Thu, 18 Dec 2014 08:43:14 +0000 (08:43 +0000)]
Merge "Use correct handle scope offset from StackVisitor"

9 years agoUse correct handle scope offset from StackVisitor
Sebastien Hertz [Wed, 17 Dec 2014 19:02:50 +0000 (20:02 +0100)]
Use correct handle scope offset from StackVisitor

Bug: 18785293
Change-Id: I10e144cffac00978e3c84d43a30caccd61559b27

9 years agoMerge "Cleanup JDWP event matching"
Sebastien Hertz [Thu, 18 Dec 2014 08:16:26 +0000 (08:16 +0000)]
Merge "Cleanup JDWP event matching"

9 years agoMerge "Fix a race condition during the rosalloc verification."
Hiroshi Yamauchi [Thu, 18 Dec 2014 05:34:54 +0000 (05:34 +0000)]
Merge "Fix a race condition during the rosalloc verification."

9 years agoART: Fix oatdump
Andreas Gampe [Thu, 18 Dec 2014 04:40:11 +0000 (20:40 -0800)]
ART: Fix oatdump

Refactor and modify cmdline.h to allow oatdump to run without a
Runtime.

Bug: 18789891
Change-Id: I1d7a1585e3672d04e58dbac9a4d4bd835c1c9143

9 years agoMerge "Fix concurrent GC ergonomics"
Mathieu Chartier [Thu, 18 Dec 2014 03:51:42 +0000 (03:51 +0000)]
Merge "Fix concurrent GC ergonomics"

9 years agoFix a race condition during the rosalloc verification.
Hiroshi Yamauchi [Wed, 17 Dec 2014 23:49:56 +0000 (15:49 -0800)]
Fix a race condition during the rosalloc verification.

Since an exiting thread could revoke its thread-local runs without
holding the mutator lock, when rosalloc verification is running at a
pause, the thread could concurrently modify runs and cause a race
condition/verification check failure.

Now an exiting thread acquires the mutator lock when it revokes its
thread-local runs, which should avoid the race condition.

Bug: 18734151
Bug: 18577084
Change-Id: Ic8af558b96dff6fb6f5ace65351e2824a6ff4629

9 years agoMerge "ART: Punt to the interpreter for VerifiedMethod errors"
Andreas Gampe [Thu, 18 Dec 2014 02:57:43 +0000 (02:57 +0000)]
Merge "ART: Punt to the interpreter for VerifiedMethod errors"

9 years agoART: Punt to the interpreter for VerifiedMethod errors
Andreas Gampe [Wed, 17 Dec 2014 22:35:46 +0000 (14:35 -0800)]
ART: Punt to the interpreter for VerifiedMethod errors

In case that the GC map can't be created (because of size restrictions),
do not fail the class. Instead punt to the interpreter.

Bug: 17791183

(cherry picked from commit f535c69f115c61ffadca1bd2706244d0aa30f9aa)

Change-Id: I348bb306dbfc85c235fa93c0c527fba6627551fe

9 years agoFix concurrent GC ergonomics
Mathieu Chartier [Wed, 17 Dec 2014 02:49:31 +0000 (18:49 -0800)]
Fix concurrent GC ergonomics

Fixed a race with the gc_request_pending_ boolean which would cause
two concurrent GCs to start in a row in most cases. This broke sticky
CMS ergonomics since the second GC was a sticky CMS which started way
too early resulting in low throughput. Since the throughput was low,
it switch to partial / full for the next iteration.

The race happened as follows, allocating thread would request
concurrent GC which woke up the daemon thread. The daemon thread
cleared the gc_request_pending_ boolean, but before we set the
concurrent_start_bytes_ to max in to prevent more request, the
allocating thread would call RequestConcurrentGC again. This caused
the next WaitForConcurrentGCRequest to return right away and a
concurrent GC to occur earlier than necessary.

Changed the allocation rate ergonomics to use allocation rate
during the GC instead of allocation rate inbetween GCs, this is
better since the allocation rate may become slower if the GC steals
mutator time, resulting in concurrent GCs starting a bit earlier
than they need to.

Fixed a bug in GrowForUtilization where we didn't use the adjusted
max_free when we shrank down the heap, this caused the sticky CMS to
occasionally shrink the heap more than necessary.

EvaluateAndApplyChanges:
Before: ~12.6s GC time
After: ~7.75s GC time

Change-Id: I354bc825b3c44ccfbfe867af0d437b17fe1fe022

9 years agoMerge "Add thread suspend histogram"
Mathieu Chartier [Thu, 18 Dec 2014 00:17:22 +0000 (00:17 +0000)]
Merge "Add thread suspend histogram"

9 years agoAdd thread suspend histogram
Mathieu Chartier [Wed, 17 Dec 2014 22:56:47 +0000 (14:56 -0800)]
Add thread suspend histogram

Helps measure time to suspend.
Example output (maps after a few seconds):
suspend all histogram:  Sum: 2.806ms 99% C.I. 2us-1090.560us Avg: 43.843us Max: 1126us

Change-Id: I7bd9dd3b401fb3e3059e8718556d60910e541611

9 years agoMerge "Add a new imgdiag tool to diff boot.art/core.art against a process"
Igor Murashkin [Wed, 17 Dec 2014 22:04:19 +0000 (22:04 +0000)]
Merge "Add a new imgdiag tool to diff boot.art/core.art against a process"

9 years agoMerge "Add systrace events to monitors and thread suspension"
Mathieu Chartier [Wed, 17 Dec 2014 19:13:39 +0000 (19:13 +0000)]
Merge "Add systrace events to monitors and thread suspension"

9 years agoAdd systrace events to monitors and thread suspension
Mathieu Chartier [Wed, 17 Dec 2014 18:13:30 +0000 (10:13 -0800)]
Add systrace events to monitors and thread suspension

Added systrace events to SuspendThreadByPeer, SuspendThreadByThreadId
and monitor contention.

Bug: 18379850
Bug: 17470248
Change-Id: I29eaf97c67361a6c6b437940b8729600d78696df

9 years agoMerge "JDWP: fix setting multiple breakpoints in the same method"
Sebastien Hertz [Wed, 17 Dec 2014 18:59:44 +0000 (18:59 +0000)]
Merge "JDWP: fix setting multiple breakpoints in the same method"

9 years agoMerge "Now that GraphChecker has a state, don't re-use it."
Nicolas Geoffray [Wed, 17 Dec 2014 17:13:35 +0000 (17:13 +0000)]
Merge "Now that GraphChecker has a state, don't re-use it."

9 years agoNow that GraphChecker has a state, don't re-use it.
Nicolas Geoffray [Wed, 17 Dec 2014 17:10:47 +0000 (17:10 +0000)]
Now that GraphChecker has a state, don't re-use it.

Otherwise, we'll see the same ids twice.

Change-Id: Ic9bb801629ff90cc788248528d5260aaaff73675

9 years agoJDWP: fix setting multiple breakpoints in the same method
Sebastien Hertz [Wed, 17 Dec 2014 15:35:50 +0000 (16:35 +0100)]
JDWP: fix setting multiple breakpoints in the same method

When setting multiple breakpoints in the same method, we were
incorrectly setting the deoptimization kind of all the breakpoints
set after a first breakpoint. This resulted in incorrect
deoptimization/undeoptimization and even an abort. This was caught
by running the debugger with sanity checks enabled with libartd.so.

We now set next breakpoints with the deoptimization kind of the first
existing breakpoint (if any) so we trigger right [un]deoptimization
when adding or removing a breakpoint.

Bug: 18782753
Bug: 18651686
Change-Id: Idf36ede73302fba83a154052bef701bedc8bc726

9 years agoMerge "Fix ids and remove invoke when inlining."
Nicolas Geoffray [Wed, 17 Dec 2014 16:18:23 +0000 (16:18 +0000)]
Merge "Fix ids and remove invoke when inlining."

9 years agoMerge "ART: Added Checker, a pattern matching test engine"
David Brazdil [Wed, 17 Dec 2014 16:05:08 +0000 (16:05 +0000)]
Merge "ART: Added Checker, a pattern matching test engine"

9 years agoART: Added Checker, a pattern matching test engine
David Brazdil [Mon, 1 Dec 2014 17:04:16 +0000 (17:04 +0000)]
ART: Added Checker, a pattern matching test engine

This patch adds a Python script which implements a domain-specific
mini-language similar to that of LLVM's FileCheck. It is primarily
intended for writing tests for the optimizing compiler but could be
configured for other use cases too. It is implemented from scratch in
order to avoid dependency on LLVM.

Checker tests are written in Java and dex2oat is invoked with a flag
which dumps the CFG before and after each pass of the optimizing
compiler. The output is then compared against assertions in the
test's comments parsed by Checker. See comments in tools/checker.py
for more details about the currently supported language features.

This initial CL implements only one type of assertion - whether the
output contains lines matching a desired pattern in the given order -
but supports both plain text and regex matching and allows for
equivalency testing by matching for the outcome of a previous match.
See the tests in compiler/optimizing/test/ConstantFolding.java for
examples.

Change-Id: I1ad7431b399c38dc0391ccee74d2c643ba0b0675

9 years agoMerge "Test sometimes timeouts with vogar."
Nicolas Geoffray [Wed, 17 Dec 2014 15:33:21 +0000 (15:33 +0000)]
Merge "Test sometimes timeouts with vogar."

9 years agoTest sometimes timeouts with vogar.
Nicolas Geoffray [Wed, 17 Dec 2014 15:27:14 +0000 (15:27 +0000)]
Test sometimes timeouts with vogar.

Change-Id: I9091a2a86c82173fa45ff9e3d1770d3891375546

9 years agoFix ids and remove invoke when inlining.
Nicolas Geoffray [Wed, 17 Dec 2014 10:13:46 +0000 (10:13 +0000)]
Fix ids and remove invoke when inlining.

Bugs found by Razvan Lupusoru.

Change-Id: I3a5a9af280d8700d18f52abb4a2cff0e3a9aac74

9 years agoExplicitly compile core.oat with the Quick compiler.
Nicolas Geoffray [Wed, 17 Dec 2014 12:34:15 +0000 (12:34 +0000)]
Explicitly compile core.oat with the Quick compiler.

Change-Id: Id9e301268a75f6002855c690c9324bbcbee3ed6e

9 years agoMerge "Revert "Small optimization for recursive calls: avoid dex cache.""
Nicolas Geoffray [Wed, 17 Dec 2014 12:25:25 +0000 (12:25 +0000)]
Merge "Revert "Small optimization for recursive calls: avoid dex cache.""

9 years agoRevert "Small optimization for recursive calls: avoid dex cache."
Nicolas Geoffray [Wed, 17 Dec 2014 12:25:12 +0000 (12:25 +0000)]
Revert "Small optimization for recursive calls: avoid dex cache."

Fails on target.

This reverts commit 390f59f9bec64fd81b05e796dfaeb03ab6d4cc81.

Change-Id: Ic3865b8897068ba20df0fbc2bcf561faf6c290c1

9 years agoMerge "Small optimization for recursive calls: avoid dex cache."
Nicolas Geoffray [Wed, 17 Dec 2014 11:55:20 +0000 (11:55 +0000)]
Merge "Small optimization for recursive calls: avoid dex cache."

9 years agoSmall optimization for recursive calls: avoid dex cache.
Nicolas Geoffray [Fri, 12 Dec 2014 19:22:03 +0000 (19:22 +0000)]
Small optimization for recursive calls: avoid dex cache.

Change-Id: Ic4054b6c38f0a2a530ba6ef747647f86cee0b1b8

9 years agoCleanup JDWP event matching
Sebastien Hertz [Wed, 22 Oct 2014 08:57:10 +0000 (10:57 +0200)]
Cleanup JDWP event matching

* Use std::vector for the event match list.
* Make event reporting methods void since result is never used.
* Use nullptr keyword instead of NULL.

Change-Id: Icd6f47e46cefc2cc63325df00037cd4b6a475259

9 years agoMerge "Fix typo bug for Mips32."
Andreas Gampe [Wed, 17 Dec 2014 04:18:28 +0000 (04:18 +0000)]
Merge "Fix typo bug for Mips32."

9 years agoFix typo bug for Mips32.
Douglas Leung [Wed, 17 Dec 2014 04:15:41 +0000 (20:15 -0800)]
Fix typo bug for Mips32.

Change-Id: I429038ee6748d538fa03da819777f3456a4fd9a5

9 years agoMerge "Delete gc request lock"
Mathieu Chartier [Wed, 17 Dec 2014 00:00:56 +0000 (00:00 +0000)]
Merge "Delete gc request lock"

9 years agoDelete gc request lock
Mathieu Chartier [Tue, 16 Dec 2014 23:23:00 +0000 (15:23 -0800)]
Delete gc request lock

Fixes valgrind tests.

Change-Id: I763e5709fffb002b14615ed5d08236970643e520

9 years agoMerge "Revert "Fix VM-less builds.""
Ying Wang [Tue, 16 Dec 2014 21:38:48 +0000 (21:38 +0000)]
Merge "Revert "Fix VM-less builds.""

9 years agoAdd a new imgdiag tool to diff boot.art/core.art against a process
Igor Murashkin [Thu, 13 Nov 2014 22:38:00 +0000 (14:38 -0800)]
Add a new imgdiag tool to diff boot.art/core.art against a process

Analyze the dirty memory pages of a running process per-object,
this allows is to to fine-tune the dirty object binning algorithm in
image writer.

Also:
* Factor out oatdump command line parsing code into cmdline.h
* Factor out common build rules for building variations of binaries
* Add a gtest for imgdiag

Bug: 17611661
Change-Id: I3ac852a0d223af66f6d59ae5dbc3df101475e3d0

9 years agoMerge "Remove obsolete PRODUCT_DEX_PREOPT_.*_IN_DATA"
Brian Carlstrom [Tue, 16 Dec 2014 18:53:36 +0000 (18:53 +0000)]
Merge "Remove obsolete PRODUCT_DEX_PREOPT_.*_IN_DATA"

9 years agoMerge "Fix crash in x86 disassembler."
Nicolas Geoffray [Tue, 16 Dec 2014 18:04:15 +0000 (18:04 +0000)]
Merge "Fix crash in x86 disassembler."

9 years agoMerge "[MIPSR6] Adjust assembly routines for MIPS R6 isa"
Andreas Gampe [Tue, 16 Dec 2014 16:53:04 +0000 (16:53 +0000)]
Merge "[MIPSR6] Adjust assembly routines for MIPS R6 isa"

9 years ago[MIPSR6] Adjust assembly routines for MIPS R6 isa
Duane Sand [Tue, 4 Nov 2014 19:09:36 +0000 (11:09 -0800)]
[MIPSR6] Adjust assembly routines for MIPS R6 isa

Change-Id: I771b58b9e8054bb99cd01a7f713ff8e29a9ae5d3

9 years agoRemove obsolete PRODUCT_DEX_PREOPT_.*_IN_DATA
Brian Carlstrom [Tue, 16 Dec 2014 06:10:04 +0000 (22:10 -0800)]
Remove obsolete PRODUCT_DEX_PREOPT_.*_IN_DATA

Bug: 18673991
Change-Id: I8be2f997005611b791755c8d7fa44974f1816d6b

9 years agoFix crash in x86 disassembler.
Nicolas Geoffray [Tue, 16 Dec 2014 14:54:18 +0000 (14:54 +0000)]
Fix crash in x86 disassembler.

Probably a typo from last refactoring.

Change-Id: I086a87120ca0f0dfddbe803573b0e0f79cc6d945

9 years agoMerge "Don't add or remove verifiers if aborting"
Mathieu Chartier [Tue, 16 Dec 2014 03:32:17 +0000 (03:32 +0000)]
Merge "Don't add or remove verifiers if aborting"

9 years agoDon't add or remove verifiers if aborting
Mathieu Chartier [Tue, 16 Dec 2014 03:26:29 +0000 (19:26 -0800)]
Don't add or remove verifiers if aborting

Prevents deadlock if marking verifier roots fails when we attempt to
dump the stack traces. The deadlock occurs from FindLocksAtDexPC
since this allocates a new verifier then adds / removes it from the
method_verifiers_ array.

Bug: 18651054
Change-Id: Ia9b9470ce5e4ac20bfbb39bef0283974cf487765

9 years agoMerge "Add more logging to Mutex::ExclusiveUnlock"
Mathieu Chartier [Tue, 16 Dec 2014 01:33:07 +0000 (01:33 +0000)]
Merge "Add more logging to Mutex::ExclusiveUnlock"

9 years agoAdd more logging to Mutex::ExclusiveUnlock
Mathieu Chartier [Tue, 16 Dec 2014 01:23:45 +0000 (17:23 -0800)]
Add more logging to Mutex::ExclusiveUnlock

Bug: 18713034
Change-Id: I9db5ca0a25592714ac9e292a2b8d46ef73779c8b