OSDN Git Service

android-x86/art.git
7 years agoMerge "SIMD pcmpgtb,w,d,q for x86/x86_64"
Treehugger Robot [Tue, 4 Apr 2017 17:59:09 +0000 (17:59 +0000)]
Merge "SIMD pcmpgtb,w,d,q for x86/x86_64"

7 years agoMerge "Add analyzer for dex memory map"
Treehugger Robot [Tue, 4 Apr 2017 17:13:11 +0000 (17:13 +0000)]
Merge "Add analyzer for dex memory map"

7 years agoSIMD pcmpgtb,w,d,q for x86/x86_64
Aart Bik [Mon, 3 Apr 2017 21:09:01 +0000 (14:09 -0700)]
SIMD pcmpgtb,w,d,q for x86/x86_64

Rationale:
Enables fast compare gt.

Test: assembler_x86[_64]_test
Change-Id: I0a069649480529f3fec2c2b100e2aaaa2cd79820

7 years agoAdd analyzer for dex memory map
David Sehr [Fri, 31 Mar 2017 00:50:24 +0000 (17:50 -0700)]
Add analyzer for dex memory map

Use libpagemap to process vdex pages that are resident in memory.
Walks over each vdex file mapping in a given pid, processing in one of
two ways.

Using the -s (summarize) option gives, e.g.:

MAPPING /system/framework/arm64/boot.vdex: 7e90133000-7e90641000
DEX classes.dex: 7e90133000-7e90608000
Section name                resident     total % of   % of
                               pages     pages sect.  total
Header                             0         0   0.00   0.00
AnnotationSetReferenceItem         0         0   0.00   0.00
StringId                           1        33   3.03   0.08
TypeId                             0         4   0.00   0.00
ProtoId                            1        21   4.76   0.08
FieldId                            0        25   0.00   0.00
MethodId                           2        69   2.90   0.16
ClassDef                           0        26   0.00   0.00
AnnotationSetItem                  0        13   0.00   0.00
CodeItem                           1       555   0.18   0.08
AnnotationsDirectoryItem           0        34   0.00   0.00
TypeList                           0        10   0.00   0.00
StringData                         2       174   1.15   0.16
DebugInfo                          0       175   0.00   0.00
AnnotationItem                     0        29   0.00   0.00
EncodedArrayItem                   0         3   0.00   0.00
ClassData                          0        59   0.00   0.00
GRAND TOTAL                        7      1230          0.57

Using the -v (verbose) option gives, e.g.:

MAPPING /system/framework/arm64/boot.vdex: 7e90133000-7e90641000
DEX classes.dex: 7e90133000-7e90608000
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
STTTTPPPPPPP.PPPPPPPPPPPPPPFFFFF
FFF.FFFF.F.F.FFFF...MMMMMMMMMMMM
MMMMMMMM.MM.....MMMMMMMMMMM..MMM
.M.MMM..MMMM.MMMMMMMMMMM.CCCCCCC
CCCCCCCCCCC.C.CCCCCC22.2........
.XX...XXX..XXXXXXX.............X
.XXXX......XXXXX..XXXX.XXXX..XXX
.............X..XX....X.XXXX....
..X....X...X..X..XXX.XXXXX.XXX.X
X.X.X..........X.X...........XXX
X...............................
.......X.....................XXX
..XX...XX.....X............XX.X.
.....XXXX......X.X..X...........
.XXXXXXX..XXXXXXXX..............
......XXXX...XX...XX..XXXX...X..
.......................X........
.......................X.XX..XX.
X...........X.X.X.X.............
X.....XXX..........XXXXX.XX.XX.X
XXXXX...........................
............X.................X.
X..............4....4...........
............4.tttttttttts...sss.
.ss.ss..s.ss.sssssss.sssssssssss
ssssssssssssssssssssssssssssssss
ssssssssssssssssssss.ss...ssss.s
ssssssssssssssssssssssssssssssss
ssssssssssssssssssssssssssssssss
sssssssss..DD.DD...DD...........
............D...................
................................
...................D.....DD.....
...........................D.D..
.D........................3...3.
......................EEE.c..ccc
.cc.ccc.c.c.....c.cc.ccc..c.....
.c...ccc.cc.ccc......

Where the letters indicate a page of a particular dex file section are
resident in memory and '.' indicates a page is not resident.

Bug: 35800981
Test: dexdiag <pid>
Change-Id: Ib4662fe499ad82d4f0baace2affab0d56f0890c9

7 years agoMerge "Allow -Xjitsaveprofilinginfo for system server"
Treehugger Robot [Tue, 4 Apr 2017 03:11:33 +0000 (03:11 +0000)]
Merge "Allow -Xjitsaveprofilinginfo for system server"

7 years agoAllow -Xjitsaveprofilinginfo for system server
Mathieu Chartier [Fri, 31 Mar 2017 21:49:09 +0000 (14:49 -0700)]
Allow -Xjitsaveprofilinginfo for system server

setenforce 0 is still required to prevent selinux violations.

