summaryrefslogtreecommitdiff
path: root/compiler/optimizing/intrinsic_objects.h
AgeCommit message (Collapse)Author
2023-11-21Implement Short/Byte/Character.valueOf intrinsics. Nicolas Geoffray
Also remove now obsolete IntegerCache checks - we can rely on the checks done when generating the boot image. Test: test.py Change-Id: Ia8dfa97498e7aaefd4493e8ed67fa62874fe78c3
2023-11-20Clean up after putting boxed caches to boot image. Vladimir Marko
Clean up after https://android-review.googlesource.com/2824676 . Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Change-Id: Ic5ae98148499b8195669c7c81e7bffef9c8c9aa2
2023-11-17Put all cached boxed values into boot_image_live_objects. Nicolas Geoffray
Test: test.py Change-Id: I16dc434207334aad4768e26704ce20dc98a31f6a
2023-11-10Introduce boxed primitive caches in WellKnownClasses. Nicolas Geoffray
Test: test.py Change-Id: Ia8d2f03dea8dd01eeb337d4bc2e31c778b9543a2
2022-11-07Reland "Make compiler/optimizing/ symbols hidden." VladimĂ­r Marko
This reverts commit 0a51605ddd81635135463dab08b6f7c21b58ffb0. Reason for revert: Reland after some of the required work was merged in other CLs. Also address a TODO from the original CL to mark required symbols with EXPORT in `intrinsic_objects.h`. Also mark symbols in new files as HIDDEN. Bug: 186902856 Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Change-Id: I936d448983928af23614ca82c2d0bf9a645e2c52
2019-10-14Revert "Make compiler/optimizing/ symbols hidden." Vladimir Marko
This reverts commit e2727154f25e0db9a5bb92af494d8e47b181dfcf. Reason for revert: Breaks ASAN tests (ODR violation). Bug: 142365358 Change-Id: I38103d74a1297256c81d90872b6902ff1e9ef7a4
2019-10-14Make compiler/optimizing/ symbols hidden. Vladimir Marko
Make symbols in compiler/optimizing hidden by a namespace attribute. The unit intrinsic_objects.{h,cc} is excluded as it is needed by dex2oat. As the symbols are no longer exported, gtests are now linked with the static version of the libartd-compiler library. libart-compiler.so size: - before: arm: 2396152 arm64: 3345280 - after: arm: 2016176 (-371KiB, -15.9%) arm64: 2874480 (-460KiB, -14.1%) Test: m test-art-host-gtest Test: testrunner.py --host --optimizing --jit Bug: 142365358 Change-Id: I1fb04a33351f53f00b389a1642e81a68e40912a8
2019-06-17Use cleared JNI weak sentinel from boot image. Vladimir Marko
We were already adding the sentinel to the boot image, so we may as well reuse the boot image copy. Also move pre-allocated objects from class roots to the boot image live objects. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Test: aosp_taimen-userdebug boots. Change-Id: I635dcdd146ca2c6b55d187e9a545a9990b0b35ca
2018-06-29Implement Integer.valueOf() intrinsic for boot image. Vladimir Marko
And generate only one "boot image live objects" array rather than one per boot*.art file. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Test: Pixel 2 XL boots. Test: testrunner.py --target --optimizing Bug: 71526895 Change-Id: I23af7f47fea5150805f801cd2512f2d152ee5b73
2018-06-21Implement Integer.valueOf() intrinsic for PIC. Vladimir Marko
And fix the intrinsic for JIT even in case when someone messes up the IntegerCache using reflection. Two cases are exposed with a regression test (one that previously failed randomly and one that failed 100%) but other crashes were possible; for example, we would need a read barrier for array reads when elements are not guaranteed to be in the boot image. The new approach loads references only from the boot image live objects array which cannot be touched by reflection. The referenced objects and IntegerCache.cache are exposed and can lead to weird behavior but not crashes. On x86, the pc_relative_fixups_86 actually checks the cache an additional time but discrepancies between this check and the location building at the beginning of codegen should be OK as the HIsX86ComputeBaseMethodAddress should be added for PIC regardless of whether pc_relative_fixups_86 thinks the method is intrinsified or not. Test: 717-integer-value-of Test: Pixel 2 XL boots. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing --pictest --npictest Test: testrunner.py --host --jit Test: testrunner.py --target --optimizing --pictest --npictest Test: testrunner.py --target --jit Bug: 71526895 Change-Id: I89b3245a62aba22980c86a99e2af480bfa250af1