fc6898769ae1ef91ec3e41c0a273401213cb82cd |
|
26-Apr-2016 |
Andreas Gampe <agampe@google.com> |
ART: Log all monitor operations to systrace Add a VLOG option ("-verbose:systrace-locks") to log all monitor operations to systrace. This requires non-fastpath thread entrypoints, and ATRACE tags for locking and unlocking. Do a bit of cleanup to the entrypoint initialization to share common setup. Bug: 28423466 Change-Id: Ie67e4aa946ec15f8fcf8cb7134c5d3cff0119ab3
|
59028d90d51a800bcea8be354d77d7be924da3a0 |
|
29-Mar-2016 |
Goran Jakovljevic <Goran.Jakovljevic@imgtec.com> |
MIPS: Improving art_quick_imt_conflict_trampoline This is fixing stub_test for MIPS32 and MIPS64. This is follow up change for Ie74d1c77cf73d451a1142bdc5e3683f9f84bb4e7. Change-Id: I3c53ef690aff49d7cf9ad3de3aaed9a3d2e1c6b9
|
3bc13817a19e36f3833bb44624ef86800892eaad |
|
22-Mar-2016 |
Goran Jakovljevic <Goran.Jakovljevic@imgtec.com> |
Implement on-stack replacement for MIPS32 and MIPS64 Change-Id: I4e589f0597b597adff95e1289f20deb2eab97e9b
|
590b1362b64d7feeb688d787c1d140d9b7ca78b1 |
|
21-Mar-2016 |
Goran Jakovljevic <Goran.Jakovljevic@imgtec.com> |
Suppress MIPS32 assembler warnings Suppressing "no .cprestore pseudo-op used in PIC code". Suppressing "used $at without .set noat". Fixing some typos. Change-Id: I45267890b070cee3dd7f3708cf73e157a08f798e
|
10d4c08c0ea9df0a85a11e1c77974df24078c0ec |
|
24-Feb-2016 |
Hiroshi Yamauchi <yamauchi@google.com> |
Assembly region TLAB allocation fast path for arm. This is for the CC collector. Share the common fast path code with the tlab fast path code. Speedup (on N5): BinaryTrees: 2291 -> 902 ms (-60%) MemAllocTest: 2137 -> 1845 ms (-14%) Bug: 9986565 Bug: 12687968 Change-Id: Ica63094ec2f85eaa4fd04d202a20090399275d85
|
cf283daf579e9eda586f312c3fc89444601e2525 |
|
20-Jan-2016 |
Chris Larsen <chris.larsen@imgtec.com> |
MIPS32: java.lang.Thread, and java.lang.String intrinsics: - Thread java.lang.Thread.currentThread() - int java.lang.String.compareTo(String anotherString) - int java.lang.String.indexOf(int ch) - int java.lang.String.indexOf(int ch, int fromIndex) - java.lang.StringFactory.newStringFromBytes(byte[] data, int high, int offset, int byteCount) - java.lang.StringFactory.newStringFromChars(int offset, int charCount, char[] data) - java.lang.StringFactory.newStringFromString(String toCopy) Change-Id: I96a06ff81e1e3bf18d45760282356854efaf4945
|
712c59d160325d5759300427ab596cf8321a4156 |
|
02-Dec-2015 |
Pavle Batuta <pavle.batuta@imgtec.com> |
Rosalloc fast path in assembly for MIPS32 Tested with GCBench (http://hboehm.info/gc/gc_bench/GCBench.java): Measurements (less is better): 11546 -> 10730 [ms] (7.1%) Change-Id: Ie00442314b18295e68c2e91251e6dcf8c2a8eae2
|
a7a4759946d9f11c88dc108b2b6a9518ce9c1e18 |
|
24-Nov-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "lambda: Add support for invoke-interface for boxed innate lambdas" 955-lambda is flaky Bug: 24618608 Bug: 25107649 This reverts commit 457e874459ae638145cab6d572e34d48480e39d2. (cherry picked from commit 3a0909248e04b22c3981cbf617bc2502ed5b6380) Change-Id: I24884344d21d7a4262e53e3f5dba57032687ddb7
|
3a0909248e04b22c3981cbf617bc2502ed5b6380 |
|
24-Nov-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "lambda: Add support for invoke-interface for boxed innate lambdas" 955-lambda is flaky Bug: 24618608 Bug: 25107649 This reverts commit 457e874459ae638145cab6d572e34d48480e39d2. Change-Id: I24884344d21d7a4262e53e3f5dba57032687ddb7
|
457e874459ae638145cab6d572e34d48480e39d2 |
|
23-Oct-2015 |
Igor Murashkin <iam@google.com> |
lambda: Add support for invoke-interface for boxed innate lambdas Lambda closures created with the 'create-lambda' instruction (termed "innate lambdas") can be turned into an object with 'box-lambda'. This CL enables support for those kinds of lambdas to work with 'invoke-interface' by generating a proxy class for the lambda. Note: MIPS32/64 support not included. Bug: 24618608 Bug: 25107649 Change-Id: Ic8f1bb66ebeaed4097e758a50becf1cff6ccaefb
|
75969963213c39a029e01c3b9440fb388d793afb |
|
27-Oct-2015 |
Goran Jakovljevic <Goran.Jakovljevic@imgtec.com> |
MIPS32: Move code from RA to T9 in longjump Do not use the return address. It should not be clobbered as we may need it, e.g., for single-frame deopt. This fixes following tests: * 449-checker-bce * 534-checker-bce-deoptimization * 535-deopt-and-inlining Change-Id: Ic94a2897c7336da094a8937ab1bc4a02a680de53
|
0747466fca310eedea5fc49e37d54f240a0b3c0f |
|
25-Aug-2015 |
Sebastien Hertz <shertz@google.com> |
Revert "Revert "Fix deoptimization with pending exception"" This reverts commit 6e2d5747d00697a25251d25dd33b953e54709507. Fixes the deoptimization path from compiled code (generated by the Optimizing compiler) by adding wrapper artDeoptimizeFromCompiledCode. This wrapper, called through the matching assembler stub art_quick_deoptimize_from_compiled_code, pushes the deoptimization context just before deoptimizing the stack. Bug: 23371176 Bug: 19944235 Change-Id: Ia7082656998aebdd0157438f7e6504c120e10d3e
|
ff73498a5539d87424a964265e43765e788aec44 |
|
24-Aug-2015 |
Goran Jakovljevic <Goran.Jakovljevic@imgtec.com> |
Revert "Revert "[MIPS] Use hard float calling convention for managed code"" This reverts commit 7fee84c087e0f903e7d43bef180df047db1c8051. Fixed issue with temporary registers on Mips32r6. Change-Id: I93018927e6a6036cff2d55e6cda66d3212a4316b
|
6306921722283d2b0f8aac01883ad83215d6e864 |
|
22-Aug-2015 |
Man Cao <manc@google.com> |
Add a missing reader barrier in entrypoint stub Also refactored some comments. Change-Id: I5c50f487bf9d71f1be5f6c8814bf039993fc1267
|
7fee84c087e0f903e7d43bef180df047db1c8051 |
|
21-Aug-2015 |
Vladimir Marko <vmarko@google.com> |
Revert "[MIPS] Use hard float calling convention for managed code" MipsMir2Lir::LockCallTemps() is broken for secondary architecture on aosp_mips64-eng. This reverts commit a29449dcf57c57fe0876f51367985477317cc557. Change-Id: I480ea7569d73aea7894fc0a6dd804b1135286a37
|
a29449dcf57c57fe0876f51367985477317cc557 |
|
22-Jul-2015 |
Goran Jakovljevic <Goran.Jakovljevic@imgtec.com> |
[MIPS] Use hard float calling convention for managed code Note that this isn't o32 ABI. Same set of registers is used for arguments ($a0-$a3 and $f12-$f15), but we don't skip registers and fp arguments are never passed via core registers. Change-Id: Ifb883ff6e15758b539137898b49ac2f8ee075f49
|
1aee900d5a0b3a8d78725a7551356bda0d8554e1 |
|
15-Jul-2015 |
Man Cao <manc@google.com> |
Add read barrier support to the entrypoints. Also remove "THIS_LOAD_REQUIRES_READ_BARRIER" since reading an ArtMethod* no longer needs read barrier. stub_test should also work with read barriers now. Change-Id: I3fba18042de2f867a18dbdc38519986212bd9769
|
3031c8da0c5009183f770b005c245f9bf2a4d01b |
|
14-Jul-2015 |
Andreas Gampe <agampe@google.com> |
ART: Remove art_quick_invoke_interface_trampoline The function has only been used by the IMT conflict resolution trampoline for a while. Merge the two, which saves a branch. Change-Id: I2f8c9204adf839ddc5459cc04e70d98f858110a1
|
618fdff93cec53c0ed234898f2d42f38a25e3b66 |
|
10-Jun-2015 |
Lazar Trsic <Lazar.Trsic@imgtec.com> |
[MIPS] Fix method tracing for mips64 Reg $v0 is being clobbered on using SETUP_REFS_ONLY_CALLEE_SAVE_FRAME inside instrumentation_exit() trampoline, when falling through from instrumentation_entry(). To fix, use $t1 for ArtMethod* fetching inside SETUP_ macros. Also fix some unrelated comment errors. Bug: 21555893 (cherry picked from commit 84bc06e30ba12c3ff07e577c52b63b9df162af7e) Change-Id: I4ab169f75988c4f0d924416a30196f21c1a043a3
|
84bc06e30ba12c3ff07e577c52b63b9df162af7e |
|
10-Jun-2015 |
Lazar Trsic <Lazar.Trsic@imgtec.com> |
[MIPS] Fix method tracing for mips64 Reg $v0 is being clobbered on using SETUP_REFS_ONLY_CALLEE_SAVE_FRAME inside instrumentation_exit() trampoline, when falling through from instrumentation_entry(). To fix, use $t1 for ArtMethod* fetching inside SETUP_ macros. Also fix some unrelated comment errors. Change-Id: I4ab169f75988c4f0d924416a30196f21c1a043a3
|
bfa5eb6e8d15ea73a36f8df449630f285a91e995 |
|
30-May-2015 |
Hiroshi Yamauchi <yamauchi@google.com> |
Add heap poisoning support to the entrypoints. In preparation for full compiler/managed-code support. Enable stub_test with heap poisoning. Bug: 12687968 Change-Id: I79fc54ce6386c0a1eb9621759bb4cc23bc393a75
|
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
|
e401d146407d61eeb99f8d6176b2ac13c4df1e33 |
|
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 Change-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d
|
f60cb1f8de690854a3895d6190117dd0ff5f4feb |
|
28-May-2015 |
Andreas Gampe <agampe@google.com> |
ART: Add Mips o32 callee-save registers to SaveAll frame The floating point registers f20-f31 are callee-save in the Mips ABI. While the managed code does not touch them, they need to be saved when throwing an exception, so that they will be correctly restored and not smashed. Bug: 21266656 (cherry picked from commit a4e0e67611f54180694e0807d6599c1132269b6c) Change-Id: Ia96d52ce7fb41bf604da1797ce4d7a703e292415
|
a4e0e67611f54180694e0807d6599c1132269b6c |
|
28-May-2015 |
Andreas Gampe <agampe@google.com> |
ART: Add Mips o32 callee-save registers to SaveAll frame The floating point registers f20-f31 are callee-save in the Mips ABI. While the managed code does not touch them, they need to be saved when throwing an exception, so that they will be correctly restored and not smashed. Bug: 21266656 Change-Id: Ia96d52ce7fb41bf604da1797ce4d7a703e292415
|
8ea18d0f066f63fa4e5d154f14327468bf288e2b |
|
26-May-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Pass the dex method index directly to interface trampoline. This avoids computing the dex pc and re-finding the method index again. I have kept the code for kDebugBuild. Change-Id: Icd60e0deade755e32b54021c0875b1af592b8c3e
|
7ea6a170486d81b127e69673cd1020c4db628c93 |
|
19-May-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Don't hardcode the location of the caller. This is to avoid shooting ourselves in the foot when dealing with inlined frames. Instead, use common methods for fetching the caller and its dex pc. Change-Id: I3467a7b50cf163022d332e80356f0aab747de252
|
a3c382738bc54f464a57e2b51b51ad305eb03dd2 |
|
28-Apr-2015 |
Vladimir Marko <vmarko@google.com> |
ART: Fix MIPS entrypoint downcall macros. Broken by not updating the MIPS assembly after rebase of https://android-review.googlesource.com/79174 Change-Id: I6258c254c0652e92357d306640c461d9523da227
|
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
|
f96e8bdf47cfcbecd8ad8ebceb765e5a257ca143 |
|
27-Mar-2015 |
Douglas Leung <douglas.leung@imgtec.com> |
Fix 099-vmdebug and 802-deoptimization art tests for Mips. There are 2 bugs that are causing these 2 tests to fail the same way. The first one is we should be using $t9 for function calls so $gp can be calculated correctly. The second bug is there can't be a gap between the quick frame and the callee save frame, otherwise the WalkStack() function will get confused and crash. Bug: 19003184 Change-Id: I3c545ce18268deb73150fca2a7d7a798540f1cf2
|
126d65952a03b3e44d5021208673c01920a982a4 |
|
03-Mar-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Fix generic JNI stubs to not discard the Java native frame. Change-Id: Ic856b442fdde5ce91673fc5856eb0dfc84c75d28
|
8d36591d93920e7b7830c3ffee3759b561f5339e |
|
13-Jan-2015 |
Andreas Gampe <agampe@google.com> |
ART: Use jalr instead of jr for Mips Use the jalr instruction instead of jr in stubs and compiled code. Change-Id: Idacc5167a5bb0113dc2e7716e4767e5ed07b5e0b
|
c6d86725521841637bdd9564e71be3d9691db20f |
|
11-Dec-2014 |
Douglas Leung <douglas.leung@imgtec.com> |
Fix refs_and_args callee save order for Mips32. This patch fixes an ART crash while using the soft keyboard. Change-Id: Ib2d651c460ce2707356986cd733bed23b0cabb21
|
1cc7dbabd03e0a6c09d68161417a21bd6f9df371 |
|
18-Dec-2014 |
Andreas Gampe <agampe@google.com> |
ART: Reorder entrypoint argument order Shuffle the ArtMethod* referrer backwards for easier removal. Clean up ARM & MIPS assembly code. Change some macros to make future changes easier. Change-Id: Ie2862b68bd6e519438e83eecd9e1611df51d7945
|
475cfd8ff9dcc73d1a7502c9310efe0f1a30337f |
|
17-Dec-2014 |
Douglas Leung <douglas.leung@imgtec.com> |
Fix typo bug for Mips32. Change-Id: I429038ee6748d538fa03da819777f3456a4fd9a5
|
e34652f15f32666323052a6718a63248244f1e66 |
|
04-Nov-2014 |
Duane Sand <duane.sand@imgtec.com> |
[MIPSR6] Adjust assembly routines for MIPS R6 isa Change-Id: I771b58b9e8054bb99cd01a7f713ff8e29a9ae5d3
|
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
|
735b8559d6dd26c610d4b97d72f25a092d9c8947 |
|
31-Oct-2014 |
Douglas Leung <douglas.leung@imgtec.com> |
Add JNI trampoline for mips32. This patch allows the browser to come up. Change-Id: Icad9da868be76d6a08e615807fad8678ac0a110f
|
13738bf7c769638b7922cb2477471ad382632bc2 |
|
27-Oct-2014 |
Douglas Leung <douglas.leung@imgtec.com> |
Add gp initialization to the art_quick_imt_conflict_trampoline() function. The gp register is needed by the "la" instruction. Change-Id: I4f2dcddba503f403dd6532d0db65ddd7df1f9626
|
4af77b7636fe98aae443b46a241fd9a29f16e291 |
|
23-Oct-2014 |
Douglas Leung <douglas.leung@imgtec.com> |
Do not use ld instruction for Mips32. Change-Id: If577b8011edb583779360934f4e50ff1779e1b70
|
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
|
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
|
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
|
c3d131e1ec030b4ff5c44fe2a45d5fb45b3295af |
|
17-Jul-2014 |
Douglas Leung <douglas@mips.com> |
Fix test 304-method-tracing failure for Mips. Change-Id: Id5ce9fd3c880dd568b11a1deea7e42ea587934ba Signed-off-by: Douglas Leung <douglas@mips.com>
|
b264937893fd12bce84681a6d9da6de99ebe6aa4 |
|
03-Jun-2014 |
Douglas Leung <douglas@mips.com> |
Fix reflection_test failures. This change also allows the Mips emulator to boot in interpreter mode. Change-Id: Id1d5d65df79f65a747d37ddce6dd79906d1f4fcf Signed-off-by: Douglas Leung <douglas@mips.com>
|
ffddfdf6fec0b9d98a692e27242eecb15af5ead2 |
|
03-Jun-2014 |
Tim Murray <timmurray@google.com> |
DO NOT MERGE Merge ART from AOSP to lmp-preview-dev. Change-Id: I0f578733a4b8756fd780d4a052ad69b746f687a9
|
748dd957eecbce2f379a3182ce95c19be308a54e |
|
23-May-2014 |
Chris Dearman <chris.dearman@imgtec.com> |
[MIPS] Remove warnings about use of at register Also, don't restore k0 and k1 as part of long jump as they are reserved for kernel usage. Change-Id: I4eec9eb5d21de96ca79f2cef9407a0e19c9c2178
|
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
|
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
|
86bcdc251f5ae22fcedd18c096ea538b7dbfa8cb |
|
22-Feb-2014 |
Ian Rogers <irogers@google.com> |
Make MIPS assembly labels local. Avoids the symbols being part of the symbol file and confusing tools like gdb. Change-Id: If8b24278fafcae5466debc8789e3e2935cf173f6
|
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
|
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
|
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
|
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
|
6bcd163d322b867578fbcfe60e4e3b247c42974b |
|
09-Oct-2013 |
Ian Rogers <irogers@google.com> |
Fix exception throwing in monitor-enter for MIPS. Need to deliver pending exception. Change-Id: I1bceb1b0d866acc7b3190e7c661993ad43fc1769
|
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
|
eb1efc4575e93543ed459c7ee5c6c36109e69b5f |
|
27-Sep-2013 |
Ian Rogers <irogers@google.com> |
MIPS fix. Bug 10094803. Resolution stub needs to set $t9 to ensure the global pointer is calculated correctly. Fix copy-paste error in resolution stub in function being invoked. Change-Id: I330b3052f87f47c10cbde2f7e6b271664185d7b0 (cherry picked from commit 65d1b22d0b02fb0111f69013163c8170e68392f1)
|
65d1b22d0b02fb0111f69013163c8170e68392f1 |
|
27-Sep-2013 |
Ian Rogers <irogers@google.com> |
MIPS fix. Bug 10094803. Resolution stub needs to set $t9 to ensure the global pointer is calculated correctly. Fix copy-paste error in resolution stub in function being invoked. Change-Id: I330b3052f87f47c10cbde2f7e6b271664185d7b0
|
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
|