Test: adb shell setprop dalvik.vm.extra-opts "'-Xusejit:false -Xint -Xjitsaveprofilinginfo'" && adb shell start

Bug: 34927277
Bug: 36457259

(cherry picked from commit 449f0589c8c8572e32c57befee089123e9eea1ba)

Change-Id: I644cefe8aebf9ff47dc736eda8143d2f6258c324

7 years agoMerge "Dump profile logs after the last save"
Calin Juravle [Tue, 4 Apr 2017 00:50:09 +0000 (00:50 +0000)]
Merge "Dump profile logs after the last save"

7 years agoMerge "Make base64 explicitly check dst_size for nullptr"
Treehugger Robot [Mon, 3 Apr 2017 22:09:26 +0000 (22:09 +0000)]
Merge "Make base64 explicitly check dst_size for nullptr"

7 years agoMerge "MIPS64: Add ldi.df MSA instruction"
Aart Bik [Mon, 3 Apr 2017 21:42:11 +0000 (21:42 +0000)]
Merge "MIPS64: Add ldi.df MSA instruction"

7 years agoMerge "Add a cpplint preupload hook."
Treehugger Robot [Mon, 3 Apr 2017 19:52:18 +0000 (19:52 +0000)]
Merge "Add a cpplint preupload hook."

7 years agoMerge "ART: TI Agent test library refactor"
Treehugger Robot [Mon, 3 Apr 2017 17:52:12 +0000 (17:52 +0000)]
Merge "ART: TI Agent test library refactor"

7 years agoAdd a cpplint preupload hook.
Alex Light [Fri, 31 Mar 2017 16:20:02 +0000 (09:20 -0700)]
Add a cpplint preupload hook.

This runs cpplint.py over modified .cc and .h files before uploading
them to gerrit. This generally takes ~1-2 seconds based on my testing
and the longest one I've been able to find was ~10 seconds.

Test: PREUPLOAD_COMMIT=d9911eeca ./tools/cpplint_presubmit.py
Test: PREUPLOAD_COMMIT=405284789 ./tools/cpplint_presubmit.py
Test: PREUPLOAD_COMMIT=9763f2eb7 ./tools/cpplint_presubmit.py
Test: Manual

Bug: 35810246
Bug: 36855589

Change-Id: Ie0ed9136bdde15d78f2aa40c73fef97e12d12dda

7 years agoMake base64 explicitly check dst_size for nullptr
Alex Light [Mon, 27 Mar 2017 17:15:27 +0000 (10:15 -0700)]
Make base64 explicitly check dst_size for nullptr

Also moved it out of utils.h and into common_runtime_test.h since it
is only used for tests.

Test: ./test.py --host -j40
Change-Id: Ib3c18cb510be833928482c0b2f47f9fb02933f7f

7 years agoMerge "ART vectorizer."
Aart Bik [Mon, 3 Apr 2017 17:05:52 +0000 (17:05 +0000)]
Merge "ART vectorizer."

7 years agoMerge "Make GetSortedDexFileSections a utility"
Treehugger Robot [Mon, 3 Apr 2017 16:36:01 +0000 (16:36 +0000)]
Merge "Make GetSortedDexFileSections a utility"

7 years agoMerge "SIMD pavgb,w for x86/x86_64"
Aart Bik [Mon, 3 Apr 2017 15:59:09 +0000 (15:59 +0000)]
Merge "SIMD pavgb,w for x86/x86_64"

7 years agoMerge "ARM64: Faster forwarding address check in mark entrypoints."
Vladimir Marko [Mon, 3 Apr 2017 12:21:33 +0000 (12:21 +0000)]
Merge "ARM64: Faster forwarding address check in mark entrypoints."

7 years agoMerge "Kill logd in buildbot-setup.sh."
Nicolas Geoffray [Mon, 3 Apr 2017 09:26:57 +0000 (09:26 +0000)]
Merge "Kill logd in buildbot-setup.sh."

7 years agoMake GetSortedDexFileSections a utility
David Sehr [Fri, 31 Mar 2017 00:50:24 +0000 (17:50 -0700)]
Make GetSortedDexFileSections a utility

Make this method a utility in preparation for other users outside
dexlayout.

Bug: 35800981
Test: make -j 40 test-art-host
Change-Id: I054c1e1c82834a0c94be6b9ee63d1992fa9f52df

7 years agoKill logd in buildbot-setup.sh.
Nicolas Geoffray [Sun, 2 Apr 2017 20:03:33 +0000 (21:03 +0100)]
Kill logd in buildbot-setup.sh.

The daemon seems to leak on fugu with Android N.

Change-Id: I07202c0a6ce644e313c310e0592e3e0d58d158a0

7 years agoART: TI Agent test library refactor
Andreas Gampe [Fri, 31 Mar 2017 19:49:07 +0000 (12:49 -0700)]
ART: TI Agent test library refactor

More refactoring, lowering the reliance on ART-provided functionality
and adding a library that includes all the code that can run without
ART.

