summaryrefslogtreecommitdiffstats
path: root/runtime/arch/stub_test.cc
Commit message (Collapse)AuthorAgeFilesLines
* Move mirror::ArtMethod to nativeMathieu Chartier2015-06-021-63/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Merge "Add stub_test implementation for mips & mips64"Andreas Gampe2015-05-081-26/+307
|\
| * Add stub_test implementation for mips & mips64Goran Jakovljevic2015-05-071-26/+307
| | | | | | | | Change-Id: I1c2f6633ff78f7d453ba90e96c26df5a79a5b207
* | Fix stub_test for Mips64Goran Jakovljevic2015-05-081-0/+4
|/ | | | | | | | | | Force ENTRY macro to load GP. Instead .cpload (used for o32 abi, not working for n64) use .cpsetup to set up GP and save previous GP value. Fix expectations in GetSet32Static. Change-Id: Ie97e32fa2fee7a6e8bae6bc36e78976b8be62b79
* Replace String CharArray with internal uint16_t array.Jeff Hao2015-04-271-19/+2
| | | | | | | | | | | | 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
* Replace NULL with nullptrMathieu Chartier2015-04-221-9/+9
| | | | | | | Also fixed some lines that were too long, and a few other minor details. Change-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb
* ART: Clean up includes.Vladimir Marko2015-04-131-0/+1
| | | | | | | Reduce dependencies to improve incremental build times. Break up circular dependency involving class_linker-inl.h. Change-Id: I4be742c5c2b5cd9855beea86630fd68aab76b0db
* Move ArtField to nativeMathieu Chartier2015-04-101-164/+132
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add linear alloc. Moved ArtField to be native object. Changed image writer to put ArtFields after the mirror section. Savings: 2MB on low ram devices 4MB on normal devices Total PSS measurements before (normal N5, 95s after shell start): Image size: 7729152 bytes 23112 kB: .NonMoving 23212 kB: .NonMoving 22868 kB: .NonMoving 23072 kB: .NonMoving 22836 kB: .NonMoving 19618 kB: .Zygote 19850 kB: .Zygote 19623 kB: .Zygote 19924 kB: .Zygote 19612 kB: .Zygote Avg: 42745.4 kB After: Image size: 7462912 bytes 17440 kB: .NonMoving 16776 kB: .NonMoving 16804 kB: .NonMoving 17812 kB: .NonMoving 16820 kB: .NonMoving 18788 kB: .Zygote 18856 kB: .Zygote 19064 kB: .Zygote 18841 kB: .Zygote 18629 kB: .Zygote 3499 kB: .LinearAlloc 3408 kB: .LinearAlloc 3424 kB: .LinearAlloc 3600 kB: .LinearAlloc 3436 kB: .LinearAlloc Avg: 39439.4 kB No reflection performance changes. Bug: 19264997 Bug: 17643507 Change-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c
* Compute the right catch location for the debugger.Nicolas Geoffray2015-03-091-2/+2
| | | | | | Also remove tls ThrowLocation, it is not needed anymore. Change-Id: I78fddf09ce968ca475e39c17fa76d699c589c8d9
* ART: Add -WunusedAndreas Gampe2015-02-241-0/+15
| | | | | | | Until the global CFLAGS are fixed, add Wunused. Fix declarations in the optimizing compiler. Change-Id: Ic4553f08e809dc54f3d82af57ac592622c98e000
* Revert "Revert "ART: Implement X86 hard float (Quick/JNI/Baseline)""Mark P Mendell2015-01-271-1/+1
| | | | | | | | | | 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
* Revert "ART: Implement X86 hard float (Quick/JNI/Baseline)"Vladimir Marko2015-01-271-1/+1
| | | | | | | | | | | | | And the 3 Mac build fixes. Fix conflicts in context_x86.* . This reverts commits 3d2c8e74c27efee58e24ec31441124f3f21384b9 , 34eda1dd66b92a361797c63d57fa19e83c08a1b4 , f601d1954348b71186fa160a0ae6a1f4f1c5aee6 , bc503348a1da573488503cc2819c9e30807bea31 . Bug: 19150481 Change-Id: I6650ee30a7d261159380fe2119e14379e4dc9970
* ART: Implement X86 hard float (Quick/JNI/Baseline)Mark Mendell2015-01-231-1/+1
| | | | | | | | | | | | | | | | | 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>
* ART: Fix stub_testAndreas Gampe2015-01-211-2/+2
| | | | | | | Change x86-64 inline assembly to work with fno-omit-frame-pointer. Bug: 18722517 Change-Id: I2ddb80abc9ada63fe5de9ccdd12b37df5c0001b7
* ART: Allow scoped adjustments to log verbosityAndreas Gampe2015-01-151-0/+9
| | | | | | | | | Add ScopedLogSeverity to adjust the logging level. Suppress warnings by default in gtests. Suppress errors in instances where errors are expected. Change-Id: If3ef865813e9505ab60bc90baed63ff11d90afbb
* Revert "ART: Implement hard float for X86"Vladimir Marko2015-01-121-1/+1
| | | | | | This reverts commit 59b9cf7ec0ccc13df91be0bd5c723b8c52410739. Change-Id: I08333b528032480def474286dc368d916a07e17f
* ART: Implement hard float for X86Mark Mendell2015-01-121-1/+1
| | | | | | | | | | | | | | 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>
* ART: Reorder entrypoint argument orderAndreas Gampe2014-12-291-3/+5
| | | | | | | | | | 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
* ART: More warningsAndreas Gampe2014-11-041-9/+9
| | | | | | | Enable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general, and -Wunused-but-set-parameter for GCC builds. Change-Id: I81bbdd762213444673c65d85edae594a523836e5
* Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.Ian Rogers2014-11-031-35/+25
| | | | | | | | | | | Fix associated errors about unused paramenters and implict sign conversions. For sign conversion this was largely in the area of enums, so add ostream operators for the effected enums and fix tools/generate-operator-out.py. Tidy arena allocation code and arena allocated data types, rather than fixing new and delete operators. Remove dead code. Change-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b
* C++11 related clean-up of DISALLOW_..Ian Rogers2014-10-221-1/+1
| | | | | | | | | | | | | | | | | | Move DISALLOW_COPY_AND_ASSIGN to delete functions. By no having declarations with no definitions this prompts better warning messages so deal with these by correcting the code. Add a DISALLOW_ALLOCATION and use for ValueObject and mirror::Object. Make X86 assembly operand types ValueObjects to fix compilation errors. Tidy the use of iostream and ostream. Avoid making cutils a dependency via mutex-inl.h for tests that link against libart. Push tracing dependencies into appropriate files and mutex.cc. x86 32-bit host symbols size is increased for libarttest, avoid copying this in run-test 115 by using symlinks and remove this test's higher than normal ulimit. Fix the RunningOnValgrind test in RosAllocSpace to not use GetHeap as it returns NULL when the heap is under construction by Runtime. Change-Id: Ia246f7ac0c11f73072b30d70566a196e9b78472b
* Refactor quick entrypointsIan Rogers2014-10-201-40/+28
| | | | | | | | | | | 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
* Make ART compile with GCC -O0 again.Ian Rogers2014-10-161-2/+2
| | | | | | | | | | | | | 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
* ART: Fix StubTest Interface Trampoline testAndreas Gampe2014-09-021-52/+33
| | | | | | | | | | The imt conflict test does not actually need a proper conflict, as we do not invoke through a lookup. Added simple check for art_quick_invoke_interface_trampoline_with_access_check. Only non-failure testing, as failure requires a properly setup frame etc. Change-Id: I173dac04db950bd23f62eaf13341a7b19802e5e8
* Reduced memory usage of primitive fields smaller than 4-bytesFred Shih2014-08-251-0/+349
| | | | | | | | | | 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
* ART: Set default visibility to protectedAndreas Gampe2014-08-191-111/+79
| | | | | | | | | | | | | | | 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
* Break apart header files.Ian Rogers2014-07-151-3/+4
| | | | | | | | Create libart-gtest for common runtime and compiler gtest routines. Rename CompilerCallbacksImpl that is quick compiler specific. Rename trace clock source constants to not use the overloaded profiler term. Change-Id: I4aac4bdc7e7850c68335f81e59a390133b54e933
* Improve performance of invokevirtual/invokeinterface with embedded imt/vtableMingyao Yang2014-07-111-2/+2
| | | | | | | | | Add an embedded version of imt/vtable into class object. Both tables start at fixed offset within class object so method/entry point can be loaded directly from class object for invokeinterface/invokevirtual. Bug: 8142917 Change-Id: I4240d58cfbe9250107c95c0708c036854c455968
* AArch64: Add memcmp16() for Arm64; ensure xSELF not clobberedSerban Constantinescu2014-06-301-2/+6
| | | | | | | | | | | | | | | | | This patch modifies memcmp() to memcmp16(). Please note that this implementation of memcmp16() is based on the bionic's memcmp(). However, to reflect a recent specification change, the file has been modified to respect the new String.compareTo() behavior. A test for memcmp16() has been added. The string_compareto test in stub_test has been changed to invoke __memcmp16 in assembly stubs. Add artIsAssignableFromCode to the list of native downcalls to store and reload x18. Remove CheckSuspendFromCode, as it is unused. Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com> Change-Id: Ie0b5425ecfb62906d29a5d02e84c7e07ffb34a11
* Fix the Mac build on x86-64.Ian Rogers2014-06-251-32/+32
| | | | Change-Id: I4ed3783a96d844de0b0a295df26d0a48c02a3726
* Disable StubTest.IndexOf if heap poisoning is enabled for now.Hiroshi Yamauchi2014-06-161-0/+2
| | | | | | | art_quick_indexof does not support heap poisoning yet. Bug: 12687968 Change-Id: Ibc497cc782399f0d8e0d3dca59e1ebb358fe83a5
* ART: Add initialize_type stubs for ARM64; indexof testAndreas Gampe2014-06-121-2/+80
| | | | | | Add down-call stubs for ARM64. Add a test for indexof in stub_test. Change-Id: I7bc045e29e4ca11ded5b318c47544edc1266afdb
* Remove deprecated WITH_HOST_DALVIK.Ian Rogers2014-06-101-3/+5
| | | | | | | | | | | | | | | | | | | | | | | 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
* ART: Fix inline assembly constraints in stub_testAndreas Gampe2014-06-071-16/+20
| | | | | | | | | | GCC 4.9 is the first compiler actually using the (incorrect) absence of the memory clobber constraint to elide some stores and reloads to the thread, leaving garbage in there on exit of the invoke method when the called stub will reach C code with FinishCalleeSaveFrame. Change-Id: I3afe9926bf537e6e92e3ad44eb6541776ac0e75f
* Change FieldHelper to use a handle.Mathieu Chartier2014-06-061-6/+4
| | | | | | | | | | | | | | | | Fixed compaction bugs related to FieldHelper::GetType in: artSet32InstanceFromCode SetFieldValueImpl CheckReceiver Field_set interpreter::DoFieldPut MethodVerifier::VerifyISGet MethodVerifier::VerifyISPut MethodVerifier::VerifyIGetQuick Bug: 13077697 Change-Id: I7de9ded2893b5568d43e4daa86fd135bf5508b72
* ART: Fix stub_test inline assembly for ARM64Andreas Gampe2014-06-031-78/+71
| | | | | | | | The rebased Clang resolves register constraints differently from before. Change the inline assembly. Bug: 15393246 Change-Id: Iea2c2693f0a035db541ff91f796ee5f997a2ced7
* ART: Use StackReference in Quick Stack FrameAndreas Gampe2014-05-291-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | The method reference at the bottom of a quick frame is a stack reference and not a native pointer. This is important for 64b architectures, where the notions do not coincide. Change key methods to have StackReference<mirror::ArtMethod>* parameter instead of mirror::ArtMethod**. Make changes to invoke stubs for 64b archs, change the frame setup for JNI code (both generic JNI and compilers), tie up loose ends. Tested on x86 and x86-64 with host tests. On x86-64, tests succeed with jni compiler activated. x86-64 QCG was not tested. Tested on ARM32 with device tests. Fix ARM64 not saving x19 (used for wSUSPEND) on upcalls. Tested on ARM64 in interpreter-only + generic-jni mode. Fix ARM64 JNI Compiler to work with the CL. Tested on ARM64 in interpreter-only + jni compiler. Change-Id: I77931a0cbadd04d163b3eb8d6f6a6f8740578f13
* ART: Fix stub test inline assembly for x86Andreas Gampe2014-05-211-1/+1
| | | | | | | Clang can handle the register pressure, but GCC can't. Make one a memory constraint. Change-Id: I49f048b29f5677449bf6ee6282516462332ee645
* ART: Make StubTest IMT sanity check a warningAndreas Gampe2014-05-211-2/+6
| | | | | | | | It seems we can't rely on the specific test against a framework class. Make the sanity check a warning right now, and fix this up later. Change-Id: I673edf33cb4a61e20a4ec806b311deebce86e4de
* ART: Add INVOKE_TRAMPOLINE and imt_conflict stub to 64b architecturesAndreas Gampe2014-05-211-0/+339
| | | | | | | | | "Generalize" the return type notion of the interface helpers. Includes a simple test for imt_conflict. The other interface trampolines are as of yet untested. Change-Id: I30fc75f5103766d57628ff22bcbac7c7f81037e3
* Merge "Now we have a proper C++ library, use std::unique_ptr."Ian Rogers2014-05-201-1/+1
|\
| * Now we have a proper C++ library, use std::unique_ptr.Ian Rogers2014-05-191-1/+1
| | | | | | | | | | | | | | Also remove the Android.libcxx.mk and other bits of stlport compatibility mechanics. Change-Id: Icdf7188ba3c79cdf5617672c1cfd0a68ae596a61
* | ART: Fix ARM64 long-jump context caller-save smashesAndreas Gampe2014-05-191-113/+111
|/ | | | | | | | | | | | | In aarch64, d8-d15 are callee-saved. We smashed exactly the wrong registers. Add code to stub_test that checks whether the callee-saved fp registers are preserved on ARM64. There are no callee-saved registers for x86, so the invoke methods are not extended for those architectures. Fix a minor type in callee-save frame setup for ARM64. Bug: 14160872 Change-Id: I080fce6eda7d560b4efb610f0e9454f3471fa4f9
* Add Handle/HandleScope and delete SirtRef.Mathieu Chartier2014-05-131-166/+153
| | | | | | | | | | | | | | | | Delete SirtRef and replaced it with Handle. Handles are value types which wrap around StackReference*. Renamed StackIndirectReferenceTable to HandleScope. Added a scoped handle wrapper which wraps around an Object** and restores it in its destructor. Renamed Handle::get -> Get. Bug: 8473721 Change-Id: Idbfebd4f35af629f0f43931b7c5184b334822c7a
* Merge "Move quick frame info to OatQuickMethodHeader."Vladimir Marko2014-05-131-1/+2
|\
| * Move quick frame info to OatQuickMethodHeader.Vladimir Marko2014-05-131-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rename OatMethodHeader to OatQuickMethodHeader, move frame info from OatMethodOffsets to OatQuickMethodHeader. Retrieve the info from other places for non-quick methods (portable compiled bytecode or jni stub, generic jni, runtime, abstract and proxy). This change has a libcore/ companion CL "Remove ArtMethod's quick fields for frame size and spills." https://android-review.googlesource.com/94164 Bug: 11767815 Change-Id: I0e31a7875d76732e1ec479c86b9b5ca01203507f
* | ART: Add lock and unlock stubs for ARM64, fix for X86-64Andreas Gampe2014-05-121-44/+85
| | | | | | | | | | | | | | | | | | | | | | | | Basic translation of ARM stubs using dmb memory barrier. Fix placement of dmb in unlock_object of ARM and ARM64. Update lock and unlock tests in stub_test to force fat locks. Fix X86-64 unlock stub. Change-Id: Ie2e4328d9631e06843115888644e75fde8b319ee
* | Merge "Fix stub_test to pass with SS collector."Mathieu Chartier2014-05-121-21/+12
|\ \ | |/ |/|
| * Fix stub_test to pass with SS collector.Mathieu Chartier2014-05-091-21/+12
| | | | | | | | | | | | | | | | | | | | Changed the test to access the allocation entrypoints from the thread. Change the order roots are visited to prevent a rare error where the java lang reflect art method would move before it was checked in SanityCheckFrame. Change-Id: Ifb96220f3fbb74ea5d720777f130450f04c0e044
* | Remove all LOG(DEBUG) which is not intended to be checked inBrian Carlstrom2014-05-091-1/+1
|/ | | | | Bug: 14632493 Change-Id: Id9da8b87798af0a1b2bd2c178133e5f1ba47d43d