9f66589f3ca6055501c99333a19b69349b8f8568 |
|
13-Jul-2015 |
Christopher Ferris <cferris@google.com> |
Fix cfi information for x86. With this change, I can now enable debug malloc fully. Bug: 19071092 Change-Id: Iabfb18505feffb480504a8bbfbac60dd219ed48a
|
e7d876adcfc1977800264ab7540aa488c1568b48 |
|
28-Jun-2015 |
Mathieu Chartier <mathieuc@google.com> |
ART: Fix CFI annotation for art_quick_aput_obj Fix the CFI state after an early return. Bug: 22014525 (cherry picked from commit 2738639bcd30b908d825725169b7497ed047debb) Change-Id: I56b9ba8cf8c47d70a642f064e59c7e04a476dd2f
|
dfc5db6a6deea37c217e29e810e757945dae8586 |
|
18-Jun-2015 |
Mathieu Chartier <mathieuc@google.com> |
Fix moving GC bugs in proxy stub for X86/X86_64 Needed to restore the refs. (cherry picked from commit 9346ff0cfad6344d0bf4eaa69362dbe1987ac054) Bug: 21907554 Change-Id: I562906dff07dcaa78dfb39646ba9ab35a5f56c6c
|
3d21bdf8894e780d349c481e5c9e29fe1556051c |
|
22-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move mirror::ArtMethod to native Optimizing + quick tests are passing, devices boot. TODO: Test and fix bugs in mips64. Saves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS. Some of the savings are from removal of virtual methods and direct methods object arrays. Bug: 19264997 (cherry picked from commit e401d146407d61eeb99f8d6176b2ac13c4df1e33) Change-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d Fix some ArtMethod related bugs Added root visiting for runtime methods, not currently required since the GcRoots in these methods are null. Added missing GetInterfaceMethodIfProxy in GetMethodLine, fixes --trace run-tests 005, 044. Fixed optimizing compiler bug where we used a normal stack location instead of double on ARM64, this fixes the debuggable tests. TODO: Fix JDWP tests. Bug: 19264997 Change-Id: I7c55f69c61d1b45351fd0dc7185ffe5efad82bd3 ART: Fix casts for 64-bit pointers on 32-bit compiler. Bug: 19264997 Change-Id: Ief45cdd4bae5a43fc8bfdfa7cf744e2c57529457 Fix JDWP tests after ArtMethod change Fixes Throwable::GetStackDepth for exception event detection after internal stack trace representation change. Adds missing ArtMethod::GetInterfaceMethodIfProxy call in case of proxy method. Bug: 19264997 Change-Id: I363e293796848c3ec491c963813f62d868da44d2 Fix accidental IMT and root marking regression Was always using the conflict trampoline. Also included fix for regression in GC time caused by extra roots. Most of the regression was IMT. Fixed bug in DumpGcPerformanceInfo where we would get SIGABRT due to detached thread. EvaluateAndApplyChanges: From ~2500 -> ~1980 GC time: 8.2s -> 7.2s due to 1s less of MarkConcurrentRoots Bug: 19264997 Change-Id: I4333e80a8268c2ed1284f87f25b9f113d4f2c7e0 Fix bogus image test assert Previously we were comparing the size of the non moving space to size of the image file. Now we properly compare the size of the image space against the size of the image file. Bug: 19264997 Change-Id: I7359f1f73ae3df60c5147245935a24431c04808a [MIPS64] Fix art_quick_invoke_stub argument offsets. ArtMethod reference's size got bigger, so we need to move other args and leave enough space for ArtMethod* and 'this' pointer. This fixes mips64 boot. Bug: 19264997 Change-Id: I47198d5f39a4caab30b3b77479d5eedaad5006ab
|
848f70a3d73833fc1bf3032a9ff6812e429661d9 |
|
15-Jan-2014 |
Jeff Hao <jeffhao@google.com> |
Replace String CharArray with internal uint16_t array. Summary of high level changes: - Adds compiler inliner support to identify string init methods - Adds compiler support (quick & optimizing) with new invoke code path that calls method off the thread pointer - Adds thread entrypoints for all string init methods - Adds map to verifier to log when receiver of string init has been copied to other registers. used by compiler and interpreter Change-Id: I797b992a8feb566f9ad73060011ab6f51eb7ce01
|
5ea536aa4a6414db01beaf6f8bd8cb9adc5cfc92 |
|
20-Apr-2015 |
Vladimir Marko <vmarko@google.com> |
Remove ArtMethod* parameter from dex cache entry points. Load the ArtMethod* using an optimized stack walk instead. This reduces the size of the generated code. Three of the entry points are called only from a slow-path and the fourth (InitializeTypeAndVerifyAccess) is rare and already slow enough that the one or two extra loads (depending on whether we already have the ArtMethod* in a register) are insignificant. And as we're starting to use PC-relative addressing of the dex cache arrays (already done by Quick for the boot image), having the ArtMethod* in a register becomes less likely anyway. Change-Id: Ib19b9d204e355e13bf386662a8b158178bf8ad28
|
2cebb24bfc3247d3e9be138a3350106737455918 |
|
22-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Replace NULL with nullptr Also fixed some lines that were too long, and a few other minor details. Change-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb
|
d43b3ac88cd46b8815890188c9c2b9a3f1564648 |
|
01-Apr-2015 |
Mingyao Yang <mingyao@google.com> |
Revert "Revert "Deoptimization-based bce."" This reverts commit 0ba627337274ccfb8c9cb9bf23fffb1e1b9d1430. Change-Id: I1ca10d15bbb49897a0cf541ab160431ec180a006
|
0ba627337274ccfb8c9cb9bf23fffb1e1b9d1430 |
|
24-Mar-2015 |
Andreas Gampe <agampe@google.com> |
Revert "Deoptimization-based bce." This breaks compiling the core image: Error after BCE: art::SSAChecker: Instruction 219 in block 1 does not dominate use 221 in block 1. This reverts commit e295e6ec5beaea31be5d7d3c996cd8cfa2053129. Change-Id: Ieeb48797d451836ed506ccb940872f1443942e4e
|
e295e6ec5beaea31be5d7d3c996cd8cfa2053129 |
|
07-Mar-2015 |
Mingyao Yang <mingyao@google.com> |
Deoptimization-based bce. A mechanism is introduced that a runtime method can be called from code compiled with optimizing compiler to deoptimize into interpreter. This can be used to establish invariants in the managed code If the invariant does not hold at runtime, we will deoptimize and continue execution in the interpreter. This allows to optimize the managed code as if the invariant was proven during compile time. However, the exception will be thrown according to the semantics demanded by the spec. The invariant and optimization included in this patch are based on the length of an array. Given a set of array accesses with constant indices {c1, ..., cn}, we can optimize away all bounds checks iff all 0 <= min(ci) and max(ci) < array-length. The first can be proven statically. The second can be established with a deoptimization-based invariant. This replaces n bounds checks with one invariant check (plus slow-path code). Change-Id: I8c6e34b56c85d25b91074832d13dba1db0a81569
|
e15ea086439b41a805d164d2beb07b4ba96aaa97 |
|
10-Feb-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Reserve bits in the lock word for read barriers. This prepares for the CC collector to use the standard object header model by storing the read barrier state in the lock word. Bug: 19355854 Bug: 12687968 Change-Id: Ia7585662dd2cebf0479a3e74f734afe5059fb70f
|
126d65952a03b3e44d5021208673c01920a982a4 |
|
03-Mar-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Fix generic JNI stubs to not discard the Java native frame. Change-Id: Ic856b442fdde5ce91673fc5856eb0dfc84c75d28
|
f551d1bd8da75d14fd858e4a7c9b60612aec5430 |
|
19-Feb-2015 |
Sebastien Hertz <shertz@google.com> |
Fix art_quick_instrumentation_entry for x86 Fixes the stack offset used to restore edx. Bug: 19402798 Change-Id: Ic3636cd362684564196997c4a3b3bebdc1be9a4e
|
3e6a3bf797e49b7f449256455c7e522e888687d8 |
|
19-Jan-2015 |
Mark Mendell <mark.p.mendell@intel.com> |
ART: Change x86 long param ABI (Quick/JNI/Opt) Ensure that we don't pass a long parameter across the last register and the stack: skip the register and allocate it only on the stack. This was requested to simplify the optimizing compiler code generation for x86. Optimizing (Baseline) compiler support for x86 longs: - Remove QuickParameter from Location, as there are no longer any uses of it. Bump oat.h version because we changed an ABI again. I changed IsParamALong() to return false for argument 0 (this argument). I am not sure why it differed from all other tests. I have not tested on ARM. I followed Nicolas's suggestions for setting the value of kSplitPairAcrossRegisterAndStack for different architectures. Change-Id: I2f16b33c1dac58dd4f4f503e9c2309d845f5fb7a Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
|
966c3ae95d3c699ee9fbdbccc1acdaaf02325faf |
|
27-Jan-2015 |
Mark P Mendell <mark.p.mendell@intel.com> |
Revert "Revert "ART: Implement X86 hard float (Quick/JNI/Baseline)"" This reverts commit 949c91fb91f40a4a80b2b492913cf8541008975e. This time, don't clobber EBX before saving it. Redo some of the macros to make register usage explicit. Change-Id: I8db8662877cd006816e16a28f42444ab7c36bfef
|
949c91fb91f40a4a80b2b492913cf8541008975e |
|
27-Jan-2015 |
Vladimir Marko <vmarko@google.com> |
Revert "ART: Implement X86 hard float (Quick/JNI/Baseline)" And the 3 Mac build fixes. Fix conflicts in context_x86.* . This reverts commits 3d2c8e74c27efee58e24ec31441124f3f21384b9 , 34eda1dd66b92a361797c63d57fa19e83c08a1b4 , f601d1954348b71186fa160a0ae6a1f4f1c5aee6 , bc503348a1da573488503cc2819c9e30807bea31 . Bug: 19150481 Change-Id: I6650ee30a7d261159380fe2119e14379e4dc9970
|
f601d1954348b71186fa160a0ae6a1f4f1c5aee6 |
|
26-Jan-2015 |
Vladimir Marko <vmarko@google.com> |
ART: Fix assembler labels' usage in macros for Mac. Change-Id: I99552528329a7f2cd5656eef0210c831cfc5fe09
|
34eda1dd66b92a361797c63d57fa19e83c08a1b4 |
|
26-Jan-2015 |
Vladimir Marko <vmarko@google.com> |
ART: Fix asm literals for Mac builds. Change-Id: Ief922e1e06811b8ec25771b9854376fae3e07929
|
2cd334ae2d4287216523882f0d298cf3901b7ab1 |
|
09-Jan-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
More of the concurrent copying collector. Bug: 12687968 Change-Id: I62f70274d47df6d6cab714df95c518b750ce3105
|
3d2c8e74c27efee58e24ec31441124f3f21384b9 |
|
13-Jan-2015 |
Mark Mendell <mark.p.mendell@intel.com> |
ART: Implement X86 hard float (Quick/JNI/Baseline) Use XMM0-XMM3 as parameter registers for float/double on X86. X86_64 already uses XMM0-XMM7 for parameters. Change the 'hidden' argument register from XMM0 to XMM7 to avoid a conflict. Add support for FPR save/restore in runtime/arch/x86. Minimal support for Optimizing baseline compiler. Bump the version in runtime/oat.h because this is an ABI change. Change-Id: Ia6fe150e8488b9e582b0178c0dda65fc81d5a8ba Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
|
24f2dfae084b2382c053f5d688fd6bb26cb8a328 |
|
15-Jan-2015 |
Mark Mendell <mark.p.mendell@intel.com> |
[optimizing compiler] Implement inline x86 FP '%' Replace the calls to fmod/fmodf by inline code as is done in the Quick compiler. Remove the quick fmod/fmodf runtime entries, as they are no longer in use. 64 bit code generator Move() routine needed to be enhanced to handle constants, as Location::Any() allows them to be generated. Change-Id: I6b6a42f6faeed4b0b3c940453e487daf5b25d184 Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
|
0f9b03c65e0ee8bdc5ddf58af100f5fc356cc98b |
|
12-Jan-2015 |
Vladimir Marko <vmarko@google.com> |
Revert "ART: Implement hard float for X86" This reverts commit 59b9cf7ec0ccc13df91be0bd5c723b8c52410739. Change-Id: I08333b528032480def474286dc368d916a07e17f
|
59b9cf7ec0ccc13df91be0bd5c723b8c52410739 |
|
09-Jan-2015 |
Mark Mendell <mark.p.mendell@intel.com> |
ART: Implement hard float for X86 Use XMM0-XMM3 as parameter registers for float/double on X86. X86_64 already uses XMM0-XMM7 for parameters. Change the 'hidden' argument register from XMM0 to XMM7 to avoid a conflict. This change was requested to simplify the Optimizing compiler implementation. Change-Id: I89ba8ade99b9a8a5b1ad1ee5f5cbfd33d656bfaa Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
|
4808846b2a8647a448aaa05d561a4f60b190196b |
|
12-Dec-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Save all registers in native to Java stubs. This will make things more friendly when experimenting with the number of callee saves in optimizing. Change-Id: Iefd9a2da329a420eb69fc2fa9e91c06bbda30cdb
|
d2ec87d84057174d4884ee16f652cbcfd31362e9 |
|
08-Dec-2014 |
Calin Juravle <calin@google.com> |
[optimizing compiler] Add REM_FLOAT and REM_DOUBLE - for arm, x86, x86_64 backends - reinstated fmod quick entry points for x86. This is a partial revert of bd3682eada753de52975ae2b4a712bd87dc139a6 which added inline assembly for floting point rem on x86. Note that Quick still uses the inline version. - fix rem tests for longs Change-Id: I73be19a9f2f2bcf3f718d9ca636e67bdd72b5440
|
2d7210188805292e463be4bcf7a133b654d7e0ea |
|
10-Nov-2014 |
Mathieu Chartier <mathieuc@google.com> |
Change 64 bit ArtMethod fields to be pointer sized Changed the 64 bit entrypoint and gc map fields in ArtMethod to be pointer sized. This saves a large amount of memory on 32 bit systems. Reduces ArtMethod size by 16 bytes on 32 bit. Total number of ArtMethod on low memory mako: 169957 Image size: 49203 methods -> 787248 image size reduction. Zygote space size: 1070 methods -> 17120 size reduction. App methods: ~120k -> 2 MB savings. Savings per app on low memory mako: 125K+ per app (less active apps -> more image methods per app). Savings depend on how often the shared methods are on dirty pages vs shared. TODO in another CL, delete gc map field from ArtMethod since we should be able to get it from the Oat method header. Bug: 17643507 Change-Id: Ie9508f05907a9f693882d4d32a564460bf273ee8 (cherry picked from commit e832e64a7e82d7f72aedbd7d798fb929d458ee8f)
|
e832e64a7e82d7f72aedbd7d798fb929d458ee8f |
|
10-Nov-2014 |
Mathieu Chartier <mathieuc@google.com> |
Change 64 bit ArtMethod fields to be pointer sized Changed the 64 bit entrypoint and gc map fields in ArtMethod to be pointer sized. This saves a large amount of memory on 32 bit systems. Reduces ArtMethod size by 16 bytes on 32 bit. Total number of ArtMethod on low memory mako: 169957 Image size: 49203 methods -> 787248 image size reduction. Zygote space size: 1070 methods -> 17120 size reduction. App methods: ~120k -> 2 MB savings. Savings per app on low memory mako: 125K+ per app (less active apps -> more image methods per app). Savings depend on how often the shared methods are on dirty pages vs shared. TODO in another CL, delete gc map field from ArtMethod since we should be able to get it from the Oat method header. Bug: 17643507 Change-Id: Ie9508f05907a9f693882d4d32a564460bf273ee8
|
32b12f8ae491e1acfeaee334e9a30c6c0a232072 |
|
17-Nov-2014 |
Sebastien Hertz <shertz@google.com> |
Fix art_quick_instrumentation_entry stub for x86/x86_64 Fixes bad stack offset for x86 where we read the return pc from an incorrect location. Fixes bad register for x86_64. The return pc is the 4th argument of the called C function. It must be passed in rcx instead of r8 (which is used for 5th argument). Bug: 18170596 Change-Id: Idb521d2f6da415448fa61acf8b7d21076822830f
|
e0b46a7513980b5bcb3c3af160a5b3ee077fad2d |
|
05-Nov-2014 |
Serguei Katkov <serguei.i.katkov@intel.com> |
Fix x86 art_quick_set64_instance quick entrypoint art_quick_set64_instance accept ebx as a 4-th parameter. At the same time it is used as a temporary for SETUP_REFS_ONLY_CALLEE_SAVE_FRAME. We should preserve it and restore to pass the right value to artSet64InstanceFromCode. Change-Id: Iac0a32583be1015e502ae0f8ff57c4b9c0301730 Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
|
6c480d6050aab315a8592f2d671f40b8179f28dd |
|
22-Oct-2014 |
Ian Rogers <irogers@google.com> |
Fix Mac build. Why can't Apple implement named macro arguments! Change-Id: I5e09e04449c3a5d9f6430b587c004d6b16000f09
|
1d8cdbc5202378a5f1a4b3a1fba610675ed4dcd5 |
|
23-Sep-2014 |
Ian Rogers <irogers@google.com> |
Refactor quick entrypoints Remove FinishCalleeSaveFrameSetup. Assembly routines write down anchor into TLS as well as placing runtime method in callee save frame. Simplify artSet64InstanceFromCode by not computing the referrer from the stack in the C++ code. Move assembly offset tests next to constant declaration and tidy arch_test. Change-Id: Iededeebc05e54a1e2bb7bb3572b8ba012cffa1c8
|
677cd61ad05d993c4d3b22656675874f06d6aabc |
|
15-Oct-2014 |
Ian Rogers <irogers@google.com> |
Make ART compile with GCC -O0 again. Tidy up InstructionSetFeatures so that it has a type hierarchy dependent on architecture. Add to instruction_set_test to warn when InstructionSetFeatures don't agree with ones from system properties, AT_HWCAP and /proc/cpuinfo. Clean-up class linker entry point logic to not return entry points but to test whether the passed code is the particular entrypoint. This works around image trampolines that replicate entrypoints. Bug: 17993736 (cherry picked from commit 6f3dbbadf4ce66982eb3d400e0a74cb73eb034f3) Change-Id: I3e7595f437db4828072589d475a5453b7f31003e
|
6f3dbbadf4ce66982eb3d400e0a74cb73eb034f3 |
|
15-Oct-2014 |
Ian Rogers <irogers@google.com> |
Make ART compile with GCC -O0 again. Tidy up InstructionSetFeatures so that it has a type hierarchy dependent on architecture. Add to instruction_set_test to warn when InstructionSetFeatures don't agree with ones from system properties, AT_HWCAP and /proc/cpuinfo. Clean-up class linker entry point logic to not return entry points but to test whether the passed code is the particular entrypoint. This works around image trampolines that replicate entrypoints. Bug: 17993736 Change-Id: I5f4b49e88c3b02a79f9bee04f83395146ed7be23
|
832336b3c9eb892045a8de1bb12c9361112ca3c5 |
|
09-Oct-2014 |
Ian Rogers <irogers@google.com> |
Don't copy fill array data to quick literal pool. Currently quick copies the fill array data from the dex file to the literal pool. It then has to go through hoops to pass this PC relative address down to out-of-line code. Instead, pass the offset of the table to the out-of-line code and use the CodeItem data associated with the ArtMethod. This reduces the size of oat code while greatly simplifying it. Unify the FillArrayData implementation in quick, portable and the interpreters. Change-Id: I9c6971cf46285fbf197856627368c0185fdc98ca
|
871bfdcacbce7db574c4d1007f0065e65db26a7f |
|
05-Sep-2014 |
Andreas Gampe <agampe@google.com> |
Revert "Revert "x86: Fix art_quick_instrumentation_exit"" Need to use GOT to avoid TEXTREL. This reverts commit 62aa66f8532b8eb44e882596010b33e7781b0754. Change-Id: Ife659c28d621596ad288999fa128dcf32fc0b1c7
|
62aa66f8532b8eb44e882596010b33e7781b0754 |
|
05-Sep-2014 |
Andreas Gampe <agampe@google.com> |
Revert "x86: Fix art_quick_instrumentation_exit" GCC 4.8 can't handle it correctly. This reverts commit 5324dc896b69fc14a24334f52169e2319b9b3842. Change-Id: I2478a52f147b585658d0e5769c3fce7f2c75240e
|
5324dc896b69fc14a24334f52169e2319b9b3842 |
|
27-Aug-2014 |
Dmitry Petrochenko <dmitry.petrochenko@intel.com> |
x86: Fix art_quick_instrumentation_exit Make sure that we use a move-immediate instead of a move-from-address (previously this was a load, whereas now we are interested in the address as a value). Change-Id: I4048c4a97abcc6524fe976bdc35b834d8f3bc592 Signed-off-by: Dmitry Petrochenko <dmitry.petrochenko@intel.com>
|
8ce6b9040747054b444a7fa706503cd257801936 |
|
26-Aug-2014 |
Dave Allison <dallison@google.com> |
Handle nested signals This allows for signals to be raised inside the ART signal handler. This can occur when the JavaStackTraceHandler attempts to generate a stack trace and something goes wrong. It also fixes an issue where the fault manager was not being correctly shut down inside the signal chaining code. In this case the signal handler was not restored to the original. Bug: 17006816 Bug: 17133266 (cherry picked from commit fabe91e0d558936ac26b98d2b4ee1af08f58831d) Change-Id: I10730ef52d5d8d34610a5293253b3be6caf4829e
|
fabe91e0d558936ac26b98d2b4ee1af08f58831d |
|
26-Aug-2014 |
Dave Allison <dallison@google.com> |
Handle nested signals This allows for signals to be raised inside the ART signal handler. This can occur when the JavaStackTraceHandler attempts to generate a stack trace and something goes wrong. It also fixes an issue where the fault manager was not being correctly shut down inside the signal chaining code. In this case the signal handler was not restored to the original. Bug: 17006816 Bug: 17133266 Change-Id: I9c25bf4f6921e6a107aefbdf47d2c0db9f41508f
|
48160e72cf4dc0a7a99fb2276e0d20d602e9151f |
|
26-Aug-2014 |
Ian Rogers <irogers@google.com> |
Fix usage of literals within a macro. Macs handle arguments in macros as $num meaning literals must be $$num. Change-Id: Ia30c7ef4e089561e9f23f353d7080e800b117d70
|
e8817b265deb6747ee7437ac8d4a00231231dab5 |
|
26-Aug-2014 |
Fred Shih <ffred@google.com> |
Fixed typo in entrypoint stub. Fixed typo for x86 stub causing mac build failure. Change-Id: I5e063fb87c598c2d9beb22f6d5b97b7fd4df9b84
|
37f05ef45e0393de812d51261dc293240c17294d |
|
17-Jul-2014 |
Fred Shih <ffred@google.com> |
Reduced memory usage of primitive fields smaller than 4-bytes Reduced memory used by byte and boolean fields from 4 bytes down to a single byte and shorts and chars down to two bytes. Fields are now arranged as Reference followed by decreasing component sizes, with fields shuffled forward as needed. Bug: 8135266 Change-Id: I65eaf31ed27e5bd5ba0c7d4606454b720b074752
|
8d98ac61fca47c13f8586ab635c37ef5460b3749 |
|
21-Aug-2014 |
Andreas Gampe <agampe@google.com> |
ART: Remove GOT setup from x86 assembly where not needed Change-Id: Id839d6d6427da7b7faa4340e04085cdab388e9a5
|
29b3841ad8c1c18ee7ddd2d8cab85806b3d62eaa |
|
13-Aug-2014 |
Andreas Gampe <agampe@google.com> |
ART: Set default visibility to protected Set default visibility of symbols to protected. This allows the linker to optimize internal calls and helps avoid plt calls. Make almost all assembly stubs hidden, as -fvisibility does not seem to apply to them. Change the assembly tests accordingly. Also allows to clean up previous hacks to avoid plt calls. Bug: 16974467 (cherry picked from commit 235e77bd9f19e4faefda109be40f8744f3a66f40) Change-Id: I9030dcf6116251f434f94a2b08e56e12085af652
|
ebee8de725d5fa83483642786b19ea453d865762 |
|
13-Aug-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Fix bugs in the x86 and arm versions of generic JNI. Also fix the run script of 116-nodex2oat to use the non-prebuild script for target. Bug: 17000769 (cherry-picked from commit 54accbca0b549b1b1ad3ef09655dad438bc1e104) Change-Id: I439fcd710fb8bb408f3288ff8fb34fef23890adb
|
b038ba66a166fb264ca121632f447712e0973b5b |
|
14-Aug-2014 |
Dave Allison <dallison@google.com> |
Revert "Revert "Reduce stack usage for overflow checks"" Fixes stack protection issue. Fixes mac build issue. This reverts commit 83b1940e6482b9d8feba5c492507735686650ea5. Change-Id: I7ba17252882b23a740bcda2ea94aacf398255406
|
4cf00ba324f5f6884059796a6ba41937f32e1844 |
|
14-Aug-2014 |
Dave Allison <dallison@google.com> |
Revert "Reduce stack usage for overflow checks" This reverts commit 63c051a540e6dfc806f656b88ac3a63e99395429. Change-Id: I282a048994fcd130fe73842b16c21680053c592f
|
03c9785a8a6d712775cf406c4371d0227c44148f |
|
14-Aug-2014 |
Dave Allison <dallison@google.com> |
Revert "Revert "Reduce stack usage for overflow checks"" Fixes stack protection issue. Fixes mac build issue. This reverts commit 83b1940e6482b9d8feba5c492507735686650ea5. Change-Id: I7ba17252882b23a740bcda2ea94aacf398255406
|
83b1940e6482b9d8feba5c492507735686650ea5 |
|
14-Aug-2014 |
Dave Allison <dallison@google.com> |
Revert "Reduce stack usage for overflow checks" This reverts commit 63c051a540e6dfc806f656b88ac3a63e99395429. Change-Id: I282a048994fcd130fe73842b16c21680053c592f
|
235e77bd9f19e4faefda109be40f8744f3a66f40 |
|
13-Aug-2014 |
Andreas Gampe <agampe@google.com> |
ART: Set default visibility to protected Set default visibility of symbols to protected. This allows the linker to optimize internal calls and helps avoid plt calls. Make almost all assembly stubs hidden, as -fvisibility does not seem to apply to them. Change the assembly tests accordingly. Also allows to clean up previous hacks to avoid plt calls. Bug: 16974467 Change-Id: I9030dcf6116251f434f94a2b08e56e12085af652
|
63c051a540e6dfc806f656b88ac3a63e99395429 |
|
26-Jul-2014 |
Dave Allison <dallison@google.com> |
Reduce stack usage for overflow checks This reduces the stack space reserved for overflow checks to 12K, split into an 8K gap and a 4K protected region. GC needs over 8K when running in a stack overflow situation. Also prevents signal runaway by detecting a signal inside code that resulted from a signal handler invokation. And adds a max signal count to the SignalTest to prevent it running forever. Also reduces the number of iterations for the InterfaceTest as this was taking (almost) forever with the --trace option on run-test. Bug: 15435566 Change-Id: Id4fd46f22d52d42a9eb431ca07948673e8fda694 Conflicts: compiler/optimizing/code_generator_x86_64.cc runtime/arch/x86/fault_handler_x86.cc runtime/arch/x86_64/quick_entrypoints_x86_64.S
|
648d7112609dd19c38131b3e71c37bcbbd19d11e |
|
26-Jul-2014 |
Dave Allison <dallison@google.com> |
Reduce stack usage for overflow checks This reduces the stack space reserved for overflow checks to 12K, split into an 8K gap and a 4K protected region. GC needs over 8K when running in a stack overflow situation. Also prevents signal runaway by detecting a signal inside code that resulted from a signal handler invokation. And adds a max signal count to the SignalTest to prevent it running forever. Also reduces the number of iterations for the InterfaceTest as this was taking (almost) forever with the --trace option on run-test. Bug: 15435566 Change-Id: Id4fd46f22d52d42a9eb431ca07948673e8fda694
|
54accbca0b549b1b1ad3ef09655dad438bc1e104 |
|
13-Aug-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Fix bugs in the x86 and arm versions of generic JNI. Also fix the run script of 116-nodex2oat to use the non-prebuild script for target. Bug: 17000769 Change-Id: I439fcd710fb8bb408f3288ff8fb34fef23890adb
|
a0b530dd5e76662156b40c8a84ebb446b6332598 |
|
10-Aug-2014 |
Dan Albert <danalbert@google.com> |
Fix the Mac build. Apparently Mac uses a different assembler directive for .hidden. Change-Id: Ic2adb6bef82e376c3e5f4a29258a85a0dac00cd5
|
6a763f149f0c6f705cab8fb1984aa6f9198b2841 |
|
10-Aug-2014 |
Dan Albert <danalbert@google.com> |
Proper fix after -Bsymbolic change. Marking the offending symbols as hidden allows the linker to resolve them at build time. Bug: 16853291 Change-Id: I1480c1520c23f81e42831a66737bba7bdf3433c2
|
90c5879d56a4ccd6ed1c5c1aa36baef61352601b |
|
10-Aug-2014 |
Dan Albert <danalbert@google.com> |
Fix the Mac build. Apparently Mac uses a different assembler directive for .hidden. Change-Id: Ic2adb6bef82e376c3e5f4a29258a85a0dac00cd5
|
58bea4a6114b9ea4b00e36186357e5b431430123 |
|
10-Aug-2014 |
Dan Albert <danalbert@google.com> |
Proper fix after -Bsymbolic change. Marking the offending symbols as hidden allows the linker to resolve them at build time. Bug: 16853291 Change-Id: I1480c1520c23f81e42831a66737bba7bdf3433c2
|
3bed41cf3ace3105686f626fed2ac802376852f3 |
|
08-Aug-2014 |
Dan Albert <danalbert@google.com> |
Workaround for test failures after Bsymbolic fix. Change-Id: I0c2e2efbeb5060d4ec5ba706dab422b3c2caaa96
|
bae21bb7f6ca917e0954c970f0bfd2bfa3dcc0a9 |
|
07-Aug-2014 |
Dan Albert <danalbert@google.com> |
Fix build without -Bsymbolic. For ARM: Gold is unable to create PLT based relocations for conditional branches. For x86: Some uses of SYMBOL() should have been PLT_SYMBOL(). Bug: 16853291 Change-Id: Id70488b077256a70137c4417f21be2c2d1d4341c
|
35e1e6ad4b50f1adbe9f93fe467766f042491896 |
|
30-Jul-2014 |
Tong Shen <endlessroad@google.com> |
1. Fix CFI for quick compiled code in x86 & x86_64; 2. Emit CFI in .eh_frame instead of .debug_frame. With CFI, we can correctly unwind past quick generated code. Now gdb should unwind to main() for both x86 & x86_64 host-side ART. Note that it does not work with relocation yet. Testing: 1. art/test/run-test --host --gdb [--64] --no-relocate 005 2. In gdb, run 'b art_quick_invoke_stub', then 'r', then 'c' a few times 3. In gdb, run 'bt'. You should see stack frames down to main() Change-Id: I5350d4097dc3d360a60cb17c94f1d02b99bc58bb
|
f5881ed68a05b371e7578966470ff3801b180578 |
|
23-Jul-2014 |
Andreas Gampe <agampe@google.com> |
ART: Fix x86_64 instrumentation_exit, also movsd -> movq Change movd/movsd to movq. Bug: 16386215 (cherry picked from commit fea29016a79f39ac12a4ba4ebdcbc86800c03427) Change-Id: Icca71ca2aeeb2917aff46043051d6046f04395d4
|
2c240f7972dc4e6c7cbfb5d4ddcae64720230109 |
|
23-Jul-2014 |
Jeff Hao <jeffhao@google.com> |
Fix x86 instrumentation exit entrypoint and trace size limit. The x86 instruction movd only copies a 32-bit value when used with a memory location. movsd properly copies 64-bits. Bug: 16386215 (cherry picked from commit cf2e7b0621dfe7fcacd56555dffabab65d1130e7) Change-Id: I102db8aaa5e8a6b3a88f01e545d1bb51b4f3d5d4
|
fea29016a79f39ac12a4ba4ebdcbc86800c03427 |
|
23-Jul-2014 |
Andreas Gampe <agampe@google.com> |
ART: Fix x86_64 instrumentation_exit, also movsd -> movq Change movd/movsd to movq. Bug: 16386215 Change-Id: Icca71ca2aeeb2917aff46043051d6046f04395d4
|
cf2e7b0621dfe7fcacd56555dffabab65d1130e7 |
|
23-Jul-2014 |
Jeff Hao <jeffhao@google.com> |
Fix x86 instrumentation exit entrypoint and trace size limit. The x86 instruction movd only copies a 32-bit value when used with a memory location. movsd properly copies 64-bits. Bug: 16386215 Change-Id: Ia59b2c2af72ce5202c7b62413687aedb48cfd25e
|
147eb41b53729ec8d5c188d1cac90964a51afb8a |
|
11-Jul-2014 |
Dave Allison <dallison@google.com> |
Revert "Revert "Revert "Revert "Add implicit null and stack checks for x86"""" This reverts commit 0025a86411145eb7cd4971f9234fc21c7b4aced1. Bug: 16256184 Change-Id: Ie0760a0c293aa3b62e2885398a8c512b7a946a73 Conflicts: compiler/dex/quick/arm64/target_arm64.cc compiler/image_test.cc runtime/fault_handler.cc
|
69dfe51b684dd9d510dbcb63295fe180f998efde |
|
11-Jul-2014 |
Dave Allison <dallison@google.com> |
Revert "Revert "Revert "Revert "Add implicit null and stack checks for x86"""" This reverts commit 0025a86411145eb7cd4971f9234fc21c7b4aced1. Bug: 16256184 Change-Id: Ie0760a0c293aa3b62e2885398a8c512b7a946a73
|
7fb36ded9cd5b1d254b63b3091f35c1e6471b90e |
|
10-Jul-2014 |
Dave Allison <dallison@google.com> |
Revert "Revert "Add implicit null and stack checks for x86"" Fixes x86_64 cross compile issue. Removes command line options and property to set implicit checks - this is hard coded now. This reverts commit 3d14eb620716e92c21c4d2c2d11a95be53319791. Change-Id: I5404473b5aaf1a9c68b7181f5952cb174d93a90d
|
0025a86411145eb7cd4971f9234fc21c7b4aced1 |
|
11-Jul-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Revert "Revert "Add implicit null and stack checks for x86""" Broke the build. This reverts commit 7fb36ded9cd5b1d254b63b3091f35c1e6471b90e. Change-Id: I9df0e7446ff0913a0e1276a558b2ccf6c8f4c949
|
34e826ccc80dc1cf7c4c045de6b7f8360d504ccf |
|
29-May-2014 |
Dave Allison <dallison@google.com> |
Add implicit null and stack checks for x86 This adds compiler and runtime changes for x86 implicit checks. 32 bit only. Both host and target are supported. By default, on the host, the implicit checks are null pointer and stack overflow. Suspend is implemented but not switched on. Change-Id: I88a609e98d6bf32f283eaa4e6ec8bbf8dc1df78a
|
3d14eb620716e92c21c4d2c2d11a95be53319791 |
|
10-Jul-2014 |
Dave Allison <dallison@google.com> |
Revert "Add implicit null and stack checks for x86" It breaks cross compilation with x86_64. This reverts commit 34e826ccc80dc1cf7c4c045de6b7f8360d504ccf. Change-Id: I34ba07821fc0a022fda33a7ae21850957bbec5e7
|
c200a4abeca91e19969f5b35543f17f812ba32b9 |
|
17-Jun-2014 |
Andreas Gampe <agampe@google.com> |
ART: Rework Generic JNI, add ARM version Refactors and optimizes Generic JNI. This version uses TwoWordReturn to avoid writing to / loading from the bottom of the alloca. Change-Id: I3287007c976f79c9fd32d3b3a43f2d1371bf4cd3
|
7ac7e32fb84b6a933181d31694d8a2d81ddca6d6 |
|
28-Jun-2014 |
Elliott Hughes <enh@google.com> |
Fix the x86 textrel and remove -Wl,--no-fatal-warnings. Bug: 11358761 Change-Id: I825cecce121a9011f74c5fdf77d1fbecd30adbc7
|
bd3682eada753de52975ae2b4a712bd87dc139a6 |
|
11-Jun-2014 |
Alexei Zavjalov <alexei.zavjalov@intel.com> |
ART: Implement rem_double/rem_float for x86/x86-64 This adds inlined version of the rem_double/rem_float bytecodes for x86/x86-64 platforms. This patch also removes unnecessary fmod and fmodf stubs from runtime. Change-Id: I2311aa2adf08d6614527e0da070e3b6ce2343a20 Signed-off-by: Alexei Zavjalov <alexei.zavjalov@intel.com>
|
e3d5581266301e6a672af6233220037abf52fea1 |
|
11-Jun-2014 |
Ian Rogers <irogers@google.com> |
Fix host Mac build. Ptr - ptr is an int not size_t on the Mac. Fix use of assembly literal macro. Remove forgotten about WITH_HOST_DALVIK. Change-Id: I64db1927b2c6a145b6a96ffcc33d704914bba1bb
|
c5f17732d8144491c642776b6b48c85dfadf4b52 |
|
06-Jun-2014 |
Ian Rogers <irogers@google.com> |
Remove deprecated WITH_HOST_DALVIK. Bug: 13751317 Fix the Mac build: - disable x86 selector removal that causes OS/X 10.9 kernel panics, - madvise don't need does zero memory on the Mac, factor into MemMap routine, - switch to the elf.h in elfutils to avoid Linux kernel dependencies, - we can't rely on exclusive_owner_ being available from other pthread libraries so maintain our own when futexes aren't available (we can't rely on the OS/X 10.8 hack any more), - fix symbol naming in assembly code, - work around C library differences, - disable backtrace in DumpNativeStack to avoid a broken libbacktrace dependency, - disable main thread signal handling logic, - align the stack in stub_test, - use $(HOST_SHLIB_SUFFIX) rather than .so in host make file variables. Not all host tests are passing on the Mac with this change. dex2oat works as does running HelloWorld. Change-Id: I5a232aedfb2028524d49daa6397a8e60f3ee40d3
|
779f8c951c0fbe36d4b213113a99541132947bb7 |
|
10-Jun-2014 |
Andreas Gampe <agampe@google.com> |
ART: Generic JNI for x86 Add the generic JNI trampoline for x86. Small cleanup in the C code. Change-Id: Icaf9de7c0e5e8d1e6cb1135a54552040344cc5a3
|
ffddfdf6fec0b9d98a692e27242eecb15af5ead2 |
|
03-Jun-2014 |
Tim Murray <timmurray@google.com> |
DO NOT MERGE Merge ART from AOSP to lmp-preview-dev. Change-Id: I0f578733a4b8756fd780d4a052ad69b746f687a9
|
8792ae10c0c2ed20c743806522eceeaf0e016e19 |
|
22-May-2014 |
Serguei Katkov <serguei.i.katkov@intel.com> |
x86: art_quick_instrumentation_entry should not use offset address art_quick_instrumentation_entry uses offset of the address instead of full adress but this address is used in ret instruction which does not expect it. Change-Id: I9e576037d7adf14a7e9fa8f6d4aba4ee540fcc14 Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
|
1d4d7bdafd0c3d4df7bf8e907b08db9669db7023 |
|
23-May-2014 |
Alexei Zavjalov <alexei.zavjalov@intel.com> |
ART: refactor x86/x86-64 entrypoints This patch: - removes unused stubs in x86/64 runtimes (art_quick_l2d, art_quick_l2f and art_quick_idivmod) - replaces art_quick_fmod, art_quick_fmodf and art_quick_is_assignable entrypoints in x86-64 to the direct calls - removes art_quick_indexof stub in x86-64 Change-Id: I6141c5c73b0b449fa3b866068b101e0be211b93e Signed-off-by: Alexei Zavjalov <alexei.zavjalov@intel.com>
|
5c1e4352614d61fed6868567e58b96682828cb4d |
|
22-Apr-2014 |
Andreas Gampe <agampe@google.com> |
Add "arch_test" gtest for assembly stub constants, add some ARM64 assembly code Add a test that (1) checks all callee-save method frame sizes for all architectures, (2) checks thread offsets for the runtime architecture and (3) checks callee-save method offsets for the runtime architecture. The "asm_support_XXX.h" files now only contain definitions that are common between all architectures. Architecture-specific definitions (i.e., special registers names) have been pushed into the corresponding .S file. This change was required to be able to undefine definitions in the test, so that multiple tests can be written in one file. Test (1) above is in a sense two-stage. The arch_test gtest compares constants (if it finds them) against the frame size as reported by the ArtMethods created by the Runtime. This works for all architectures as we can provide the instruction-set to CreateCalleeSaveMethod. The second stage of the "test" are preprocessor tests with "#error" in the case that the constants are not the expected value. Optimally I'd like to change that to an actual runtime test exercising the assembly code, which would also allow to check whether the right registers are stored. Also added missing assembly code for ARM64 for the callee-save macros. Also fix X86_64 compilation for Clang 3.5. Change-Id: I018e6433dffd3d31ba3bfcd75661653f4c7b6552
|
47d00c0a893b13b69e4bac1836e10cc3e1812d41 |
|
17-Apr-2014 |
Ian Rogers <irogers@google.com> |
Add untested x86-64 downcall and exception assembly. Change-Id: Ic555f9f5af8c3a2110a92e55772ff6c0128e5c19
|
e78d4e1a7066d2bc60d265eb27e78b336df941dd |
|
07-Apr-2014 |
Serguei Katkov <serguei.i.katkov@intel.com> |
art_quick_unlock_object uses comparison incorrectly art_quick_unlock_object incrrectly checks the thin lock condition. The patch fixes this issue. Change-Id: I9e2fcf89c9e9cb34aca72ed001672fd83cd53377 Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
|
8ef84afbaeb433adaed98a11902502dd733e5222 |
|
03-Apr-2014 |
Serguei Katkov <serguei.i.katkov@intel.com> |
art_quick_lock_object uses registers incorrectly x86 implementation of art_quick_lock_object uses registers incorrectly in the case of .Lalready_thin. eax points to object while it is used as holding the lock word. The patch fixes this. Change-Id: Iacf1a40c6570fae78a5504ca3b2f1218631f7a8f Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
|
bf6b92a158053c98b15f4393abb3b86344ec9a20 |
|
06-Mar-2014 |
Andreas Gampe <agampe@google.com> |
Generic JNI implementation for x86_64 Starting implementation for generic JNI on x86_64. Frames are of large static size (>4K) right now, should be compacted later. Passes the whole of jni_compiler_test. Change-Id: I88ac3e13a534afe7568d62a1ef97cb766e8260e4
|
2da882315a61072664f7ce3c212307342e907207 |
|
27-Feb-2014 |
Andreas Gampe <agampe@google.com> |
Initial changes towards Generic JNI option Some initial changes that lead to an UNIMPLEMENTED. Works by not compiling for JNI right now and tracking native methods which have neither quick nor portable code. Uses new trampoline. Change-Id: I5448654044eb2717752fd7359f4ef8bd5c17be6e
|
4554bfdc2859712a763a12e35a4176914fc7c994 |
|
26-Feb-2014 |
Alexei Zavjalov <alexei.zavjalov@intel.com> |
Incorrect result of compareTo between empty and non-empty strings Current implementation of the Strings.compareTo() handles the case when empty string compares to non-empty string in the wrong way. This patch adds handler for such cases. Change-Id: I35cc2cfd5141551d6da65748c44b59e64a3f8117 Signed-off-by: Alexei Zavjalov <alexei.zavjalov@intel.com>
|
8016a12a5f9c2ea70b52e353a0169ba836ee9402 |
|
22-Feb-2014 |
Ian Rogers <irogers@google.com> |
Make X86 assembly labels local. Avoids the symbols being part of the symbol file and confusing tools like gdb. Change-Id: I4c40b0d42964e6b2e3fa135320e603b5b41ea0e1
|
4028a6c83a339036864999fdfd2855b012a9f1a7 |
|
20-Feb-2014 |
Mark Mendell <mark.p.mendell@intel.com> |
Inline x86 String.indexOf Take advantage of the presence of a constant search char or start index to tune the generated code. Change-Id: I0adcf184fb91b899a95aa4d8ef044a14deb51d88 Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
|
0177e53ea521ad58b70c305700dab32f1ac773b7 |
|
12-Feb-2014 |
Ian Rogers <irogers@google.com> |
Work in the direction of hard float quick ABIs. Pass a shorty to ArtMethod::Invoke so that register setup can use it. Document x86-64 ABI. Add extra debug output for one JNI native method registration fails, namely a dump of the Class and its dex file's location. Add hack to get testing of OatMethod's without GC maps working in 64bit. Change-Id: Ic06b68e18eac33637df2caf5e7e775ff95ae70f3
|
ef7d42fca18c16fbaf103822ad16f23246e2905d |
|
06-Jan-2014 |
Ian Rogers <irogers@google.com> |
Object model changes to support 64bit. Modify mirror objects so that references between them use an ObjectReference value type rather than an Object* so that functionality to compress larger references can be captured in the ObjectRefererence implementation. ObjectReferences are 32bit and all other aspects of object layout remain as they are currently. Expand fields in objects holding pointers so they can hold 64bit pointers. Its expected the size of these will come down by improving where we hold compiler meta-data. Stub out x86_64 architecture specific runtime implementation. Modify OutputStream so that reads and writes are of unsigned quantities. Make the use of portable or quick code more explicit. Templatize AtomicInteger to support more than just int32_t as a type. Add missing, and fix issues relating to, missing annotalysis information on the mutator lock. Refactor and share implementations for array copy between System and uses elsewhere in the runtime. Fix numerous 64bit build issues. Change-Id: I1a5694c251a42c9eff71084dfdd4b51fff716822
|
bb8f0ab736b61db8f543e433859272e83f96ee9b |
|
28-Jan-2014 |
Hiroshi Yamauchi <yamauchi@google.com> |
Embed array class pointers at array allocation sites. Following https://android-review.googlesource.com/#/c/79302, embed array class pointers at array allocation sites in the compiled code. Change-Id: I67a1292466dfbb7f48e746e5060e992dd93525c5
|
be1ca55db3362f5b100c4c65da5342fd299520bb |
|
15-Jan-2014 |
Hiroshi Yamauchi <yamauchi@google.com> |
Use direct class pointers at allocation sites in the compiled code. - Rather than looking up a class from its type ID (and checking if it's resolved/initialized, resolving/initializing if not), use direct class pointers, if possible (boot-code-to-boot-class pointers and app-code-to-boot-class pointers.) - This results in a 1-2% speedup in Ritz MemAllocTest on Nexus 4. - Embedding the object size (along with class pointers) caused a 1-2% slowdown in MemAllocTest and isn't implemented in this change. - TODO: do the same for array allocations. - TODO: when/if an application gets its own image, implement app-code-to-app-class pointers. - Fix a -XX:gc bug. cf. https://android-review.googlesource.com/79460/ - Add /tmp/android-data/dalvik-cache to the list of locations to remove oat files in clean-oat-host. cf. https://android-review.googlesource.com/79550 - Add back a dropped UNLIKELY in FindMethodFromCode(). cf. https://android-review.googlesource.com/74205 Bug: 9986565 Change-Id: I590b96bd21f7a7472f88e36752e675547559a5b1
|
b10a57da80cd8e53582c9b13aba5014dc1e69929 |
|
22-Jan-2014 |
Mark Mendell <mark.p.mendell@intel.com> |
Fix non-PLT text relocation introduced by CL 79466 One 'PLT_SYMBOL' was missed. Breaks target tests again. Change-Id: I67cb4c1b54f889a9935dab4a87da52ae412efb17 Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
|
3f2d031f639b3b9dd4adbf9e70d23de931a9801d |
|
21-Jan-2014 |
Mark Mendell <mark.p.mendell@intel.com> |
Use macros to remove CFI information for MAC OS/X Place allocation macros inline for x86 as the macros aren't/can't go through the Linux/OSX normalizing macro wrappers. Switch to clang for OS/X host build thereby enabling -std=gnu++11 and -Wthread-safety. Remove the -Wstrict-aliasing numeric option as 3 is the default warning level and warning levels aren't supported by clang's command line. This builds as far as gtests which fail due to assumptions they would only ever compile on non-GCC with RTTI. Change-Id: Id0d83578e9b93b0f6aea5e9b8ddf2815f0dcd8aa Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
|
a9abe872ad5ad6128d6f3fb018b6447962303ecc |
|
10-Jan-2014 |
Mark Mendell <mark.p.mendell@intel.com> |
Make x86 runtime PIC The existing code in runtime/arch/x86 doesn't use PIC code to call routines, and this causes a message that libart{,d}.so having text relocations to be genartion. That message, in turn, messes up running the art-target tests. Change-Id: I7fe5dbb8eed458a0f7bd3713566ee38a5db8e904 Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
|
da0a4dbede243c5ac473db88d44ba6139e7dd87e |
|
03-Jan-2014 |
Ian Rogers <irogers@google.com> |
Remove extraneous CFI from x86 entrypoints to fix backtrace. PUSH/POP are macros that already handle cfi save/restore. Change-Id: I95765e7c4d66acfa2f115ebb343fbab4eca33c08
|
7410f29b4dae223befac036ea567d7f33351dad1 |
|
24-Nov-2013 |
Mathieu Chartier <mathieuc@google.com> |
Fix dumpsys meminfo <pid>. Added a case for BumpPointerSpaces. Confirmed working non-debug. Should also work in debug builds. Bug: 11830794 Change-Id: I12053ff16eec403dcd4a780e13095e3212a77132
|
cbb2d20bea2861f244da2e2318d8c088300a3710 |
|
15-Nov-2013 |
Mathieu Chartier <mathieuc@google.com> |
Refactor allocation entrypoints. Adds support for switching entrypoints during runtime. Enables addition of new allocators with out requiring significant copy paste. Slight speedup on ritzperf probably due to more inlining. TODO: Ensuring that the entire allocation path is inlined so that the switch statement in the allocation code is optimized out. Rosalloc measurements: 4583 4453 4439 4434 4751 After change: 4184 4287 4131 4335 4097 Change-Id: I1352a3cbcdf6dae93921582726324d91312df5c9
|
590fee9e8972f872301c2d16a575d579ee564bee |
|
13-Sep-2013 |
Mathieu Chartier <mathieuc@google.com> |
Compacting collector. The compacting collector is currently similar to semispace. It works by copying objects back and forth between two bump pointer spaces. There are types of objects which are "non-movable" due to current runtime limitations. These are Classes, Methods, and Fields. Bump pointer spaces are a new type of continuous alloc space which have no lock in the allocation code path. When you allocate from these it uses atomic operations to increase an index. Traversing the objects in the bump pointer space relies on Object::SizeOf matching the allocated size exactly. Runtime changes: JNI::GetArrayElements returns copies objects if you attempt to get the backing data of a movable array. For GetArrayElementsCritical, we return direct backing storage for any types of arrays, but temporarily disable the GC until the critical region is completed. Added a new runtime call called VisitObjects, this is used in place of the old pattern which was flushing the allocation stack and walking the bitmaps. Changed image writer to be compaction safe and use object monitor word for forwarding addresses. Added a bunch of added SIRTs to ClassLinker, MethodLinker, etc.. TODO: Enable switching allocators, compacting on background, etc.. Bug: 8981901 Change-Id: I3c886fd322a6eef2b99388d19a765042ec26ab99
|
bbb32c277b800a8ee378c16a3645ab6d4d19aef1 |
|
06-Nov-2013 |
Dave Allison <dallison@google.com> |
Add .cfi_restore for assembly functions Bug: 11256318 This adds .cfi_restore directives to the assembly language functions for ARM, MIPS and x86. Change-Id: Ic5a80e190aa6cf2d2fcfaecec14de03221ff386b
|
ad2541a59c00c2c69e8973088891a2b5257c9780 |
|
25-Oct-2013 |
Mathieu Chartier <mathieuc@google.com> |
Fix object identity hash. The object identity hash is now stored in the monitor word after being computed. Hashes are computed by a pseudo random number generator. When we write the image, we eagerly compute object hashes to prevent pages getting dirtied. Bug: 8981901 Change-Id: Ic8edacbacb0afc7055fd740a52444929f88ed564
|
88474b416eb257078e590bf9bc7957cee604a186 |
|
24-Oct-2013 |
Jeff Hao <jeffhao@google.com> |
Implement Interface Method Tables (IMT). Change-Id: Idf7fe85e1293453a8ad862ff2380dcd5db4e3a39
|
1984152ac92aad244ae15184d12f9ceade686b7b |
|
22-Oct-2013 |
Mathieu Chartier <mathieuc@google.com> |
Add missing callee save restore to quick entrypoints. Added callee save restoration to art_quick_proxy_invoke_handler, art_quick_resolution_trampoline, art_quick_to_interpreter_bridge. Bug: 8981901 Change-Id: Iaa5bf862834b49cc48bce4f4ffa34a6797024e6d
|
2a6c7b7c21adcd4493542604305585b852ccf554 |
|
16-Oct-2013 |
Mathieu Chartier <mathieuc@google.com> |
Restore callee save registers. The callee saves weren't all being restored as an optimiation, but this breaks compaction if register promotion is enabled. The reason for this is that these registers may contain references which the GC will update. Change-Id: I810f56b4ed1f92c632155e30c0838269cb95f3c5
|
a9a8254c920ce8e22210abfc16c9842ce0aea28f |
|
04-Oct-2013 |
Ian Rogers <irogers@google.com> |
Improve quick codegen for aput-object. 1) don't type check known null. 2) if we know types in verify don't check at runtime. 3) if we're runtime checking then move all the code out-of-line. Also, don't set up a callee-save frame for check-cast, do an instance-of test then throw an exception if that fails. Tidy quick entry point of Ldivmod to Lmod which it is on x86 and mips. Fix monitor-enter/exit NPE for MIPS. Fix benign bug in mirror::Class::CannotBeAssignedFromOtherTypes, a byte[] cannot be assigned to from other types. Change-Id: I9cb3859ec70cca71ed79331ec8df5bec969d6745
|
d9c4fc94fa618617f94e1de9af5f034549100753 |
|
02-Oct-2013 |
Ian Rogers <irogers@google.com> |
Inflate contended lock word by suspending owner. Bug 6961405. Don't inflate monitors for Notify and NotifyAll. Tidy lock word, handle recursive lock case alongside unlocked case and move assembly out of line (except for ARM quick). Also handle null in out-of-line assembly as the test is quick and the enter/exit code is already a safepoint. To gain ownership of a monitor on behalf of another thread, monitor contenders must not hold the monitor_lock_, so they wait on a condition variable. Reduce size of per mutex contention log. Be consistent in calling thin lock thread ids just thread ids. Fix potential thread death races caused by the use of FindThreadByThreadId, make it invariant that returned threads are either self or suspended now. Code size reduction on ARM boot.oat 0.2%. Old nexus 7 speedup 0.25%, new nexus 7 speedup 1.4%, nexus 10 speedup 2.24%, nexus 4 speedup 2.09% on DeltaBlue. Change-Id: Id52558b914f160d9c8578fdd7fc8199a9598576a
|
3b4c18933c24b8a33f38573c2ebcdb9aa16efeb5 |
|
13-Sep-2013 |
Hiroshi Yamauchi <yamauchi@google.com> |
Split the allocation path into 'instrumented' and 'uninstrumented' ones. The instrumented path is equivalent to the existing allocation path that checks for three instrumentation mechanisms (the debugger allocation tracking, the runtime allocation stats collection, and valgrind) for every allocation. The uinstrumented path does not perform these checks. We use the uninstrumented path by default and enable the instrumented path only when any of the three mechanisms is enabled. The uninstrumented version of Heap::AllocObject() is inlined. This change improves the Ritz MemAllocTest by ~4% on Nexus 4 and ~3% on Host/x86. Bug: 9986565 Change-Id: I3e68dfff6789d77bbdcea98457b694e1b5fcef5f
|
468532ea115657709bc32ee498e701a4c71762d4 |
|
05-Aug-2013 |
Ian Rogers <irogers@google.com> |
Entry point clean up. Create set of entry points needed for image methods to avoid fix-up at load time: - interpreter - bridge to interpreter, bridge to compiled code - jni - dlsym lookup - quick - resolution and bridge to interpreter - portable - resolution and bridge to interpreter Fix JNI work around to use JNI work around argument rewriting code that'd been accidentally disabled. Remove abstact method error stub, use interpreter bridge instead. Consolidate trampoline (previously stub) generation in generic helper. Simplify trampolines to jump directly into assembly code, keeps stack crawlable. Dex: replace use of int with ThreadOffset for values that are thread offsets. Tidy entry point routines between interpreter, jni, quick and portable. Change-Id: I52a7c2bbb1b7e0ff8a3c3100b774212309d0828e (cherry picked from commit 848871b4d8481229c32e0d048a9856e5a9a17ef9)
|
848871b4d8481229c32e0d048a9856e5a9a17ef9 |
|
05-Aug-2013 |
Ian Rogers <irogers@google.com> |
Entry point clean up. Create set of entry points needed for image methods to avoid fix-up at load time: - interpreter - bridge to interpreter, bridge to compiled code - jni - dlsym lookup - quick - resolution and bridge to interpreter - portable - resolution and bridge to interpreter Fix JNI work around to use JNI work around argument rewriting code that'd been accidentally disabled. Remove abstact method error stub, use interpreter bridge instead. Consolidate trampoline (previously stub) generation in generic helper. Simplify trampolines to jump directly into assembly code, keeps stack crawlable. Dex: replace use of int with ThreadOffset for values that are thread offsets. Tidy entry point routines between interpreter, jni, quick and portable. Change-Id: I52a7c2bbb1b7e0ff8a3c3100b774212309d0828e
|
834b394ee759ed31c5371d8093d7cd8cd90014a8 |
|
31-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Merge remote-tracking branch 'goog/dalvik-dev' into merge-art-to-dalvik-dev Change-Id: I323e9e8c29c3e39d50d9aba93121b26266c52a46
|
7655f29fabc0a12765de828914a18314382e5a35 |
|
29-Jul-2013 |
Ian Rogers <irogers@google.com> |
Portable refactorings. Separate quick from portable entrypoints. Move architectural dependencies into arch. Change-Id: I9adbc0a9782e2959fdc3308215f01e3107632b7c
|
166db04e259ca51838c311891598664deeed85ad |
|
26-Jul-2013 |
Ian Rogers <irogers@google.com> |
Move assembler out of runtime into compiler/utils. Other directory layout bits of clean up. There is still work to separate quick and portable in some files (e.g. argument visitor, proxy..). Change-Id: If8fecffda8ba5c4c47a035f0c622c538c6b58351
|