Bug: 32072923
Test: m test-art-host
Change-Id: I67d84056a6fd7722c58855fccbdea3f6869b2efb

7 years agoSIMD pavgb,w for x86/x86_64
Aart Bik [Fri, 31 Mar 2017 22:11:53 +0000 (15:11 -0700)]
SIMD pavgb,w for x86/x86_64

Rationale:
Break-out CL of ART Vectorizer.
Enables fast halving add with rounding

Bug: 34083438
Test: assembler_x86[_64]_test
Change-Id: I09173376b803d671a6b05a33e630f45f778cea52

7 years agoMerge "Clean up ArtClassDefinition"
Alex Light [Fri, 31 Mar 2017 21:50:14 +0000 (21:50 +0000)]
Merge "Clean up ArtClassDefinition"

7 years agoART vectorizer.
Aart Bik [Mon, 6 Feb 2017 23:35:29 +0000 (15:35 -0800)]
ART vectorizer.

Rationale:
Make SIMD great again with a retargetable and easily extendable vectorizer.

Provides a full x86/x86_64 and a proof-of-concept ARM implementation. Sample
improvement (without any perf tuning yet) for Linpack on x86 is about 20% to 50%.

Test: test-art-host, test-art-target (angler)
Bug: 3408343830933338

Change-Id: Ifb77a0f25f690a87cd65bf3d5e9f6be7ea71d6c1

7 years agoMerge "Lower daemons priority to 124 (art)."
Hiroshi Yamauchi [Fri, 31 Mar 2017 17:37:51 +0000 (17:37 +0000)]
Merge "Lower daemons priority to 124 (art)."

7 years agoMerge "ART: Refactor JVMTI run tests"
Treehugger Robot [Fri, 31 Mar 2017 16:57:34 +0000 (16:57 +0000)]
Merge "ART: Refactor JVMTI run tests"

7 years agoClean up ArtClassDefinition
Alex Light [Thu, 30 Mar 2017 22:17:01 +0000 (15:17 -0700)]
Clean up ArtClassDefinition

This struct was somewhat messy. Clean it up and consolidate functions
into it.

Bug: 31455788
Test: ./test.py --host -j40

Change-Id: Ia3abe92dcf3313677de5e200f673252f8e41d69e

7 years agoMIPS64: Add ldi.df MSA instruction
Goran Jakovljevic [Fri, 31 Mar 2017 12:38:20 +0000 (14:38 +0200)]
MIPS64: Add ldi.df MSA instruction

Also fixes RepeatTemplatedRegisterImmBits template.

Test: mma test-art-host-gtest

Change-Id: Ib23f8a65ba924623f8c3a2d75d4ec4491d18feb0

7 years agoARM64: Faster forwarding address check in mark entrypoints.
Vladimir Marko [Fri, 31 Mar 2017 09:55:41 +0000 (10:55 +0100)]
ARM64: Faster forwarding address check in mark entrypoints.

Bug: 12687968
Test: testrunner.py --target
Change-Id: I352971ddf8f574e600c054cf2b4c0a973d20f829

7 years agoMerge "Change thread suspend timeout to be fatal for non-debug"
Mathieu Chartier [Fri, 31 Mar 2017 03:17:06 +0000 (03:17 +0000)]
Merge "Change thread suspend timeout to be fatal for non-debug"

7 years agoMerge "Re-enable test 983 with speed-profile"
Treehugger Robot [Fri, 31 Mar 2017 01:38:38 +0000 (01:38 +0000)]
Merge "Re-enable test 983 with speed-profile"

7 years agoART: Refactor JVMTI run tests
Andreas Gampe [Thu, 30 Mar 2017 17:26:59 +0000 (10:26 -0700)]
ART: Refactor JVMTI run tests

In preparation for code deduplication with CTS.

Bug: 32072923
Test: m
Change-Id: Ibbe005c94252bd29eae7f88aad301b0b20ddb80d

7 years agoDump profile logs after the last save
Calin Juravle [Thu, 30 Mar 2017 23:31:23 +0000 (16:31 -0700)]
Dump profile logs after the last save

The DumpInfo statement did not capture the last profile save.

Also, update -Xps-min-methods-to-save and -Xps-min-classes-to-save in
the art script. A value of 0 will attempt to write the profile even if
no method has been profiles and that's useless.

Test: ./out/host/linux-x86/bin/art --profile --64 -Ximage:$PWD/out/host/linux-x86/framework/core.art -Xusejit:true -Xcompiler-option --compiler-filter=speed-profile -Xcompiler-option --compiler-backend=Optimizing -verbose:oat -Djava.library.path=$PWD/out/x86_64/host/linux-x86/lib64 -cp $PWD/generated/benchmarks.dex benchmarks.ExoPlayerBench.java.ExoPlayerBench

Change-Id: I5927ab87d7c134c271fbc252e62fdc03ab02a255

7 years agoRe-enable test 983 with speed-profile
Alex Light [Thu, 30 Mar 2017 23:31:19 +0000 (16:31 -0700)]
Re-enable test 983 with speed-profile

We make sure to fixup dex files in all situations before passing it to
JVMTI agents. This means that dexlayout won't break this test anymore.

Test: stress --cpu 60; \
      while ./test/run-test --host --random-profile 983; do; done

Change-Id: I047ffcbbba51db4c7bf5c22e482bd5864bc8b6d1

7 years agoMerge "(Re)enable the use of inline caches in AOT"
Calin Juravle [Thu, 30 Mar 2017 23:17:38 +0000 (23:17 +0000)]
Merge "(Re)enable the use of inline caches in AOT"

7 years agoMerge "Update profile version"
Calin Juravle [Thu, 30 Mar 2017 23:17:19 +0000 (23:17 +0000)]
Merge "Update profile version"

7 years agoMerge "ART: Fix VISIT_OBJECTS and ABORT for FollowReferences"
Treehugger Robot [Thu, 30 Mar 2017 22:22:07 +0000 (22:22 +0000)]
Merge "ART: Fix VISIT_OBJECTS and ABORT for FollowReferences"

7 years agoUpdate profile version
Calin Juravle [Wed, 29 Mar 2017 23:50:25 +0000 (16:50 -0700)]
Update profile version

I forgot to do it in cea9e9d26c32372ec8c75e6c89b1bfc08c5e1911. This will
force regeneration of possibly faulty profiles.

Test: m test-art-host
Bug: 36371709
Change-Id: I476c97005b6c17a22c57117c06028a2371276326

7 years agoLower daemons priority to 124 (art).
Hiroshi Yamauchi [Wed, 29 Mar 2017 21:47:49 +0000 (14:47 -0700)]
Lower daemons priority to 124 (art).

To avoid jank.

(chery picked from commit 38a57ef702964b82836f89a1f996aff4d1453d94)

Bug: 36631902
Test: boot marlin oc-dev and check priorities.
Test: test-art-host
Change-Id: I8f809fbf5ac9605f656884fcf68643c87f22d154

7 years agoART: Fix VISIT_OBJECTS and ABORT for FollowReferences
Andreas Gampe [Thu, 30 Mar 2017 00:58:28 +0000 (17:58 -0700)]
ART: Fix VISIT_OBJECTS and ABORT for FollowReferences

If a root report does not set VISIT_OBJECTS, the referree should
not be added to the worklist.

Whenever an ABORT is requested, do not report the remaining roots.

Bug: 36727422
Test: art/test.py --host -t 913
Change-Id: I942559f6ab356fe2573a3a9bb88b2662cd5b23d0

7 years agoMerge "Dedup original dex file for classes transformed on first load."
Treehugger Robot [Thu, 30 Mar 2017 17:42:36 +0000 (17:42 +0000)]
Merge "Dedup original dex file for classes transformed on first load."

7 years agoMerge "Revert^2 "Improve user-friendliness of art script.""
Orion Hodson [Thu, 30 Mar 2017 12:38:32 +0000 (12:38 +0000)]
Merge "Revert^2 "Improve user-friendliness of art script.""

7 years agoRevert^2 "Improve user-friendliness of art script."
Orion Hodson [Tue, 28 Mar 2017 07:27:23 +0000 (08:27 +0100)]
Revert^2 "Improve user-friendliness of art script."

Fixes quoting for mksh for arguments with whitespace.

Test: art/tools/run-jdwp-tests.sh --mode=device
Change-Id: I0b8983a0c0ebcc1b64ad943859fbb85d3774ab75

7 years agoMerge "Do more GCs for test 141"
Treehugger Robot [Thu, 30 Mar 2017 02:50:50 +0000 (02:50 +0000)]
Merge "Do more GCs for test 141"

7 years agoMerge "Refactor image writer"
Treehugger Robot [Thu, 30 Mar 2017 02:04:51 +0000 (02:04 +0000)]
Merge "Refactor image writer"

7 years agoMerge "Update deopt statements in 638-checker-inline-caches"
Calin Juravle [Thu, 30 Mar 2017 01:25:35 +0000 (01:25 +0000)]
Merge "Update deopt statements in 638-checker-inline-caches"

7 years agoDedup original dex file for classes transformed on first load.
Alex Light [Thu, 30 Mar 2017 00:18:00 +0000 (17:18 -0700)]
Dedup original dex file for classes transformed on first load.

We set the originalDexFile field to a native pointer to the
art::DexFile (as a boxed Long). In the case where there were no
non-can_retransform_classes agents this DexFile will be owned by the
transformed classes ClassLoader and is guaranteed to be valid for as
long as the Class is. This means we can simply keep track of that
pointer to hold onto the original Dex file.

Test: ./test.py --host -j40
Bug: 31455788
Change-Id: I0e5a74f20f86d32dc73babe64b81469b3155c4dd

7 years agoDo more GCs for test 141
Mathieu Chartier [Thu, 30 Mar 2017 00:09:30 +0000 (17:09 -0700)]
Do more GCs for test 141

Try to prevent rare race conditions that could cause the class loader
to not be unloaded.

Bug: 36377932
Test: test/testrunner/testrunner.py --host -t 141

Change-Id: I9429350b73c241478d474af37262576a512cc6a6

7 years agoMerge "Downgrade another duplicate method DCHECK to WARNING"
Treehugger Robot [Wed, 29 Mar 2017 23:54:56 +0000 (23:54 +0000)]
Merge "Downgrade another duplicate method DCHECK to WARNING"

7 years agoRefactor image writer
Mathieu Chartier [Mon, 6 Mar 2017 20:35:10 +0000 (12:35 -0800)]
Refactor image writer

Aim to have common functions for copying references and pointers.
Required for adding support for faster image fixups.

Test: test-art-host -j32

Bug: 34927277
Bug: 34928633
Change-Id: Ia654efc483b332eea3535570496bfeccd7c635ee

7 years ago(Re)enable the use of inline caches in AOT
Calin Juravle [Tue, 28 Mar 2017 22:31:44 +0000 (15:31 -0700)]
(Re)enable the use of inline caches in AOT

Test: m test-art-host (638-checker-inline-caches, 644-checker-deopt)
Bug: 36371709
Change-Id: Ic6e1b58845e7f7107be5a7041c47c44702af7b02

7 years agoUpdate deopt statements in 638-checker-inline-caches
Calin Juravle [Wed, 29 Mar 2017 23:17:53 +0000 (16:17 -0700)]
Update deopt statements in 638-checker-inline-caches

Test: m test-art-host-638-checker-inline-caches after inline
      caches have been activated
Bug: 36371709
Change-Id: I8378b0027a94bda89097fb0d3081e9184069643d

7 years agoMerge "Undo dex2dex compilation before invoking LoadHook"
Treehugger Robot [Wed, 29 Mar 2017 21:56:07 +0000 (21:56 +0000)]
Merge "Undo dex2dex compilation before invoking LoadHook"

7 years agoMerge "Layout string data"
Mathieu Chartier [Wed, 29 Mar 2017 21:44:43 +0000 (21:44 +0000)]
Merge "Layout string data"

7 years agoMerge "Change Ti::Agent collection from vector to List"
Treehugger Robot [Wed, 29 Mar 2017 19:37:40 +0000 (19:37 +0000)]
Merge "Change Ti::Agent collection from vector to List"

7 years agoDowngrade another duplicate method DCHECK to WARNING
Alex Light [Wed, 29 Mar 2017 18:33:19 +0000 (11:33 -0700)]
Downgrade another duplicate method DCHECK to WARNING

This DCHECK got missed when writing change
'Ib26f30718726a9064056855192cef302f3df1eeb'. This is also caused by
duplicate methods in dex files causing some ArtMethod's to appear in
vtables more than once.

Bug: 32549051
Bug: 32546154
Bug: 36446088
Bug: 36399552

Test: ./test/testrunner/testrunner.py --host -j40
Change-Id: Id8ef07d7185958a91f008c2297db96c090dbecd7

7 years agoUndo dex2dex compilation before invoking LoadHook
Alex Light [Tue, 28 Mar 2017 16:07:36 +0000 (09:07 -0700)]
Undo dex2dex compilation before invoking LoadHook

We need to undo any dex_to_dex compilation that might have taken place
before passing a dex file to any registered ClassFileLoadHooks to
ensure that no internal opcodes are present in any methods.

Test: ./test.py --host -j40
Bug: 36653594

Change-Id: Ia42c77312e685d69f6b3ea764fad01710b10ab45

7 years agoMerge "Gracefully handle bogus profiling info for inline caches."
Calin Juravle [Wed, 29 Mar 2017 18:17:04 +0000 (18:17 +0000)]
Merge "Gracefully handle bogus profiling info for inline caches."

7 years agoMerge "Fix profile merges in profman"
Calin Juravle [Wed, 29 Mar 2017 18:12:39 +0000 (18:12 +0000)]
Merge "Fix profile merges in profman"

7 years agoLayout string data
Mathieu Chartier [Mon, 27 Mar 2017 22:43:54 +0000 (15:43 -0700)]
Layout string data

Inspect dex code in class initializers and hot methods to find out
what const strings are likely to be resolved. Along with these,
look at static field accesses and group the field name and type with
other hot strings.

Group method shorties together.

Maps vdex PSS: 7478k -> 6900k
No change in odex PSS.

Changed dexlayout_test to use -v instead of comparing to a hex
output.

Bug: 36457259
Bug: 35800981

Test: test-art-host

Change-Id: Iaa5de649c5b2b1d9f178525d2f42fe00e3fb879f

7 years agoChange Ti::Agent collection from vector to List
Alex Light [Wed, 29 Mar 2017 17:40:15 +0000 (10:40 -0700)]
Change Ti::Agent collection from vector to List

We want these to be in a list to avoid the need for moving them
around, which would introduce the need to perform annoying accounting.

Test: ./test.py --host -j40
Bug: 36716572
Bug: 31455788
Change-Id: Ie16523f4e7d79934fa7844fb9b9a26e125cfa9eb

7 years agoMerge "ART: Fix ObjectFree reporting"
Treehugger Robot [Wed, 29 Mar 2017 16:33:34 +0000 (16:33 +0000)]
Merge "ART: Fix ObjectFree reporting"

7 years agoMerge "ART: Fix GetThreadInfo"
Treehugger Robot [Wed, 29 Mar 2017 14:57:48 +0000 (14:57 +0000)]
Merge "ART: Fix GetThreadInfo"

7 years agoMerge "Performance improvements in invoke-polymorphic runtime support"
Orion Hodson [Wed, 29 Mar 2017 14:03:19 +0000 (14:03 +0000)]
Merge "Performance improvements in invoke-polymorphic runtime support"

7 years agoPerformance improvements in invoke-polymorphic runtime support
Orion Hodson [Tue, 21 Mar 2017 10:04:12 +0000 (10:04 +0000)]
Performance improvements in invoke-polymorphic runtime support

Fineses the runtime support for invoke-polymorphic to improve
MethodHandle benchmark measurements by an average of 14%.

- Faster conversion checks for non-exact invokes.
- Avoid conversion checks for CallerTransformers and Transforms.
- Fast path for exact invokes avoiding conversion checks.
- Use cheaper constructs where possible.

Most of these changes are driven by simulation in callgrind.

Bug: 30550796
Test: m test-art-host
Change-Id: I38722b0d41db8e528f2730a826b1710b9fd1f6a9

7 years agoMerge "MIPS: Implement read barriers."
Treehugger Robot [Wed, 29 Mar 2017 11:11:52 +0000 (11:11 +0000)]
Merge "MIPS: Implement read barriers."

7 years agoMIPS: Implement read barriers.
Alexey Frunze [Fri, 10 Feb 2017 03:08:30 +0000 (19:08 -0800)]
MIPS: Implement read barriers.

This is the core functionality. Further improvements
will be done separately.

This also adds/moves memory barriers where they belong and
removes the UnsafeGetLongVolatile and UnsafePutLongVolatile
MIPS32 intrinsics as they need to load/store a pair of
registers atomically, which is not supported directly by
the CPU.

Test: booted MIPS32R2 in QEMU
Test: test-art-target-run-test
Test: booted MIPS64 (with 2nd arch MIPS32R6) in QEMU
Test: "testrunner.py --target --optimizing -j1"
Test: same MIPS64 boot/test with ART_READ_BARRIER_TYPE=TABLELOOKUP
Test: "testrunner.py --target --optimizing --32 -j2" on CI20
Test: same CI20 test with ART_READ_BARRIER_TYPE=TABLELOOKUP

Change-Id: I0ff91525fefba3ec1cc019f50316478a888acced

7 years agoART: Fix ObjectFree reporting
Andreas Gampe [Wed, 29 Mar 2017 03:12:13 +0000 (20:12 -0700)]
ART: Fix ObjectFree reporting

Free events should not be dispatched to all registered envs. They
are specific to the env that the tag came from.

Add a DispatchEvent that takes an env, add an env field to the
tagging table, and connect the two.

Update the stress test. Make it actually work with a tagging
function for the second env.

Bug: 36648696
Test: ./test.py --host -r -t 905
Change-Id: I485ef1a6a57e233a2c2128b30cae93532676b3bf

7 years agoMerge "Incorporate random profile tests into run-test."
Treehugger Robot [Wed, 29 Mar 2017 00:48:35 +0000 (00:48 +0000)]
Merge "Incorporate random profile tests into run-test."

7 years agoART: Fix GetThreadInfo
Andreas Gampe [Wed, 29 Mar 2017 00:28:32 +0000 (17:28 -0700)]
ART: Fix GetThreadInfo

Fix the retrieval of the context classloader. Make sure to have
the field from the Thread class, don't look into a subclass.

Add caching for the field. Also fix the usage restriction of the
function, which is only valid during the Live phase.

Bug: 36654185
Test: ./test.py --host -r -t 924
Change-Id: I5cce41b31c32e59c80bb7c3afa03e8b0975ec54e

7 years agoFix profile merges in profman
Calin Juravle [Fri, 24 Mar 2017 02:04:59 +0000 (19:04 -0700)]
Fix profile merges in profman

profman used ProfileCompilationInfo::Load() which was not preserving the
correct order of the dex files (in a multidex profile).

The CL fixes profman to use ProfileCompilationInfo::MergeWith which
guarantees the right dex order and redesigns profile storage to avoid
such mistakes in the future. Instead of keeping data in a map indexed by
the profile key, store it in a vector whose index match profile_index.
This way, any iteration over profile info becomes deterministic with
respect to the profile index of the dex files.

Test: m test-art-host-gtest-profile_assistant_test
      m test-art-host-gtest-profile_compilation_info_test
      profile YouTube.apk and compile it based on the reference profile
(failing before)

Bug: 36371709
Change-Id: Ideda1336e5aff59a7c5560429da645fe02c804c9

7 years agoMerge "Fix lock order for jvmti kTaggingLockLevel"
Mathieu Chartier [Tue, 28 Mar 2017 23:41:08 +0000 (23:41 +0000)]
Merge "Fix lock order for jvmti kTaggingLockLevel"

7 years agoGracefully handle bogus profiling info for inline caches.
Nicolas Geoffray [Fri, 17 Mar 2017 13:08:26 +0000 (13:08 +0000)]
Gracefully handle bogus profiling info for inline caches.

Test: 643-checker-bogus-ic
Bug: 36371709
Change-Id: I2a52ac67a45a6bb5ddefb053a35e6edf5bc2da2f

7 years agoMerge "Add --profile mode to the art script"
Calin Juravle [Tue, 28 Mar 2017 21:35:32 +0000 (21:35 +0000)]
Merge "Add --profile mode to the art script"

7 years agoFix lock order for jvmti kTaggingLockLevel
Mathieu Chartier [Tue, 28 Mar 2017 19:59:38 +0000 (12:59 -0700)]
Fix lock order for jvmti kTaggingLockLevel

Add test for duplicate env free order.

Bug: 36648696

Test: ./test.py --host

Change-Id: I76fc8187b29f5e66cc29674320e887dbc508fe19

7 years agoIncorporate random profile tests into run-test.
Jeff Hao [Mon, 27 Mar 2017 23:23:08 +0000 (16:23 -0700)]
Incorporate random profile tests into run-test.

Uses profman to generate random profiles to pass into run-test.
Adds a new COMPILER_TYPE "speed-profile" to the build.

Bug: 36107940
Test: mm test-art-host
Change-Id: I00463f59ccbd9ffa4ddff097314374aede0d47c7

7 years agoMerge "Add profman option to generate a random profile based on dex files."
Treehugger Robot [Tue, 28 Mar 2017 19:39:16 +0000 (19:39 +0000)]
Merge "Add profman option to generate a random profile based on dex files."

7 years agoAdd --profile mode to the art script
Calin Juravle [Fri, 17 Mar 2017 02:58:26 +0000 (19:58 -0700)]
Add --profile mode to the art script

--profile will run dalvikmvm twice. The first run records the profile by
replacing the compiler filter with interpret-only and enabling profile
saving. The second run will pass the recorded profile to dex2oat using
'-Xcompiler-option --profile-file=...'.

Test: ./out/host/linux-x86/bin/art --profile --64 -Ximage:$PWD/out/host/linux-x86/framework/core.art -Xusejit:true -Xcompiler-option --compiler-filter=speed -Xcompiler-option --compiler-backend=Optimizing -verbose:oat -Djava.library.path=$PWD/out/x86_64/host/linux-x86/lib64 -cp $PWD/generated/benchmarks.dex benchmarks.ExoPlayerBench.java.ExoPlayerBench

Bug: 36032648
Change-Id: I2dbcae43dd2972273511df9e01ebcbdfb1d84372

7 years agoMerge "Add test to verify dex file passed to agent"
Treehugger Robot [Tue, 28 Mar 2017 18:30:39 +0000 (18:30 +0000)]
Merge "Add test to verify dex file passed to agent"

7 years agoAdd profman option to generate a random profile based on dex files.
Jeff Hao [Mon, 27 Mar 2017 22:50:37 +0000 (15:50 -0700)]
Add profman option to generate a random profile based on dex files.

Extends --generate-test-profile to make a randomized profile based on a
set of dex files. Will randomly incorporate classes and methods from all
the dex files given. Can be given a random seed for reproducibility.

Bug: 36107940
Test: mm test-art-host-gtest-profile_assistant_test
Change-Id: Ib0e54bde5317439516a39afa41c3c9980834fa54

7 years agoMerge "Close the right fd in native_stack_dump"
Calin Juravle [Tue, 28 Mar 2017 17:47:55 +0000 (17:47 +0000)]
Merge "Close the right fd in native_stack_dump"

7 years agoMerge "Fix return value of AtomicMethodRefMap::Get()"
Calin Juravle [Tue, 28 Mar 2017 17:47:43 +0000 (17:47 +0000)]
Merge "Fix return value of AtomicMethodRefMap::Get()"

7 years agoMerge "Fix arm64 and x86_64 code generator assertion"
Calin Juravle [Tue, 28 Mar 2017 17:47:25 +0000 (17:47 +0000)]
Merge "Fix arm64 and x86_64 code generator assertion"

7 years agoMerge "MIPS64: Add vector registers to Mips64ManagedRegister class"
Aart Bik [Tue, 28 Mar 2017 17:09:28 +0000 (17:09 +0000)]
Merge "MIPS64: Add vector registers to Mips64ManagedRegister class"

7 years agoAdd test to verify dex file passed to agent
Alex Light [Mon, 27 Mar 2017 20:02:41 +0000 (13:02 -0700)]
Add test to verify dex file passed to agent

Bug: 31455788
Test: ./test.py --host -j40
Change-Id: Ibd75e21d6d9f19d9bb125a43a0f54262724e894c

7 years agoMerge "Math.round float intrinsic for ARM."
Nicolas Geoffray [Tue, 28 Mar 2017 12:46:53 +0000 (12:46 +0000)]
Merge "Math.round float intrinsic for ARM."

7 years agoMath.round float intrinsic for ARM.
xueliang.zhong [Thu, 16 Feb 2017 15:18:03 +0000 (15:18 +0000)]
Math.round float intrinsic for ARM.

Test: m test-art-target
Test: m 082-inline-execute
Change-Id: I1b384e388b9959eca662922bffa8675cdbfe6e6b

7 years agoMerge "Make data dependency around HDeoptimize correct."
Nicolas Geoffray [Tue, 28 Mar 2017 07:55:30 +0000 (07:55 +0000)]
Merge "Make data dependency around HDeoptimize correct."

7 years agoMerge "Remove unreachable code in DexLocationToOdexFilename."
Richard Uhler [Tue, 28 Mar 2017 07:18:49 +0000 (07:18 +0000)]
Merge "Remove unreachable code in DexLocationToOdexFilename."

7 years agoMerge "ART: Fix some tidy warnings"
Treehugger Robot [Tue, 28 Mar 2017 02:01:24 +0000 (02:01 +0000)]
Merge "ART: Fix some tidy warnings"

7 years agoClose the right fd in native_stack_dump
Calin Juravle [Tue, 28 Mar 2017 01:12:05 +0000 (18:12 -0700)]
Close the right fd in native_stack_dump

Test: m test-art-host
Change-Id: I7edbeba699f3e957b915c5fcd52337ee64b878e2

7 years agoFix return value of AtomicMethodRefMap::Get()
Calin Juravle [Tue, 28 Mar 2017 01:10:47 +0000 (18:10 -0700)]
Fix return value of AtomicMethodRefMap::Get()

Test: m test-art-host
Change-Id: I3f0841af081194f56b5f5004f9bd86fa2ab34238

7 years agoFix arm64 and x86_64 code generator assertion
Calin Juravle [Tue, 28 Mar 2017 01:10:04 +0000 (18:10 -0700)]
Fix arm64 and x86_64 code generator assertion

Test: m test-art-host
Change-Id: I273d2dab079b60707a8ffb72227cac5788d1a3bc

7 years agoMerge "ART: Clean up field initialization"
Andreas Gampe [Tue, 28 Mar 2017 00:56:35 +0000 (00:56 +0000)]
Merge "ART: Clean up field initialization"

7 years agoMerge "ART: Remove unused DexToDex level."
Treehugger Robot [Tue, 28 Mar 2017 00:17:01 +0000 (00:17 +0000)]
Merge "ART: Remove unused DexToDex level."

7 years agoMerge changes I45940d2d,I100b6246,Ie0ba58b3,I7943e7a6,I172cef38, ...
Treehugger Robot [Mon, 27 Mar 2017 23:10:36 +0000 (23:10 +0000)]
Merge changes I45940d2d,I100b6246,Ie0ba58b3,I7943e7a6,I172cef38, ...

* changes:
  Remove signal mask checks from native bridge tests.
  sigchain: fix sigaction(signal, nullptr, &sa).
  sigchain: make SIG_DFL handling less broken.
  sigchain: allow use of sigprocmask inside handlers.
  sigchainlib: hopefully fix darwin build breakage.
  Revert^2: "Make sigchain actually own the signal chain.""

7 years agoMerge "Testrunner: Fix output parsing issue"
Treehugger Robot [Mon, 27 Mar 2017 22:40:38 +0000 (22:40 +0000)]
Merge "Testrunner: Fix output parsing issue"

7 years agoART: Fix some tidy warnings
Andreas Gampe [Mon, 27 Mar 2017 22:14:27 +0000 (15:14 -0700)]
ART: Fix some tidy warnings

Fix some tidy warnings for macros and references.

Test: m test-art-host
Change-Id: I2f8ed2174634263d4784c08e637f60ed70977b73

7 years agoART: Remove unused DexToDex level.
Andreas Gampe [Mon, 27 Mar 2017 21:57:30 +0000 (14:57 -0700)]
ART: Remove unused DexToDex level.

There is only "skip" and "optimize." We no longer have a required
tier, as constructor fencing is now elision-based.

Bug: 36653594
Test: m test-art-host
Change-Id: Ide874a581fc5f887d020b3d32507e3973e7fd9a4

7 years agoRemove signal mask checks from native bridge tests.
Josh Gao [Mon, 27 Mar 2017 20:56:23 +0000 (13:56 -0700)]
Remove signal mask checks from native bridge tests.

Bug: http://b/36205469
Bug: http://b/36262089
Change-Id: I45940d2d189b6e144eb2f6ebb6d24fd70e3bd206