)]}'
{
  "log": [
    {
      "commit": "6a5a5b68647926ce9359607c216e010c4c0b40a1",
      "tree": "6fdf50ea63a98e16f62c5add5ab6df0ef413390d",
      "parents": [
        "c714f40caec532522ecc5e611b15e857b3b65484"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 03 11:06:50 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 05 12:30:47 2021 +0000"
      },
      "message": "arm/arm64: Use marking register in JNI stubs.\n\nDo not load `is_gc_marking` from the `Thread` when it is\nalready available in r8 on arm and x20 on arm64.\n\nGolem results for art-opt-cc on Odroid-C2 (higher is better):\nlinux-armv7                     before after\nNativeDowncallStaticNormal      5.4429 5.5021 (+1.088%)\nNativeDowncallStaticNormal6     5.1163 5.1498 (+0.6554%)\nNativeDowncallStaticNormalRefs6 4.8876 4.9188 (+0.6394%)\nNativeDowncallStaticFast        15.992 16.505 (+3.207%)\nNativeDowncallStaticFast6       13.466 13.705 (+1.775%)\nNativeDowncallStaticFastRefs6   11.994 12.183 (+1.578%)\nlinux-armv8                     before after\nNativeDowncallStaticNormal      5.8594 5.9026 (+0.7378)\nNativeDowncallStaticNormal6     5.5198 5.5607 (+0.7414)\nNativeDowncallStaticNormalRefs6 5.1498 5.1862 (+0.7072)\nNativeDowncallStaticFast        17.057 17.439 (+2.242%)\nNativeDowncallStaticFast6       14.478 14.757 (+1.922%)\nNativeDowncallStaticFastRefs6   12.183 12.376 (+1.584%)\n\nTest: m test-art-host-gtest\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing --gcstress\nBug: 172332525\nChange-Id: I595cd0e17a480cdfd86c548a4f9853f4b86f4047\n"
    },
    {
      "commit": "17b4d2b14fd26088bca195b5d7c48f26b8b545d8",
      "tree": "bd2f741127dbb63e04aee99e5f65a2960f63f2be",
      "parents": [
        "39d529f45bad3ecf2bd6b376a049fde6cb0c21b4"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 02 18:14:31 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 05 12:03:30 2021 +0000"
      },
      "message": "Add code size to CodeInfo.\n\nThis is in preparation of removing it from OatQuickMethodHeader.\n\nBug: 123510633\nTest: m test-art-host-gtest\nTest: ./art/test.py -b -r --host\nChange-Id: I5c5adb4c040e329b81c1393aa1b80ee017729c8a\n"
    },
    {
      "commit": "93fc098b11a7cb5526049fb170bd833bf3fabcfd",
      "tree": "fab9f788a9db1fb7463208bdf1c2031dc12579f0",
      "parents": [
        "0b58ec56d3169dbd69d20f4492913b25b2c875dd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 03 09:06:14 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 03 14:02:51 2021 +0000"
      },
      "message": "Mark jclass in JNI stubs in a slow path.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --gcstress\nBug: 172332525\nChange-Id: Id791a16135c8a947c317ed56ac88dac81cadfd2d\n"
    },
    {
      "commit": "9150de6901996679c0ea6b34e74c8ddcc718d309",
      "tree": "496386b00b2a1b0b3bfbc36b09cf8083e3922f9b",
      "parents": [
        "8da26145fba859a5aba047f6280568565ffb8bfc"
      ],
      "author": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Fri Feb 26 03:22:24 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 02 07:18:14 2021 +0000"
      },
      "message": "[LSC] Add LOCAL_LICENSE_KINDS to art\n\nAdded SPDX-license-identifier-Apache-2.0 to:\n  adbconnection/Android.bp\n  benchmark/Android.bp\n  build/Android.bp\n  build/Android.cpplint.mk\n  build/Android.gtest.mk\n  build/apex/Android.bp\n  build/boot/Android.bp\n  build/sdk/Android.bp\n  cmdline/Android.bp\n  compiler/Android.bp\n  dalvikvm/Android.bp\n  dex2oat/Android.bp\n  dexdump/Android.bp\n  dexlayout/Android.bp\n  dexlist/Android.bp\n  dexoptanalyzer/Android.bp\n  disassembler/Android.bp\n  dt_fd_forward/export/Android.bp\n  imgdiag/Android.bp\n  libartbase/Android.bp\n  libartpalette/Android.bp\n  libartservice/Android.bp\n  libartservice/tests/Android.bp\n  libarttools/Android.bp\n  libdexfile/Android.bp\n  libelffile/Android.bp\n  libnativebridge/Android.bp\n  libnativebridge/tests/Android.bp\n  libnativeloader/Android.bp\n  libnativeloader/test/Android.bp\n  libnativeloader/test/Android.mk\n  libprofile/Android.bp\n  oatdump/Android.bp\n  odrefresh/Android.bp\n  perfetto_hprof/Android.bp\n  profman/Android.bp\n  runtime/Android.bp\n  simulator/Android.bp\n  test/001-HelloWorld/Android.bp\n  test/001-Main/Android.bp\n  test/002-sleep/Android.bp\n  test/004-InterfaceTest/Android.bp\n  test/004-SignalTest/Android.bp\n  test/004-UnsafeTest/Android.bp\n  test/004-checker-UnsafeTest18/Android.bp\n  test/006-args/Android.bp\n  test/007-count10/Android.bp\n  test/009-instanceof/Android.bp\n  test/010-instance/Android.bp\n  test/011-array-copy/Android.bp\n  test/012-math/Android.bp\n  test/013-math2/Android.bp\n  test/014-math3/Android.bp\n  test/015-switch/Android.bp\n  test/016-intern/Android.bp\n  test/017-float/Android.bp\n  test/018-stack-overflow/Android.bp\n  test/019-wrong-array-type/Android.bp\n  test/020-string/Android.bp\n  test/021-string2/Android.bp\n  test/022-interface/Android.bp\n  test/025-access-controller/Android.bp\n  test/026-access/Android.bp\n  test/027-arithmetic/Android.bp\n  test/028-array-write/Android.bp\n  test/029-assert/Android.bp\n  test/030-bad-finalizer/Android.bp\n  test/033-class-init-deadlock/Android.bp\n  test/034-call-null/Android.bp\n  test/035-enum/Android.bp\n  test/036-finalizer/Android.bp\n  test/037-inherit/Android.bp\n  test/038-inner-null/Android.bp\n  test/039-join-main/Android.bp\n  test/040-miranda/Android.bp\n  test/041-narrowing/Android.bp\n  test/043-privates/Android.bp\n  test/044-proxy/Android.bp\n  test/045-reflect-array/Android.bp\n  test/046-reflect/Android.bp\n  test/047-returns/Android.bp\n  test/048-reflect-v8/Android.bp\n  test/049-show-object/Android.bp\n  test/050-sync-test/Android.bp\n  test/051-thread/Android.bp\n  test/052-verifier-fun/Android.bp\n  test/053-wait-some/Android.bp\n  test/054-uncaught/Android.bp\n  test/055-enum-performance/Android.bp\n  test/058-enum-order/Android.bp\n  test/059-finalizer-throw/Android.bp\n  test/061-out-of-memory/Android.bp\n  test/062-character-encodings/Android.bp\n  test/063-process-manager/Android.bp\n  test/067-preemptive-unpark/Android.bp\n  test/070-nio-buffer/Android.bp\n  test/072-precise-gc/Android.bp\n  test/072-reachability-fence/Android.bp\n  test/074-gc-thrash/Android.bp\n  test/076-boolean-put/Android.bp\n  test/078-polymorphic-virtual/Android.bp\n  test/079-phantom/Android.bp\n  test/080-oom-fragmentation/Android.bp\n  test/080-oom-throw-with-finalizer/Android.bp\n  test/080-oom-throw/Android.bp\n  test/081-hot-exceptions/Android.bp\n  test/082-inline-execute/Android.bp\n  test/083-compiler-regressions/Android.bp\n  test/084-class-init/Android.bp\n  test/086-null-super/Android.bp\n  test/087-gc-after-link/Android.bp\n  test/090-loop-formation/Android.bp\n  test/092-locale/Android.bp\n  test/093-serialization/Android.bp\n  test/094-pattern/Android.bp\n  test/095-switch-MAX_INT/Android.bp\n  test/096-array-copy-concurrent-gc/Android.bp\n  test/098-ddmc/Android.bp\n  test/099-vmdebug/Android.bp\n  test/100-reflect2/Android.bp\n  test/1004-checker-volatile-ref-load/Android.bp\n  test/101-fibonacci/Android.bp\n  test/102-concurrent-gc/Android.bp\n  test/103-string-append/Android.bp\n  test/104-growth-limit/Android.bp\n  test/105-invoke/Android.bp\n  test/106-exceptions2/Android.bp\n  test/107-int-math2/Android.bp\n  test/108-check-cast/Android.bp\n  test/109-suspend-check/Android.bp\n  test/110-field-access/Android.bp\n  test/112-double-math/Android.bp\n  test/114-ParallelGC/Android.bp\n  test/115-native-bridge/Android.bp\n  test/116-nodex2oat/Android.bp\n  test/120-hashcode/Android.bp\n  test/121-simple-suspend-check/Android.bp\n  test/122-npe/Android.bp\n  test/123-compiler-regressions-mt/Android.bp\n  test/123-inline-execute2/Android.bp\n  test/125-gc-and-classloading/Android.bp\n  test/128-reg-spill-on-implicit-nullcheck/Android.bp\n  test/129-ThreadGetId/Android.bp\n  test/132-daemon-locks-shutdown/Android.bp\n  test/133-static-invoke-super/Android.bp\n  test/1336-short-finalizer-timeout/Android.bp\n  test/1337-gc-coverage/Android.bp\n  test/1339-dead-reference-safe/Android.bp\n  test/136-daemon-jni-shutdown/Android.bp\n  test/139-register-natives/Android.bp\n  test/140-dce-regression/Android.bp\n  test/140-field-packing/Android.bp\n  test/143-string-value/Android.bp\n  test/144-static-field-sigquit/Android.bp\n  test/148-multithread-gc-annotations/Android.bp\n  test/149-suspend-all-stress/Android.bp\n  test/150-loadlibrary/Android.bp\n  test/151-OpenFileLimit/Android.bp\n  test/152-dead-large-object/Android.bp\n  test/153-reference-stress/Android.bp\n  test/154-gc-loop/Android.bp\n  test/156-register-dex-file-multi-loader/Android.bp\n  test/158-app-image-class-table/Android.bp\n  test/159-app-image-fields/Android.bp\n  test/163-app-image-methods/Android.bp\n  test/165-lock-owner-proxy/Android.bp\n  test/168-vmstack-annotated/Android.bp\n  test/169-threadgroup-jni/Android.bp\n  test/170-interface-init/Android.bp\n  test/172-app-image-twice/Android.bp\n  test/174-escaping-instance-of-bad-class/Android.bp\n  test/175-alloc-big-bignums/Android.bp\n  test/176-app-image-string/Android.bp\n  test/177-visibly-initialized-deadlock/Android.bp\n  test/178-app-image-native-method/Android.bp\n  test/179-nonvirtual-jni/Android.bp\n  test/1900-track-alloc/Android.bp\n  test/1901-get-bytecodes/Android.bp\n  test/1902-suspend/Android.bp\n  test/1903-suspend-self/Android.bp\n  test/1904-double-suspend/Android.bp\n  test/1905-suspend-native/Android.bp\n  test/1906-suspend-list-me-first/Android.bp\n  test/1907-suspend-list-self-twice/Android.bp\n  test/1908-suspend-native-resume-self/Android.bp\n  test/1909-per-agent-tls/Android.bp\n  test/1910-transform-with-default/Android.bp\n  test/1911-get-local-var-table/Android.bp\n  test/1912-get-set-local-primitive/Android.bp\n  test/1913-get-set-local-objects/Android.bp\n  test/1914-get-local-instance/Android.bp\n  test/1915-get-set-local-current-thread/Android.bp\n  test/1916-get-set-current-frame/Android.bp\n  test/1917-get-stack-frame/Android.bp\n  test/1919-vminit-thread-start-timing/Android.bp\n  test/1920-suspend-native-monitor/Android.bp\n  test/1921-suspend-native-recursive-monitor/Android.bp\n  test/1922-owned-monitors-info/Android.bp\n  test/1923-frame-pop/Android.bp\n  test/1924-frame-pop-toggle/Android.bp\n  test/1925-self-frame-pop/Android.bp\n  test/1926-missed-frame-pop/Android.bp\n  test/1927-exception-event/Android.bp\n  test/1928-exception-event-exception/Android.bp\n  test/1930-monitor-info/Android.bp\n  test/1931-monitor-events/Android.bp\n  test/1932-monitor-events-misc/Android.bp\n  test/1933-monitor-current-contended/Android.bp\n  test/1934-jvmti-signal-thread/Android.bp\n  test/1935-get-set-current-frame-jit/Android.bp\n  test/1936-thread-end-events/Android.bp\n  test/1937-transform-soft-fail/Android.bp\n  test/1938-transform-abstract-single-impl/Android.bp\n  test/1939-proxy-frames/Android.bp\n  test/1941-dispose-stress/Android.bp\n  test/1942-suspend-raw-monitor-exit/Android.bp\n  test/1943-suspend-raw-monitor-wait/Android.bp\n  test/1945-proxy-method-arguments/Android.bp\n  test/1947-breakpoint-redefine-deopt/Android.bp\n  test/1949-short-dex-file/Android.bp\n  test/1951-monitor-enter-no-suspend/Android.bp\n  test/1953-pop-frame/Android.bp\n  test/1954-pop-frame-jit/Android.bp\n  test/1955-pop-frame-jit-called/Android.bp\n  test/1956-pop-frame-jit-calling/Android.bp\n  test/1957-error-ext/Android.bp\n  test/1958-transform-try-jit/Android.bp\n  test/1959-redefine-object-instrument/Android.bp\n  test/1960-checker-bounds-codegen/Android.bp\n  test/1960-obsolete-jit-multithread-native/Android.bp\n  test/1961-checker-loop-vectorizer/Android.bp\n  test/1961-obsolete-jit-multithread/Android.bp\n  test/1962-multi-thread-events/Android.bp\n  test/1963-add-to-dex-classloader-in-memory/Android.bp\n  test/1967-get-set-local-bad-slot/Android.bp\n  test/1968-force-early-return/Android.bp\n  test/1969-force-early-return-void/Android.bp\n  test/1970-force-early-return-long/Android.bp\n  test/1971-multi-force-early-return/Android.bp\n  test/1972-jni-id-swap-indices/Android.bp\n  test/1973-jni-id-swap-pointer/Android.bp\n  test/1974-resize-array/Android.bp\n  test/1975-hello-structural-transformation/Android.bp\n  test/1976-hello-structural-static-methods/Android.bp\n  test/1977-hello-structural-obsolescence/Android.bp\n  test/1978-regular-obsolete-then-structural-obsolescence/Android.bp\n  test/1979-threaded-structural-transformation/Android.bp\n  test/1980-obsolete-object-cleared/Android.bp\n  test/1982-no-virtuals-structural-redefinition/Android.bp\n  test/1984-structural-redefine-field-trace/Android.bp\n  test/1985-structural-redefine-stack-scope/Android.bp\n  test/1986-structural-redefine-multi-thread-stack-scope/Android.bp\n  test/1987-structural-redefine-recursive-stack-scope/Android.bp\n  test/1988-multi-structural-redefine/Android.bp\n  test/1989-transform-bad-monitor/Android.bp\n  test/1990-structural-bad-verify/Android.bp\n  test/1991-hello-structural-retransform/Android.bp\n  test/1992-retransform-no-such-field/Android.bp\n  test/1993-fallback-non-structural/Android.bp\n  test/1994-final-virtual-structural/Android.bp\n  test/1995-final-virtual-structural-multithread/Android.bp\n  test/1996-final-override-virtual-structural/Android.bp\n  test/1997-structural-shadow-method/Android.bp\n  test/1998-structural-shadow-field/Android.bp\n  test/1999-virtual-structural/Android.bp\n  test/2003-double-virtual-structural/Android.bp\n  test/2004-double-virtual-structural-abstract/Android.bp\n  test/2005-pause-all-redefine-multithreaded/Android.bp\n  test/2008-redefine-then-old-reflect-field/Android.bp\n  test/201-built-in-except-detail-messages/Android.bp\n  test/2011-stack-walk-concurrent-instrument/Android.bp\n  test/2019-constantcalculationsinking/Android.bp\n  test/202-thread-oome/Android.bp\n  test/2020-InvokeVirtual-Inlining/Android.bp\n  test/2021-InvokeStatic-Inlining/Android.bp\n  test/2022-Invariantloops/Android.bp\n  test/2023-InvariantLoops_typecast/Android.bp\n  test/2024-InvariantNegativeLoop/Android.bp\n  test/2025-ChangedArrayValue/Android.bp\n  test/2026-DifferentMemoryLSCouples/Android.bp\n  test/2027-TwiceTheSameMemoryCouple/Android.bp\n  test/2028-MultiBackward/Android.bp\n  test/2029-contended-monitors/Android.bp\n  test/203-multi-checkpoint/Android.bp\n  test/2030-long-running-child/Android.bp\n  test/2031-zygote-compiled-frame-deopt/Android.bp\n  test/2033-shutdown-mechanics/Android.bp\n  test/2036-jni-filechannel/Android.bp\n  test/2037-thread-name-inherit/Android.bp\n  test/2231-checker-heap-poisoning/Android.bp\n  test/2232-write-metrics-to-log/Android.bp\n  test/300-package-override/Android.bp\n  test/301-abstract-protected/Android.bp\n  test/302-float-conversion/Android.bp\n  test/304-method-tracing/Android.bp\n  test/305-other-fault-handler/Android.bp\n  test/401-optimizing-compiler/Android.bp\n  test/402-optimizing-control-flow/Android.bp\n  test/403-optimizing-long/Android.bp\n  test/404-optimizing-allocator/Android.bp\n  test/405-optimizing-long-allocator/Android.bp\n  test/406-fields/Android.bp\n  test/407-arrays/Android.bp\n  test/408-move-bug/Android.bp\n  test/409-materialized-condition/Android.bp\n  test/410-floats/Android.bp\n  test/411-checker-hdiv-hrem-const/Android.bp\n  test/411-checker-hdiv-hrem-pow2/Android.bp\n  test/411-checker-instruct-simplifier-hrem/Android.bp\n  test/411-optimizing-arith/Android.bp\n  test/413-regalloc-regression/Android.bp\n  test/414-static-fields/Android.bp\n  test/418-const-string/Android.bp\n  test/419-long-parameter/Android.bp\n  test/420-const-class/Android.bp\n  test/421-exceptions/Android.bp\n  test/421-large-frame/Android.bp\n  test/422-instanceof/Android.bp\n  test/422-type-conversion/Android.bp\n  test/423-invoke-interface/Android.bp\n  test/424-checkcast/Android.bp\n  test/426-monitor/Android.bp\n  test/427-bitwise/Android.bp\n  test/427-bounds/Android.bp\n  test/429-ssa-builder/Android.bp\n  test/430-live-register-slow-path/Android.bp\n  test/433-gvn/Android.bp\n  test/434-shifter-operand/Android.bp\n  test/435-try-finally-without-catch/Android.bp\n  test/436-rem-float/Android.bp\n  test/436-shift-constant/Android.bp\n  test/437-inline/Android.bp\n  test/438-volatile/Android.bp\n  test/439-npe/Android.bp\n  test/439-swap-double/Android.bp\n  test/440-stmp/Android.bp\n  test/441-checker-inliner/Android.bp\n  test/443-not-bool-inline/Android.bp\n  test/444-checker-nce/Android.bp\n  test/445-checker-licm/Android.bp\n  test/446-checker-inliner2/Android.bp\n  test/447-checker-inliner3/Android.bp\n  test/449-checker-bce-rem/Android.bp\n  test/449-checker-bce/Android.bp\n  test/450-checker-types/Android.bp\n  test/451-regression-add-float/Android.bp\n  test/451-spill-splot/Android.bp\n  test/454-get-vreg/Android.bp\n  test/455-checker-gvn/Android.bp\n  test/456-baseline-array-set/Android.bp\n  test/458-long-to-fpu/Android.bp\n  test/461-get-reference-vreg/Android.bp\n  test/464-checker-inline-sharpen-calls/Android.bp\n  test/465-checker-clinit-gvn/Android.bp\n  test/466-get-live-vreg/Android.bp\n  test/469-condition-materialization/Android.bp\n  test/470-huge-method/Android.bp\n  test/471-deopt-environment/Android.bp\n  test/472-type-propagation/Android.bp\n  test/473-checker-inliner-constants/Android.bp\n  test/473-remove-dead-block/Android.bp\n  test/474-checker-boolean-input/Android.bp\n  test/474-fp-sub-neg/Android.bp\n  test/475-simplify-mul-zero/Android.bp\n  test/476-checker-ctor-fence-redun-elim/Android.bp\n  test/476-checker-ctor-memory-barrier/Android.bp\n  test/476-clinit-inline-static-invoke/Android.bp\n  test/477-checker-bound-type/Android.bp\n  test/477-long-2-float-convers-precision/Android.bp\n  test/478-checker-clinit-check-pruning/Android.bp\n  test/478-checker-inline-noreturn/Android.bp\n  test/478-checker-inliner-nested-loop/Android.bp\n  test/479-regression-implicit-null-check/Android.bp\n  test/480-checker-dead-blocks/Android.bp\n  test/481-regression-phi-cond/Android.bp\n  test/482-checker-loop-back-edge-use/Android.bp\n  test/483-dce-block/Android.bp\n  test/485-checker-dce-switch/Android.bp\n  test/486-checker-must-do-null-check/Android.bp\n  test/487-checker-inline-calls/Android.bp\n  test/488-checker-inline-recursive-calls/Android.bp\n  test/489-current-method-regression/Android.bp\n  test/490-checker-inline/Android.bp\n  test/491-current-method/Android.bp\n  test/492-checker-inline-invoke-interface/Android.bp\n  test/493-checker-inline-invoke-interface/Android.bp\n  test/494-checker-instanceof-tests/Android.bp\n  test/495-checker-checkcast-tests/Android.bp\n  test/496-checker-inlining-class-loader/Android.bp\n  test/497-inlining-and-class-loader/Android.bp\n  test/499-bce-phi-array-length/Android.bp\n  test/500-instanceof/Android.bp\n  test/505-simplifier-type-propagation/Android.bp\n  test/507-boolean-test/Android.bp\n  test/507-referrer/Android.bp\n  test/508-checker-disassembly/Android.bp\n  test/508-referrer-method/Android.bp\n  test/513-array-deopt/Android.bp\n  test/514-shifts/Android.bp\n  test/519-bound-load-class/Android.bp\n  test/521-checker-array-set-null/Android.bp\n  test/521-regression-integer-field-set/Android.bp\n  test/524-boolean-simplifier-regression/Android.bp\n  test/525-checker-arrays-fields1/Android.bp\n  test/525-checker-arrays-fields2/Android.bp\n  test/526-checker-caller-callee-regs/Android.bp\n  test/526-long-regalloc/Android.bp\n  test/527-checker-array-access-simd/Android.bp\n  test/527-checker-array-access-split/Android.bp\n  test/528-long-hint/Android.bp\n  test/529-long-split/Android.bp\n  test/530-checker-loops1/Android.bp\n  test/530-checker-loops2/Android.bp\n  test/530-checker-loops3/Android.bp\n  test/530-checker-loops4/Android.bp\n  test/530-checker-loops5/Android.bp\n  test/530-checker-lse-ctor-fences/Android.bp\n  test/530-checker-lse-simd/Android.bp\n  test/530-checker-lse/Android.bp\n  test/530-checker-lse2/Android.bp\n  test/530-instanceof-checkcast/Android.bp\n  test/530-regression-lse/Android.bp\n  test/532-checker-nonnull-arrayset/Android.bp\n  test/534-checker-bce-deoptimization/Android.bp\n  test/535-deopt-and-inlining/Android.bp\n  test/536-checker-intrinsic-optimization/Android.bp\n  test/537-checker-arraycopy/Android.bp\n  test/537-checker-jump-over-jump/Android.bp\n  test/538-checker-embed-constants/Android.bp\n  test/540-checker-rtp-bug/Android.bp\n  test/542-bitfield-rotates/Android.bp\n  test/542-inline-trycatch/Android.bp\n  test/542-unresolved-access-check/Android.bp\n  test/545-tracing-and-jit/Android.bp\n  test/548-checker-inlining-and-dce/Android.bp\n  test/549-checker-types-merge/Android.bp\n  test/550-checker-multiply-accumulate/Android.bp\n  test/550-new-instance-clinit/Android.bp\n  test/551-checker-clinit/Android.bp\n  test/551-checker-shifter-operand/Android.bp\n  test/551-implicit-null-checks/Android.bp\n  test/552-checker-sharpening/Android.bp\n  test/552-checker-x86-avx2-bit-manipulation/Android.bp\n  test/554-checker-rtp-checkcast/Android.bp\n  test/555-UnsafeGetLong-regression/Android.bp\n  test/557-checker-instruct-simplifier-ror/Android.bp\n  test/558-switch/Android.bp\n  test/559-bce-ssa/Android.bp\n  test/559-checker-rtp-ifnotnull/Android.bp\n  test/560-packed-switch/Android.bp\n  test/561-divrem/Android.bp\n  test/561-shared-slowpaths/Android.bp\n  test/562-bce-preheader/Android.bp\n  test/562-checker-no-intermediate/Android.bp\n  test/563-checker-invoke-super/Android.bp\n  test/564-checker-bitcount/Android.bp\n  test/564-checker-inline-loop/Android.bp\n  test/564-checker-negbitwise/Android.bp\n  test/565-checker-condition-liveness/Android.bp\n  test/566-checker-codegen-select/Android.bp\n  test/566-polymorphic-inlining/Android.bp\n  test/567-checker-builder-intrinsics/Android.bp\n  test/568-checker-onebit/Android.bp\n  test/570-checker-select/Android.bp\n  test/572-checker-array-get-regression/Android.bp\n  test/573-checker-checkcast-regression/Android.bp\n  test/576-polymorphic-inlining/Android.bp\n  test/577-checker-fp2int/Android.bp\n  test/578-bce-visit/Android.bp\n  test/578-polymorphic-inlining/Android.bp\n  test/579-inline-infinite/Android.bp\n  test/580-checker-round/Android.bp\n  test/580-crc32/Android.bp\n  test/581-rtp/Android.bp\n  test/582-checker-bce-length/Android.bp\n  test/583-checker-zero/Android.bp\n  test/584-checker-div-bool/Android.bp\n  test/589-super-imt/Android.bp\n  test/590-checker-arr-set-null-regression/Android.bp\n  test/591-checker-regression-dead-loop/Android.bp\n  test/593-checker-long-2-float-regression/Android.bp\n  test/594-checker-array-alias/Android.bp\n  test/594-load-string-regression/Android.bp\n  test/595-profile-saving/Android.bp\n  test/597-deopt-busy-loop/Android.bp\n  test/597-deopt-invoke-stub/Android.bp\n  test/597-deopt-new-string/Android.bp\n  test/602-deoptimizeable/Android.bp\n  test/603-checker-instanceof/Android.bp\n  test/604-hot-static-interface/Android.bp\n  test/605-new-string-from-bytes/Android.bp\n  test/607-daemon-stress/Android.bp\n  test/609-checker-inline-interface/Android.bp\n  test/609-checker-x86-bounds-check/Android.bp\n  test/610-arraycopy/Android.bp\n  test/611-checker-simplify-if/Android.bp\n  test/614-checker-dump-constant-location/Android.bp\n  test/615-checker-arm64-store-zero/Android.bp\n  test/616-cha-abstract/Android.bp\n  test/616-cha-interface/Android.bp\n  test/616-cha-miranda/Android.bp\n  test/616-cha-native/Android.bp\n  test/616-cha-regression-proxy-method/Android.bp\n  test/616-cha/Android.bp\n  test/617-clinit-oome/Android.bp\n  test/618-checker-induction/Android.bp\n  test/619-checker-current-method/Android.bp\n  test/620-checker-bce-intrinsics/Android.bp\n  test/622-checker-bce-regressions/Android.bp\n  test/623-checker-loop-regressions/Android.bp\n  test/625-checker-licm-regressions/Android.bp\n  test/626-set-resolved-string/Android.bp\n  test/627-checker-unroll/Android.bp\n  test/628-vdex/Android.bp\n  test/629-vdex-speed/Android.bp\n  test/631-checker-get-class/Android.bp\n  test/632-checker-char-at-bounds/Android.bp\n  test/635-checker-arm64-volatile-load-cc/Android.bp\n  test/636-arm64-veneer-pool/Android.bp\n  test/637-checker-throw-inline/Android.bp\n  test/638-checker-inline-cache-intrinsic/Android.bp\n  test/639-checker-code-sinking/Android.bp\n  test/640-checker-boolean-simd/Android.bp\n  test/640-checker-integer-valueof/Android.bp\n  test/640-checker-simd/Android.bp\n  test/641-checker-arraycopy/Android.bp\n  test/641-iterations/Android.bp\n  test/642-fp-callees/Android.bp\n  test/643-checker-bogus-ic/Android.bp\n  test/645-checker-abs-simd/Android.bp\n  test/646-checker-arraycopy-large-cst-pos/Android.bp\n  test/646-checker-long-const-to-int/Android.bp\n  test/646-checker-simd-hadd/Android.bp\n  test/647-jni-get-field-id/Android.bp\n  test/650-checker-inline-access-thunks/Android.bp\n  test/652-deopt-intrinsic/Android.bp\n  test/654-checker-periodic/Android.bp\n  test/655-checker-simd-arm-opt/Android.bp\n  test/655-jit-clinit/Android.bp\n  test/656-checker-simd-opt/Android.bp\n  test/656-loop-deopt/Android.bp\n  test/657-branches/Android.bp\n  test/658-fp-read-barrier/Android.bp\n  test/660-checker-sad/Android.bp\n  test/660-checker-simd-sad/Android.bp\n  test/660-clinit/Android.bp\n  test/661-checker-simd-reduc/Android.bp\n  test/661-oat-writer-layout/Android.bp\n  test/662-regression-alias/Android.bp\n  test/664-aget-verifier/Android.bp\n  test/665-checker-simd-zero/Android.bp\n  test/666-dex-cache-itf/Android.bp\n  test/667-checker-simd-alignment/Android.bp\n  test/667-jit-jni-stub/Android.bp\n  test/667-out-of-bounds/Android.bp\n  test/669-checker-break/Android.bp\n  test/671-npe-field-opts/Android.bp\n  test/672-checker-throw-method/Android.bp\n  test/673-checker-throw-vmethod/Android.bp\n  test/674-HelloWorld-Dm/Android.bp\n  test/674-hotness-compiled/Android.bp\n  test/676-proxy-jit-at-first-use/Android.bp\n  test/677-fsi2/Android.bp\n  test/679-locks/Android.bp\n  test/680-checker-deopt-dex-pc-0/Android.bp\n  test/680-sink-regression/Android.bp\n  test/684-checker-simd-dotprod/Android.bp\n  test/684-select-condition/Android.bp\n  test/685-deoptimizeable/Android.bp\n  test/687-deopt/Android.bp\n  test/689-multi-catch/Android.bp\n  test/689-zygote-jit-deopt/Android.bp\n  test/693-vdex-inmem-loader-evict/Android.bp\n  test/694-clinit-jit/Android.bp\n  test/695-simplify-throws/Android.bp\n  test/696-loop/Android.bp\n  test/697-checker-string-append/Android.bp\n  test/698-selects/Android.bp\n  test/700-LoadArgRegs/Android.bp\n  test/703-floating-point-div/Android.bp\n  test/704-multiply-accumulate/Android.bp\n  test/705-register-conflict/Android.bp\n  test/707-checker-invalid-profile/Android.bp\n  test/708-jit-cache-churn/Android.bp\n  test/711-checker-type-conversion/Android.bp\n  test/717-integer-value-of/Android.bp\n  test/718-zipfile-finalizer/Android.bp\n  test/720-thread-priority/Android.bp\n  test/721-osr/Android.bp\n  test/726-array-store/Android.bp\n  test/728-imt-conflict-zygote/Android.bp\n  test/805-TooDeepClassInstanceOf/Android.bp\n  test/806-TooWideClassInstanceOf/Android.bp\n  test/812-recursive-default/Android.bp\n  test/813-fp-args/Android.bp\n  test/814-large-field-offsets/Android.bp\n  test/815-invokeinterface-default/Android.bp\n  test/818-clinit-nterp/Android.bp\n  test/900-hello-plugin/Android.bp\n  test/901-hello-ti-agent/Android.bp\n  test/902-hello-transformation/Android.bp\n  test/903-hello-tagging/Android.bp\n  test/904-object-allocation/Android.bp\n  test/905-object-free/Android.bp\n  test/906-iterate-heap/Android.bp\n  test/907-get-loaded-classes/Android.bp\n  test/908-gc-start-finish/Android.bp\n  test/910-methods/Android.bp\n  test/911-get-stack-trace/Android.bp\n  test/913-heaps/Android.bp\n  test/914-hello-obsolescence/Android.bp\n  test/915-obsolete-2/Android.bp\n  test/916-obsolete-jit/Android.bp\n  test/917-fields-transformation/Android.bp\n  test/918-fields/Android.bp\n  test/919-obsolete-fields/Android.bp\n  test/920-objects/Android.bp\n  test/921-hello-failure/Android.bp\n  test/922-properties/Android.bp\n  test/923-monitors/Android.bp\n  test/924-threads/Android.bp\n  test/925-threadgroups/Android.bp\n  test/926-multi-obsolescence/Android.bp\n  test/927-timers/Android.bp\n  test/928-jni-table/Android.bp\n  test/930-hello-retransform/Android.bp\n  test/931-agent-thread/Android.bp\n  test/932-transform-saves/Android.bp\n  test/933-misc-events/Android.bp\n  test/937-hello-retransform-package/Android.bp\n  test/939-hello-transformation-bcp/Android.bp\n  test/940-recursive-obsolete/Android.bp\n  test/941-recursive-obsolete-jit/Android.bp\n  test/942-private-recursive/Android.bp\n  test/943-private-recursive-jit/Android.bp\n  test/944-transform-classloaders/Android.bp\n  test/945-obsolete-native/Android.bp\n  test/946-obsolete-throw/Android.bp\n  test/947-reflect-method/Android.bp\n  test/949-in-memory-transform/Android.bp\n  test/950-redefine-intrinsic/Android.bp\n  test/951-threaded-obsolete/Android.bp\n  test/963-default-range-smali/Android.bp\n  test/982-ok-no-retransform/Android.bp\n  test/983-source-transform-verify/Android.bp\n  test/984-obsolete-invoke/Android.bp\n  test/985-re-obsolete/Android.bp\n  test/986-native-method-bind/Android.bp\n  test/987-agent-bind/Android.bp\n  test/988-method-trace/Android.bp\n  test/989-method-trace-throw/Android.bp\n  test/990-field-trace/Android.bp\n  test/991-field-trace-2/Android.bp\n  test/992-source-data/Android.bp\n  test/993-breakpoints/Android.bp\n  test/994-breakpoint-line/Android.bp\n  test/995-breakpoints-throw/Android.bp\n  test/996-breakpoint-obsolete/Android.bp\n  test/997-single-step/Android.bp\n  test/Android.bp\n  tools/Android.bp\n  tools/ahat/Android.bp\n  tools/ahat/Android.mk\n  tools/art_verifier/Android.bp\n  tools/cpp-define-generator/Android.bp\n  tools/dexanalyze/Android.bp\n  tools/dexfuzz/Android.bp\n  tools/dmtracedump/Android.bp\n  tools/hiddenapi/Android.bp\n  tools/jfuzz/Android.bp\n  tools/jvmti-agents/breakpoint-logger/Android.bp\n  tools/jvmti-agents/chain-agents/Android.bp\n  tools/jvmti-agents/dump-jvmti-state/Android.bp\n  tools/jvmti-agents/enable-vlog/Android.bp\n  tools/jvmti-agents/field-counts/Android.bp\n  tools/jvmti-agents/field-null-percent/Android.bp\n  tools/jvmti-agents/jit-load/Android.bp\n  tools/jvmti-agents/list-extensions/Android.bp\n  tools/jvmti-agents/simple-force-redefine/Android.bp\n  tools/jvmti-agents/simple-profile/Android.bp\n  tools/jvmti-agents/ti-alloc-sample/Android.bp\n  tools/jvmti-agents/ti-fast/Android.bp\n  tools/jvmti-agents/titrace/Android.bp\n  tools/jvmti-agents/wrapagentproperties/Android.bp\n  tools/signal_dumper/Android.bp\n  tools/tracefast-plugin/Android.bp\n  tools/veridex/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to:\n  sigchainlib/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD\n    SPDX-license-identifier-GPL-2.0\nto:\n  Android.bp\n  Android.mk\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-GPL-2.0\n    SPDX-license-identifier-GPL-with-classpath-exception\nto:\n  dt_fd_forward/Android.bp\n  openjdkjvmti/Android.bp\n\nAdded SPDX-license-identifier-GPL-2.0\n    SPDX-license-identifier-GPL-with-classpath-exception\nto:\n  openjdkjvm/Android.bp\n\nBug: 68860345\nBug: 151177513\nBug: 151953481\n\nTest: m all\n\nExempt-From-Owner-Approval: janitorial work\nChange-Id: If775045c12955fa6d72d40ccf2a09beef93d1699\nMerged-in: If775045c12955fa6d72d40ccf2a09beef93d1699\n"
    },
    {
      "commit": "5e060ee6b9d1c32352f0fde4f949b95589602250",
      "tree": "3ec7c92eaba9ffbcd2a9470db5cfcbc51f76d9c5",
      "parents": [
        "0d768f126f6d9bae75614ea1d62776d166403cee"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 23 10:56:42 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 23 17:48:14 2021 +0000"
      },
      "message": "Fix implicit null checks for InvokeVirtual.\n\nFix braino from\n    https://android-review.googlesource.com/1570261 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 172573708\nBug: 180527726\nChange-Id: I430d3e7034a3f600674763986a324d80903aaf6c\n"
    },
    {
      "commit": "cedec9db0a9accfdcf5eb695879e0b2caf2c34cb",
      "tree": "99fd71a3ef398a471507ed815c4a175805ad51f3",
      "parents": [
        "0ccc970b3c00b172e3cff8e10da13dd6323ccd52"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 08 16:16:13 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 23 14:34:43 2021 +0000"
      },
      "message": "Do not create HandleScope for JNI transitions.\n\nWe previously crated a HandleScope in the JNI transition\nframe to hold references passed as jobject (jclass, etc.)\nto the native function and these references were actually\nspilled twice during the transition.\n\nWe now construct the jobject as a pointer to the reference\nspilled in the reserved out vreg area in the caller\u0027s frame.\nAnd the jclass for static methods is just a pointer to the\nmethod\u0027s declaring class. This reduces the amount of work\nrequired in the JNI transition, both on entry (in compiled\nstubs) and exit (in JniMethodEnd*).\n\nSome additional work is required when GC visits references\nof a native method as we need to walk over the method\u0027s\nshorty which was unnecessary for a HandleScope.\n\nAlso fix Thread::InitStackHwm() to calculate correct stack\nsize needed by the new Thread::IsJniTransitionReference().\n\nThe results for StringToBytesBenchmark on blueline little\ncores running at fixed frequency 1420800 are approximately\narm64 (medians from 3 runs) before after\ntimeGetBytesAscii EMPTY     447.33 436.86\ntimeGetBytesIso88591 EMPTY  440.52 431.13\ntimeGetBytesUtf8 EMPTY      432.31 409.82\narm (medians from 3 runs)   before after\ntimeGetBytesAscii EMPTY     500.53 490.87\ntimeGetBytesIso88591 EMPTY  496.45 495.30\ntimeGetBytesUtf8 EMPTY      488.84 472.68\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --gcstress\nTest: testrunner.py --host --jit-on-first-use\nTest: testrunner.py --host --jit-on-first-use --gcstress\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nTest: boots.\nBug: 172332525\nChange-Id: I658f9d87071587b3e89f31c65feca976a11e9cc2\n"
    },
    {
      "commit": "2cefb3be7346aa1b468e91b78ac6d7f9852a50e5",
      "tree": "fa8c9c514386b114df20f3face4ef363af76625a",
      "parents": [
        "09efc1604936c234b65a5d278f5ea63da29b17cd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 22 13:32:33 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 23 09:44:09 2021 +0000"
      },
      "message": "x86: Fix CriticalNative argument spilling in JNI stubs.\n\nDo not move incoming stack arguments before we have spilled\nthe scratch register ECX.\n\nFix JniCompilerTest to initialize classes early so that we\nreally test what we were supposed to. This exposed the x86\nbug fixed here.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 172332525\nChange-Id: I7c06c8ccf18f5f66772c70f6a9a9a314668ce70d\n"
    },
    {
      "commit": "745da80dbf169d83e2acb847b0c9c07985d51bdf",
      "tree": "a01990e419ee49fe255a6df108027a89b568975a",
      "parents": [
        "16f7f8e384f0ae13c53525ff12affbc00605b0ec"
      ],
      "author": {
        "name": "Nikita Iashchenko",
        "email": "nikitai@google.com",
        "time": "Wed Jan 20 21:52:54 2021 +0000"
      },
      "committer": {
        "name": "Nikita Iashchenko",
        "email": "nikitai@google.com",
        "time": "Wed Feb 10 12:33:48 2021 +0000"
      },
      "message": "Add Math.multiplyHigh intrinsic\n\nTest: ./art/test/testrunner/testrunner.py --target  --optimizing --64 -t 082-inline-execute\nTest: ./art/test/testrunner/testrunner.py --host --optimizing --64 -t 082-inline-execute\nChange-Id: I4b6cafa8b9e513eca7c5c139440024d87a7ef758\n"
    },
    {
      "commit": "c7ac91b21d1a15c14e29d69ff02b48c485962b0d",
      "tree": "f8bcc4df536c29773742cbb54b32b959ebd601c3",
      "parents": [
        "5c48df9895530fb26666c6d79d155ef3886d7a83"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Feb 04 21:44:01 2021 +0000"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Feb 09 16:31:17 2021 +0000"
      },
      "message": "[metrics] Report some ART metadata\n\nAdds reporting for some metadata associated with ART metrics,\nincluding timestamp relative to ART startup, the session id, and the\nprocess\u0027s user id. It additionally outputs placeholders for the\ncompilation reason and compiler filter, but these need some additional\nplumbing from the Runtime and OatFileManager to fill in, so those will\ncome in a followup CL.\n\nThis CL also includes a fair amount of refactoring around metrics\nreporting and handling the session data.\n\nExample output:\n\n    *** ART internal metrics ***\n      Metadata:\n        timestamp_since_start_ms: 768\n        session_id: 5026277321588503825\n        uid: 123456\n        compilation_reason: Unknown\n        compiler_filter: (unspecified)\n      Metrics:\n        ClassVerificationTotalTime: count \u003d 4167\n        JitMethodCompileTime: range \u003d 0...1000000, buckets: 7,0,0,0,0,0\n    *** Done dumping ART internal metrics ***\n\nTest: ./test/run-test --host --jit 2232-write-metrics-to-log\nChange-Id: Ic74b503b135d71099d9e26bf660b60e4cc3a46bc\n"
    },
    {
      "commit": "a0a20cdaba1a339b526707bde0e61e4eae8acfd5",
      "tree": "f4e103d0a5c25ad25f3bf9954e3d89f98e5d7873",
      "parents": [
        "433547446f7e0ad1b3fcdf993cbaaee9fdb8b9b4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 05 15:55:47 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 05 15:55:47 2021 +0000"
      },
      "message": "Fix Reference.refersTo() intrinsic for heap poisoning.\n\nTest: ART_HEAP_POISONING\u003dtrue m test-art-host-gtest\nTest: ART_HEAP_POISONING\u003dtrue testrunner.py --host --optimizing\nTest: run-gtests.sh # with ART_HEAP_POISONING\u003dtrue\nTest: testrunner.py --target --optimizing # with ART_HEAP_POISONING\u003dtrue\nBug: 172573708\nChange-Id: I2e09b49813bdad40c1e18bf5681ba2094c5a40c1\n"
    },
    {
      "commit": "55ab7e84c4682c492b6fa18375b87ffc5d0b23bb",
      "tree": "5fcc2567a1a4e6ae73dead2f70c69bc03b0a64bb",
      "parents": [
        "ac27ac01490f53f9e2413dc9b66fbb2880904c96"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Mon Apr 27 21:02:28 2020 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Feb 05 11:34:38 2021 +0000"
      },
      "message": "ARM64: Support SVE VL other than 128-bit.\n\nArm SVE register size is not fixed and can be a\nmultiple of 128 bits. To support that the patch\nremoves explicit assumptions on the SIMD register\nsize to be 128 bit from the vectorizer and code\ngenerators and enables configurable SVE vector\nlength autovectorization, e.g. extends SIMD register\nsave/restore routines.\n\nTest: art SIMD tests on VIXL simulator.\nTest: art tests on FVP (steps in test/README.arm_fvp.md)\n      with FVP arg:\n      -C SVE.ScalableVectorExtension.veclen\u003d[2,4]\n      (SVE vector [128,256] bits wide)\n\nChange-Id: Icb46e7eb17f21d3bd38b16dd50f735c29b316427\n"
    },
    {
      "commit": "ac27ac01490f53f9e2413dc9b66fbb2880904c96",
      "tree": "271018e1ef33667bee8d57c40ffa3f4d9f8cf930",
      "parents": [
        "26bf47a60064fcc42e1b5e7b4b41deb8312d7330"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 01 09:31:02 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 05 10:48:17 2021 +0000"
      },
      "message": "Implement Reference.refersTo() intrinsic.\n\nTest: Added tests to 122-npe and 160-read-barrier-stress\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 172573708\nChange-Id: I8342510565289058df218d3249ffac1eb993ca4f\n"
    },
    {
      "commit": "26bf47a60064fcc42e1b5e7b4b41deb8312d7330",
      "tree": "d3d4cdd0f4c24efbde0016da395747846eb3e5a4",
      "parents": [
        "b5a10be6153d9bf09e4edf4a645da4085b4436bf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 04 17:17:27 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 05 08:50:17 2021 +0000"
      },
      "message": "Use memfd_create_compat() in gtests.\n\nThe memfd_create() call fails on fugu.\n\nTest: Rely on TH.\nBug: 177816575\nChange-Id: I013742aba0c9b41aaf5aa333ddc635fe0ad58e02\n"
    },
    {
      "commit": "8ba4de1a5684686447a578bdc425321fd3bccca6",
      "tree": "20c24450b24950266ccc235306e3ad2109c57497",
      "parents": [
        "32bf6d39bc020cacfc655ce60630f4a0da3b45cf"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Wed Dec 04 21:10:23 2019 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Feb 04 06:16:33 2021 +0000"
      },
      "message": "ART: Implement predicated SIMD vectorization.\n\nThis CL brings support for predicated execution for\nauto-vectorizer and implements arm64 SVE vector backend.\n\nThis version passes all the VIXL simulator-runnable tests in\nSVE mode with checker off (as all VecOp CHECKs need to be\nadjusted for an extra input) and all tests in NEON mode.\n\nTest: art SIMD tests on VIXL simulator.\nTest: art tests on FVP (steps in test/README.arm_fvp.md)\n\nChange-Id: Ib78bde31a15e6713d875d6668ad4458f5519605f\n"
    },
    {
      "commit": "37fd800e917269df7824052452bcbd65f5528a3e",
      "tree": "46a1c77e994a5d238d385d579320eaf3224c6630",
      "parents": [
        "98071159668576ae08c2b0de80b0565d58f409f2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 02 14:29:04 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 03 08:35:17 2021 +0000"
      },
      "message": "Use mmap for compiled code for gtest.\n\nAvoid executing code in memory allocated with malloc() as\npointers to that memory can be tagged which interferes with\nmanaged stack walk.\n\nTest: m test-art-host-gtest.\nBug: 177816575\nChange-Id: Id376091f82d5686adf3ab18d2980a42e78de57ce\n"
    },
    {
      "commit": "36e4d1d398a1526c6bc5eba12b32279dc07749d8",
      "tree": "ff094d112e7b2cb950a9504360957daa8967e1fe",
      "parents": [
        "daf1133c3dcf5338ad1d4155e06ec241b5a2ab3b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 01 10:16:05 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 01 12:27:34 2021 +0000"
      },
      "message": "Remove HWASan tag from method entrypoint in tests.\n\nTest: run-gtests.sh\nBug: 177816575\nChange-Id: If76f186d69ac9311a81e025960c13d9b99be6e56\n"
    },
    {
      "commit": "f3f1c8b41ebee81a34cb104417e1a78e6ad45173",
      "tree": "9cf3b4ef81d4b7c1d6e7bd5861d621b736d1e692",
      "parents": [
        "a7c66e7e5845b26711b261773179abf0f8b34ced"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jan 26 13:44:07 2021 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jan 28 21:45:09 2021 +0000"
      },
      "message": "Add comment to art_jni_trampoline.\n\nBug: 175226454\nTest: N/A\nChange-Id: Ia83c3afa69d7e1efb9685cfaa5401242712fa02a\n"
    },
    {
      "commit": "a7c66e7e5845b26711b261773179abf0f8b34ced",
      "tree": "a621a91059f9a7d2cefc92710fac2cd28350d133",
      "parents": [
        "af2aabc47d97556bf0fde258e6ddb472eebe0855"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 27 11:41:58 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 28 21:23:25 2021 +0000"
      },
      "message": "Avoid potential null dereference\n\nIn a log statement we were dereferencing a pointer that could\npotentially be null. Add support for safely dereferencing a pointer\nfor ostreams.\n\nTest: ./test.py --host\nBug: 67037140\nChange-Id: Ibe04811883575902a9b2fe8a064f18de2b2cea7b\n"
    },
    {
      "commit": "853367b85d8e58fa7de8b8b7bc9810da9147fcd8",
      "tree": "c25bc624819d5e09cd0a81123d6cbbe9f29c0b60",
      "parents": [
        "c39af9409ed4c8dd711be606f758a9b378cd0ee3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 25 09:58:21 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 27 09:12:37 2021 +0000"
      },
      "message": "arm: Fix and improve JNI frame entry/exit.\n\nAdd workaround for vixl emitting UNPREDICTABLE instruction\nin frame exit. Pop LR directly to PC when possible and emit\npreviously missing CFI data otherwise.\n\nFor frames that just save LR and align the stack with one\nmore unused word, make the frame entry a single PUSH (by\narbitrarily storing r3) and make exit a single POP (by\narbitrarily restoring r3 which we are allowed to clobber\nas it\u0027s a caller-save register not used for return value).\n\nTest: m test-art-host-gtest\nTest: run-gtests.sh\nTest: testrunner.py --target --32 --optimizing\nBug: 178048807\nChange-Id: I8752711bfd4bcfc2c1cfa371108de393df00aeb8\n"
    },
    {
      "commit": "3a73ffb70151dbc99fa41f300a237f8c29783e0e",
      "tree": "8debef1b372e5bea27d5265a9019446229955e3d",
      "parents": [
        "e585964df42e9fd2fab6f209810cb03e1b261ab1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 25 14:11:05 2021 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 25 07:01:32 2021 -0800"
      },
      "message": "Revert^4 \"Partial Load Store Elimination\"\n\nThis reverts commit 791df7a161ecfa28eb69862a4bc285282463b960.\nThis unreverts commit fc1ce4e8be0d977e3d41699f5ec746d68f63c024.\nThis unreverts commit b8686ce4c93eba7192ed7ef89e7ffd9f3aa6cd07.\n\nWe incorrectly failed to include PredicatedInstanceFieldGet in a few\nconditions, including a DCHECK. This caused tests to fail under the\nread-barrier-table-lookup configuration.\n\nReason for revert: Fixed 2 incorrect checks\n\nBug: 67037140\nTest: ./art/test/testrunner/run_build_test_target.py -j70 art-gtest-read-barrier-table-lookup\n\nChange-Id: I32b01b29fb32077fb5074e7c77a0226bd1fcaab4\n"
    },
    {
      "commit": "791df7a161ecfa28eb69862a4bc285282463b960",
      "tree": "a43b022307ea2df82a360164bdf2627cd07eb5b1",
      "parents": [
        "805769bb3800c1e47b0a76ce2c5ebb270a4ac69d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jan 23 13:28:56 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Jan 24 17:18:55 2021 +0000"
      },
      "message": "Revert \"Revert^2 \"Partial Load Store Elimination\"\"\n\nThis reverts commit fc1ce4e8be0d977e3d41699f5ec746d68f63c024.\n\nBug: 67037140\n\nReason for revert: Fails read-barrier-table-lookup tests.\n\nChange-Id: I373867c728789bc14a4370b93a045481167d5f76\n"
    },
    {
      "commit": "fc1ce4e8be0d977e3d41699f5ec746d68f63c024",
      "tree": "b656aa7c9e62aa181dfbf7fd4f2a0d32b8bf0704",
      "parents": [
        "c6da1be58086e873c9695f8c4c1a3a8ca718696e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 14:05:13 2021 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 07:15:51 2021 -0800"
      },
      "message": "Revert^2 \"Partial Load Store Elimination\"\n\nThis reverts commit 47ac53100303e7e864b7f6d65f17b23088ccf1d6.\n\nThere was a bug in LSE where we would incorrectly record the\nshadow$_monitor_ field as not having a default initial value. This\ncaused partial LSE to be unable to compile the Object.identityHashCode\nfunction, causing crashes. This issue was fixed in a parent CL. Also\nupdated all Offsets in LSE_test to be outside of the object header\nregardless of configuration.\n\nTest: ./test.py --host\nBug: 67037140\n\nReason for revert: Fixed issue with shadow$_monitor_ field and offsets\n\nChange-Id: I4fb2afff4d410da818db38ed833927dfc0f6be33\n"
    },
    {
      "commit": "c6da1be58086e873c9695f8c4c1a3a8ca718696e",
      "tree": "1d445a789a52b537a349aab00ca5fed761cad273",
      "parents": [
        "b171bc4b117e0d8d399f7a71a95ca5ec6cff19ca"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 06:58:44 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 07:15:21 2021 -0800"
      },
      "message": "Enable LSE of shadow$_monitor_ field\n\nThe shadow$_monitor_ field is an object header field. Unlike\nshadow_klass this field has regular default initialization and we\nshould record this in LSE. This won\u0027t have any actual effect generally\nsince the only (java) use of the field is in Object.identityHashCode\nand the object always escapes if the value is 0. Still this simplifies\npartial LSE since we will not need to special case this field.\n\nTest: ./test.py --host\nBug: 67037140\nChange-Id: I68a8e4a4d84d42cd206e0dce37cefb19fd099b20\n"
    },
    {
      "commit": "b171bc4b117e0d8d399f7a71a95ca5ec6cff19ca",
      "tree": "2e2c6cfd5e27dc964a6cae1eaf774c875bf4a9bc",
      "parents": [
        "ef01e763eb700b513e4042ef7a1fbd22ecb10fc4"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 06:43:28 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 07:15:17 2021 -0800"
      },
      "message": "Change offsets in LSE_test to be outside of Object\n\nSeveral tests in load_store_elimination_test used field offsets that\nwere within the ObjectHeader on read-barrier configurations. Since LSE\nspecial cases object-header fields this could cause tests to\nincorrectly fail.\n\nTest: ./test.py --host\nBug: 67037140\nChange-Id: I3146f5310dd4474bbc7079ac2e7584459e5c5ac6\n"
    },
    {
      "commit": "7968cae11af60796b27398a95c32ff0cc31457a4",
      "tree": "b430aba1941e3bbe41f17ed1970c6e96100309c2",
      "parents": [
        "47ac53100303e7e864b7f6d65f17b23088ccf1d6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 19 12:02:35 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 22 12:08:58 2021 +0000"
      },
      "message": "arm: Implement VarHandle intrinsics for byte array views.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                             before after\nGetByteArrayViewInt          28.989 0.028\nSetByteArrayViewInt          30.114 0.028\nGetByteArrayViewBigEndianInt 28.974 0.030\nSetByteArrayViewBigEndianInt 30.130 0.030\n\nTest: testrunner.py --target --32 --optimizing\nBug: 71781600\nChange-Id: I40c1c2fdd829f17872c457994010f78549c895de\n"
    },
    {
      "commit": "47ac53100303e7e864b7f6d65f17b23088ccf1d6",
      "tree": "95730c6ba84ef0eebca6236428c8ba51c5eaf280",
      "parents": [
        "51d771db35cc0647bc1fd2a32ed6348d181a7a41"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 08:41:08 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 08:41:39 2021 +0000"
      },
      "message": "Revert \"Partial Load Store Elimination\"\n\nThis reverts commit b8686ce4c93eba7192ed7ef89e7ffd9f3aa6cd07.\n\nBug: 67037140\n\nReason for revert: Fails a few tests.\n\nChange-Id: Icf0635bffbfbba93bf0a5b854a9582c418198136\n"
    },
    {
      "commit": "b8686ce4c93eba7192ed7ef89e7ffd9f3aa6cd07",
      "tree": "1721ee940f978736a2212d693271ee698897cb0b",
      "parents": [
        "625048049558d394d50b6e98885b8c210e481bf1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 02 08:48:33 2020 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 21 17:58:10 2021 +0000"
      },
      "message": "Partial Load Store Elimination\n\nAdd partial load-store elimination to the LSE pass. Partial LSE will\nmove object allocations which only escape along certain execution\npaths closer to the escape point and allow more values to be\neliminated. It does this by creating new predicated load and store\ninstructions that are used when an object has only escaped some of the\ntime. In cases where the object has not escaped a default value will\nbe used.\n\nTest: ./test.py --host\nTest: ./test.py --target\nBug: 67037140\n\nChange-Id: Idde67eb59ec90de79747cde17b552eec05b58497\n"
    },
    {
      "commit": "d5a8695394f8f6e8f9a66752441623dc31b97660",
      "tree": "591ac4892304365282a57262c91e1945ac94c6a9",
      "parents": [
        "2fb37411e42455a00fdad90f0e612c3214e5bd1a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 19 10:35:54 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 21 14:07:57 2021 +0000"
      },
      "message": "Reland \"Improve invokeinterface for nterp.\"\n\nThis reverts commit f1d06474baa2f7c00761db39099b89ddab71bbe4.\n\nBug: 177554973\nBug: 112676029\n\nTest: test.py\nTest: 815-invokeinterface-default\nTest: enable text-to-speech on device, no crash\n\nReason for revert: Fixed issue with recursive default methods\n\nChange-Id: I2fb9336adb6c4fc920f39aa19bfe7f0a92ce059a\n"
    },
    {
      "commit": "09e2337f8a971c318c560444912d50b06d723e35",
      "tree": "77fe1058fe435d0dc8c83b4133b9407f9cc472fa",
      "parents": [
        "f5a84cb8a950632cd4e730839c7f9f34b52c81d1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 15 08:42:11 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 15 19:14:24 2021 +0000"
      },
      "message": "Avoid passing around LSE Phase\n\nStore LSE phase into an instance field to avoid needing to pass it\naround to various functions and allow functions to assert they are in\nthe correct phase more easily.\n\nTest: ./test.py --host\nChange-Id: I39d39718c24b49b8ad2c541359edca21f7c01c20\n"
    },
    {
      "commit": "f5a84cb8a950632cd4e730839c7f9f34b52c81d1",
      "tree": "0d65d3536ac3e09cf7a3d12ea5b68aac7c005285",
      "parents": [
        "1e414eb83c62ba7eb5b7f2b94e7c988879f3beb3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 15 08:35:38 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 15 19:14:24 2021 +0000"
      },
      "message": "Rename Value::Unknown to Value::PureUnknown\n\nThis matches the IsPureUnknown function and avoids confusion with the\nIsUnknown function which also checks for MergedUnknowns\n\nTest: ./test.py --host\nChange-Id: I1488d52dc36d79043588df76a95229e91e6b8716\n"
    },
    {
      "commit": "1e414eb83c62ba7eb5b7f2b94e7c988879f3beb3",
      "tree": "98079a50e245e388f0f51b8a67de400516483b78",
      "parents": [
        "deef200ec3f54035e580596031b3093ac2fd66cc"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 15 08:38:18 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 15 19:14:24 2021 +0000"
      },
      "message": "Make MaterializeLoopPhis more explicit\n\nMaterializeLoopPhis used a combination of Unknown and Invalid Values\nto keep track of what phis needed to be created. This was somewhat\nconfusing so it has been replaced with using an optional to denote\nwhether we found anything at all and Invalid for if we can\u0027t avoid\nmaterializing values. Also added some correctness DCHECKS.\n\nTest: ./test.py --host\nChange-Id: Icd8578051b33c25ef1a43f8d50f463a367de5057\n"
    },
    {
      "commit": "deef200ec3f54035e580596031b3093ac2fd66cc",
      "tree": "f1b22cc86b57aa86dd430811b8658be094a9c837",
      "parents": [
        "fa81f71b27bb1290848e7ce1fe31b4241110031d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 15 08:53:07 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 15 18:33:40 2021 +0000"
      },
      "message": "Fix minor formatting issue\n\nA previous CL made a declaration have misaligned arguments\n\nTest: None\nChange-Id: Idc5a3c9747c910673c3e8de05d4b20e3d59b32d1\n"
    },
    {
      "commit": "dc281e776c0395b54200c62626f90417f092a2bf",
      "tree": "5e0a458e7ec1968f365b5a6dcc7454d417f11416",
      "parents": [
        "da946fc92b3f6f9664167ef3a0f1324694417b71"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 06 12:35:31 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 08 22:35:17 2021 +0000"
      },
      "message": "Add operator\u003c\u003c for HGraph and HInstructions.\n\nInclude helpers for printing arguments as well.\n\nTest: ./test.py --host\nChange-Id: I692fd5bd32a8a39da0defd9454d56ccf2480f229\n"
    },
    {
      "commit": "98873affc25ef6bc96f8c65f828f28530b8f3fcd",
      "tree": "be471ad310edb1aa3a7b3df44528905ec7ce9a6c",
      "parents": [
        "771708f3f0a15c1ae50617b4141c5f5dd47bf94f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 16 12:10:03 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 08 13:44:10 2021 +0000"
      },
      "message": "arm64: Implement VarHandle intrinsics for byte array views.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                             before after\nGetByteArrayViewInt          27.093 0.024\nSetByteArrayViewInt          28.067 0.024\nGetByteArrayViewBigEndianInt 27.142 0.026\nSetByteArrayViewBigEndianInt 28.040 0.025\n\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nChange-Id: I604326675042bd63dce8ec15075714003ca9915d\n"
    },
    {
      "commit": "54ed0150a42297a1a5e477d6569619193fcbffd0",
      "tree": "9ba815d49f5222b47f6d81127379c11b8876ba3a",
      "parents": [
        "a714dd3f13b67ea2b0caf3ed15e7691cbb94f1a4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 23 17:29:32 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 07 09:09:26 2021 +0000"
      },
      "message": "Handle VERIFY_ERROR_INSTANTIATION in compiler and nterp.\n\nNterp always supported it, but the compiler was missing a check.\n\nTest: test.py\nTest: 600-verifier-fails\nChange-Id: I8675ca6f61c68c4152212c81843da8248781f18a\n"
    },
    {
      "commit": "a714dd3f13b67ea2b0caf3ed15e7691cbb94f1a4",
      "tree": "4373745cfa3eb131749d6c3207a7cbca29c98950",
      "parents": [
        "bd570591eab2d683eb634ac057dbf9f0e1337f8c"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Dec 08 16:25:27 2020 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jan 07 00:52:19 2021 +0000"
      },
      "message": "Fix expected results for clang-r407598 update.\n\nllvm-dwarfdump has changed the format it uses for displaying, so we\nmust also adapt all of the ART tests similarly, since they check for\nexact matching output.\n\nBug: 171348143\nTest: m test-art-host-gtest\nChange-Id: I901cd45330b0def7c6ed98a15c0206312feff01b\n"
    },
    {
      "commit": "bd570591eab2d683eb634ac057dbf9f0e1337f8c",
      "tree": "b50ac19257a71cd9efb2ce596764b445a89cae87",
      "parents": [
        "bde70600e1bfa837fa48ea8da350f60b50272aa6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 23 16:37:44 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 06 16:31:10 2021 +0000"
      },
      "message": "Handle missing methods in compiler and nterp.\n\nNterp already supported it, but there was a missing check in the\ncompiler.\n\nTest: test.py\nTest: 552-invoke-non-existent-super\n\nChange-Id: Ife9f3f6782f09bd9780940bcb78160aa11db12d2\n"
    },
    {
      "commit": "c9fcfd02a69170cedcd4cf2e66826f246dff6267",
      "tree": "2bc39091ec4dbc71bad37efafde41d13d168f0ca",
      "parents": [
        "782fb716122d37dc4c4d7482afb21f6e68be04b4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 05 16:57:30 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 06 15:06:24 2021 +0000"
      },
      "message": "Optimizing: Add debugging output for HInstruction.\n\nAllow printing individual instruction and its arguments with\nthe HGraphVisualizer. Arguments are dumped \"recursively\"\n(but implemented with a queue instead of actual recursion).\n\nFor example, printing the Return instruction from the method\nMain.testLoop17 in 530-checker-lse yields\n\nv28 Return [i27] dex_pc:23 loop:none\n  i27 Add [i24,i26] dex_pc:22 loop:none\n    i24 Phi [i5,i15] dex_pc:n/a reg:0 is_catch_phi:false loop:none\n      i5 IntConstant dex_pc:0 1 loop:none\n      i15 IntConstant dex_pc:5 2 loop:none\n    i26 InstanceFieldGet [l6] dex_pc:20 field_name:TestClass.i field_type:Int32 loop:none\n      l6 NullCheck [l1] dex_pc:1 env:[[i5,_,_,l1,i2]] loop:none\n        l1 ParameterValue dex_pc:n/a loop:none\n\nTest: Manual; modify LSE to print the instruction above.\nChange-Id: Iaf41ba62cd6a5a36236ad0abca082ebffcf6a20e\n"
    },
    {
      "commit": "cb5f97df7fd3d40a6c92fa46ba98894d5d327efb",
      "tree": "0dd0ef8bb3776517cb24c6a418ff6827a1a25b0a",
      "parents": [
        "f6b9e40be37818012cf13341ea968d5761bb64e4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 05 15:30:41 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 06 10:43:05 2021 +0000"
      },
      "message": "Use ResolveFieldJLS in compiler.\n\nNow that the compiler compiles methods that have\nIncompatibleClassChangeError, we need to use the right ResolveField\nmethod.\n\nMissed from previous commit:\nhttps://android-review.googlesource.com/c/platform/art/+/1539969\n\nTest: art/test/run-test --host --prebuild --compact-dex-level fast --jit --runtime-option -Xjitthreshold:0 --no-relocate --runtime-option -Xcheck:jni 073-mismatched-field\nChange-Id: I41bc878f20512f5fb9b7ca3b3e1db7e933a8c672\n"
    },
    {
      "commit": "f6b9e40be37818012cf13341ea968d5761bb64e4",
      "tree": "933773c663aecae8e3a01069622f42caa3a76445",
      "parents": [
        "6e6f1b2ffb243b3e5ae112bba3cd52031deb31ba"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Wed Dec 30 22:55:57 2020 -0800"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Jan 05 22:08:35 2021 +0000"
      },
      "message": "Add constexpr annotations to LSEVisitor member functions.\n\nNewer versions of clang rightly warn about LSEVisitor::Value::Equals\nnot being a constexpr function because it calls the non-constexpr\nfunction LSEVisitor::IsValid(). Silence the warning by marking that\nfunction and its callees as constexpr.\n\nChange-Id: Ib3c36bd02232f8e465eac4eceabfa7ac069a634f\n"
    },
    {
      "commit": "ef28d24d7625943cc2b53e10bbece86a305b3ffd",
      "tree": "2bfd8cf9cbda1d4b2e463493cfdff450c1e9511f",
      "parents": [
        "1332a5702eab9facc2b67ea524e0b41a055524e4"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 17 20:21:51 2020 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 28 15:57:32 2020 +0000"
      },
      "message": "Avoid PhiPlaceholder pointers\n\nThe LSE pass passed around const PhiPlaceholder* in many places. This\nmeant it was difficult to extend the PhiPlaceholder system in some\nways. Change to have the list of PhiPlaceholders be implicit and pass\nthem around by value when needed.\n\nTest: 67037140\nBug: ./test.py --host\n\nChange-Id: I57ef0b0d39893340a14055c3f78ae4abc14721e1\n"
    },
    {
      "commit": "6d32723f7f2c319dff1f907f217454d11b8700f9",
      "tree": "80b7e73c45b0068a89ab5675f96a8a05816511f8",
      "parents": [
        "479cbad17b924755c8190e613f3f53c083b0fddd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 11 11:00:25 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 14 17:09:38 2020 +0000"
      },
      "message": "arm: Implement VarHandle intrinsics for arrays.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                      before after\nGetArrayElementInt    28.252 0.021\nGetArrayElementString 29.299 0.025\nSetArrayElementInt    29.737 0.021\nSetArrayElementString 32.842 0.025\n\nTest: Covered by existing tests.\nTest: testrunner.py --target --32 --optimizing\nBug: 71781600\nChange-Id: I7a77696c33213b0c811be963acca3f61f5ed7593\n"
    },
    {
      "commit": "479cbad17b924755c8190e613f3f53c083b0fddd",
      "tree": "1db99f8748140b16e6df07c5b6822956920f0723",
      "parents": [
        "1480f090379622ed0f4387714f71832711f5ae2a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 10 16:10:09 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 14 15:33:09 2020 +0000"
      },
      "message": "arm64: Implement VarHandle intrinsics for arrays.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                      before after\nGetArrayElementInt    26.925 0.020\nGetArrayElementString 27.585 0.024\nSetArrayElementInt    28.168 0.020\nSetArrayElementString 31.162 0.024\n\nTest: Covered by existing tests.\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nChange-Id: I1be78e6edc2d51210c95597c875489554833ecfc\n"
    },
    {
      "commit": "3ac2f5a25e9cae22ec8f5ae5e28de93f34d6485a",
      "tree": "70b8e5628d1d98490229ae98b370cf3407cfcc04",
      "parents": [
        "0b8b5a731f37491e1b135f577b16a5376bf4b753"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 18 12:23:48 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 10 18:09:40 2020 +0000"
      },
      "message": "Make RTP::Visit robust against input order\n\nReferenceTypePropogation::Visit(ArrayRef) relied on the input having a\nparticular order with known values at the front then topological. This\ncould cause issues if the list was not properly sorted, causing the\nRTP to silently fail. This makes RTP robust against the ordering of\ninputs for this function.\n\nTest: ./test.py --host\nBug: 67037140\nChange-Id: I03c522ea745f271ce438c82f7c6f3ab476c8249a\n"
    },
    {
      "commit": "0615dd9138d273567da6cca17176bdf560377418",
      "tree": "fb4f5c025b488efc35177b7d55c62de83d27b232",
      "parents": [
        "d259ffb453b04b6b8e0c48daf6dd6554ec80ee97"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 02 12:30:21 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 10 17:01:19 2020 +0000"
      },
      "message": "arm: Better document memory barriers for Unsafe/VarHandle.\n\nDefer to the codegen for the memory barriers instead of\nexplicit calls to assembler to emit the DMB instruction.\nThis use of MemBarrierKind allows us to better express\nthe required ordering even though codegen then generates\nthe same code anyway.\n\nTest: testrunner.py --target --32 --optimizing\nBug: 71781600\nChange-Id: I80cd8a6040b9f58ade4aa2adc9f98cfdfbdc758e\n"
    },
    {
      "commit": "2610dfeeafc061049452f5cbb778646ce43e8a9a",
      "tree": "14a32fb7454322fe43d27bd0cf9ea35333943c73",
      "parents": [
        "e9fb15381802428696dfaf848ea2187a0956fa7d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 07 16:26:43 2020 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 09 16:29:48 2020 +0000"
      },
      "message": "Enable LSE of shadow-klass field\n\nThe Object.shadow$_klass_ field is special in that it has a non-null\ndefault value. Previously, however, LSE would always treat it as\nhaving an Unknown value. This meant LSE was unable to handle reads\nfrom the shadow$_klass_ field and replace it with the associated\nLoadClass, leading to some allocations not being eliminated.\n\nThis change correctly informs LSE that the value should initially be\nthe LoadClass instruction.\n\nTest: ./test.py --host\nBug: 67037140\n\nChange-Id: I9099001211c6c099a5d1ab4188e2b11f79e2ad9e\n"
    },
    {
      "commit": "86d6cd53385eae365f16f45e1a5947cc6595eb63",
      "tree": "ce94ee1f5d574b2891163f9b9695c97142efd00d",
      "parents": [
        "af17e5f33380ad39d83c31d97a29f3c836150fa1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 02 18:13:10 2020 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 04 14:31:35 2020 +0000"
      },
      "message": "Remove DexCache arrays from image.\n\nRemove the hashtable storage from the image and allocate it at\nruntime instead (but keep the DexCache object in the image).\n\nFor compiled code, we have largely moved to using .bss, so the\nDexCache just costs us unnecessary extra space and dirty pages.\n\nFor interpreted code, the hashtables are too small and will be\noverridden many times over at run-time regardless.\n\nThe next step will be to make DexCache variable-size so it can\nadapt to both of the extremes (taking minimal amount of memory\nfor compiled code and avoiding cache evictions in interpreter).\n\nTest: test.py --host\nChange-Id: I9f89e8f19829b812cf85dea1a964259ed8b87f4d\n"
    },
    {
      "commit": "8331963d62776c3e3c9b15eeedeea5bcbe2eac7a",
      "tree": "dce2b9b2118c390b1b33f92fb7f1539f8be85165",
      "parents": [
        "c8178f5eb06aa54f78237145d7fdc05609c02962"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 02 11:19:28 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 02 22:39:05 2020 +0000"
      },
      "message": "Remove duplicated test in LSA tests\n\nAn execution-subgraph test was duplicated in\nload_store_analysis_test.cc. Remove it.\n\nTest: ./test.py --host\nChange-Id: Ibbd6a530ad3bb03e9760bef8273595170e997e1f\n"
    },
    {
      "commit": "c8178f5eb06aa54f78237145d7fdc05609c02962",
      "tree": "e69d3979efb81ca752f5f2d469279e26f22329aa",
      "parents": [
        "e8cdb0bb53e42316e8c7379d41a647ca672c4bee"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 24 10:38:16 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 02 20:20:49 2020 +0000"
      },
      "message": "arm64: Clean up VarHandle intrinsics implementation.\n\nFix some typos and update some table lookup code that\u0027s\ncurrently unused. Bring in a few things from arm (naming,\nstatic assertion, pull an expression to a named variable).\n\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nChange-Id: If2f2c4417942a272a8ad672c6b876e0569f8827c\n"
    },
    {
      "commit": "526569ac1e4939afeb15c5970e5e6e41e7cbfdcd",
      "tree": "d101df24783a05a4e91e39ce9155e5022ec4defa",
      "parents": [
        "402361beeade7cf30229698ad904cb28c6671706"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 30 15:48:38 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 02 12:20:59 2020 +0000"
      },
      "message": "arm: Implement VarHandle GetAndUpdate intrinsics.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                                      before after\nGetAndAddStaticFieldInt               25.119 0.030\nGetAndAddFieldInt                     28.785 0.031\nGetAndAddStaticFieldFloat             25.195 0.033\nGetAndAddFieldFloat                   28.924 0.034\nGetAndAddAcquireStaticFieldInt        25.101 0.029\nGetAndAddAcquireFieldInt              28.767 0.031\nGetAndAddAcquireStaticFieldFloat      25.186 0.031\nGetAndAddAcquireFieldFloat            28.948 0.034\nGetAndAddReleaseStaticFieldInt        25.138 0.026\nGetAndAddReleaseFieldInt              28.798 0.028\nGetAndAddReleaseStaticFieldFloat      25.186 0.029\nGetAndAddReleaseFieldFloat            28.937 0.031\nGetAndBitwiseOrStaticFieldInt         25.134 0.030\nGetAndBitwiseOrFieldInt               28.860 0.032\nGetAndBitwiseOrAcquireStaticFieldInt  25.126 0.029\nGetAndBitwiseOrAcquireFieldInt        28.801 0.031\nGetAndBitwiseOrReleaseStaticFieldInt  25.129 0.026\nGetAndBitwiseOrReleaseFieldInt        28.794 0.028\nGetAndBitwiseXorStaticFieldInt        25.120 0.030\nGetAndBitwiseXorFieldInt              28.778 0.031\nGetAndBitwiseXorAcquireStaticFieldInt 25.111 0.029\nGetAndBitwiseXorAcquireFieldInt       28.749 0.031\nGetAndBitwiseXorReleaseStaticFieldInt 25.167 0.026\nGetAndBitwiseXorReleaseFieldInt       28.804 0.028\nGetAndBitwiseAndStaticFieldInt        25.194 0.030\nGetAndBitwiseAndFieldInt              28.917 0.031\nGetAndBitwiseAndAcquireStaticFieldInt 25.195 0.029\nGetAndBitwiseAndAcquireFieldInt       28.843 0.031\nGetAndBitwiseAndReleaseStaticFieldInt 25.187 0.026\nGetAndBitwiseAndReleaseFieldInt       28.867 0.028\nGetAndSetStaticFieldInt               24.912 0.030\nGetAndSetStaticFieldString            29.681 0.040\nGetAndSetFieldInt                     28.612 0.031\nGetAndSetFieldString                  32.699 0.041\nGetAndSetAcquireStaticFieldInt        24.875 0.029\nGetAndSetAcquireStaticFieldString     29.692 0.036\nGetAndSetAcquireFieldInt              28.604 0.031\nGetAndSetAcquireFieldString           32.606 0.038\nGetAndSetReleaseStaticFieldInt        24.872 0.026\nGetAndSetReleaseStaticFieldString     29.691 0.037\nGetAndSetReleaseFieldInt              28.699 0.028\nGetAndSetReleaseFieldString           32.721 0.039\n\nTest: Covered by existing tests.\nTest: testrunner.py --target --32 -optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\nBug: 71781600\nChange-Id: I6c110de362c01f0f8e80960aae731038b35fda64\n"
    },
    {
      "commit": "210a78d9ec4349601ac57381046229f4da1197f4",
      "tree": "dba581ba26ba7f6add0c3c1a2968d4f5d5dc8336",
      "parents": [
        "59d4b53e70bc1e0589ce05428c945b4585e28d0f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 30 16:58:05 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 01 20:12:45 2020 +0000"
      },
      "message": "Ensure ClearLoopInformation doesn\u0027t require particular ordering\n\nThe ClearLoopInformation call used to use the RPO list to find\nblocks which potentially had loop-information. This meant that if one\nwas also clearing the dominance information (which is quite common)\none needed to be sure to call ClearLoopInformation before calling\nClearDominanceInformation or else loop information will not be fully\ncleared. This could cause quite perplexing errors if dominance\ninformation is recomputed later (also quite common). This error is in\nfact present in several tests (none of which use loops which is how it\ngot missed).\n\nFix this issue by just looping over all blocks. Also add a new\nGetActiveBlocks function which does the filtering of null blocks\nautomatically. In many cases (such as these) we use RPO purely because\nit doesn\u0027t require filtering. This should be able to replace these\nuses.\n\nTest: ./test.py --host\nChange-Id: I60c7defc409111471064e9bf02b7ae3a0eb10584\n"
    },
    {
      "commit": "3d350a8ab8ca1fbc3e9fd3cab903fa777dfb329b",
      "tree": "d1ec9fe70b68423b28e69e3370c96c970fb39a0f",
      "parents": [
        "2ecdbc45535f7594dc1684a06b47624aaeff8502"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 18 14:14:27 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 15:04:38 2020 +0000"
      },
      "message": "arm: Implement VarHandle CAS intrinsics.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                                           before after\nCompareAndSetStaticFieldInt                26.452 0.031\nCompareAndSetStaticFieldString             31.672 0.037\nCompareAndSetFieldInt                      29.569 0.033\nCompareAndSetFieldString                   34.095 0.042\nWeakCompareAndSetStaticFieldInt            26.470 0.031\nWeakCompareAndSetStaticFieldString         31.604 0.038\nWeakCompareAndSetFieldInt                  29.619 0.033\nWeakCompareAndSetFieldString               34.058 0.040\nWeakCompareAndSetPlainStaticFieldInt       26.508 0.026\nWeakCompareAndSetPlainStaticFieldString    31.675 0.031\nWeakCompareAndSetPlainFieldInt             29.635 0.028\nWeakCompareAndSetPlainFieldString          34.116 0.034\nWeakCompareAndSetAcquireStaticFieldInt     26.512 0.030\nWeakCompareAndSetAcquireStaticFieldString  31.661 0.035\nWeakCompareAndSetAcquireFieldInt           29.661 0.032\nWeakCompareAndSetAcquireFieldString        34.120 0.038\nWeakCompareAndSetReleaseStaticFieldInt     26.566 0.027\nWeakCompareAndSetReleaseStaticFieldString  31.659 0.034\nWeakCompareAndSetReleaseFieldInt           29.676 0.029\nWeakCompareAndSetReleaseFieldString        34.204 0.037\nCompareAndExchangeStaticFieldInt           25.550 0.031\nCompareAndExchangeStaticFieldString        31.219 0.039\nCompareAndExchangeFieldInt                 28.923 0.032\nCompareAndExchangeFieldString              33.622 0.040\nCompareAndExchangeAcquireStaticFieldInt    25.559 0.029\nCompareAndExchangeAcquireStaticFieldString 31.177 0.037\nCompareAndExchangeAcquireFieldInt          28.807 0.031\nCompareAndExchangeAcquireFieldString       33.524 0.038\nCompareAndExchangeReleaseStaticFieldInt    25.481 0.027\nCompareAndExchangeReleaseStaticFieldString 31.132 0.036\nCompareAndExchangeReleaseFieldInt          28.825 0.029\nCompareAndExchangeReleaseFieldString       33.511 0.038\n\nOddly, this rewrite makes the Unsafe CAS benchmarks regress\na bit on this configuration. However, experiments show that\nadding useless CLZ+LSR operating on a temporary register\n(corresponding to the old code\u0027s result calculation) would\nrestore the performance to the old level. We prefer not to\nadd these useless instructions as the situation is likely\nto be reversed on different CPU cores.\n\nTest: Covered by existing tests.\nTest: testrunner.py --target --32 --optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\nTest: run-gtests.sh\nBug: 71781600\nChange-Id: I591009d7494533cdf60a47be2f8826144e059ff5\n"
    },
    {
      "commit": "d6bd107ed83502eb0bbaf66911ab036ecf74612d",
      "tree": "81686cdcb1e29b7fc077a9ba31db4c448ac7d007",
      "parents": [
        "f6332e8b09599bea16666e9bbc6bdfd0c3fb2cef"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 30 18:42:01 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 30 18:46:19 2020 +0000"
      },
      "message": "Fix invokeinterface sharpened with kRuntimeCall.\n\nBug: 174260111\nBug: 173677667\n\nTest: 728-imt-conflict-zygote\nTest: atest com.android.bootimageprofile.BootImageProfileTest#testSystemServerProfile\nTest: adb install com.google.android.art.apex\nChange-Id: Ie600a0c8c8eb38d9084b796bac9184c06ea0a2f4\n"
    },
    {
      "commit": "23c926d12f8333d2ca59d6b321064cb9d831f0ad",
      "tree": "68e7f88f580ff30950605332f2187b18a904add6",
      "parents": [
        "6af553d1f411926acdb96d6fa85fb126b761eada"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 05 12:02:00 2020 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Nov 24 21:13:51 2020 +0000"
      },
      "message": "Do not create symbols for [DEDUPED] methods.\n\nThe incorrect method name keeps confusing developers, despite the tag.\n\nHowever, around half the time, the deduped methods share either the\nsame class name or method name, so include it in the name if possible.\n\nBug: 32949969\nTest: printf the generated method names.\nChange-Id: I9cc6f16da0a91d93aa05df5476011bf180d626d9\n"
    },
    {
      "commit": "ac3fcff3ad61fe468517163f47ec2239dff4e17f",
      "tree": "16c6188f3957ea91453d19c46702ecf71cc64eed",
      "parents": [
        "b1cbfc7419eb0491f49c94191bcc920de2a3724e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 17 12:17:58 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 20 11:03:41 2020 +0000"
      },
      "message": "arm: Implement VarHandle.get/set intrinsics.\n\nIncluding Opaque, Acquire/Release and Volatile variants.\nRefactor Unsafe.get/put operations to share code with the\nnew VarHandle intrinsics, fixing potentially non-atomic\n64-bit \"Ordered\" operations in the process.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                             before after\nGetStaticFieldInt            23.937 0.014\nGetStaticFieldString         24.497 0.019\nGetFieldInt                  27.510 0.016\nGetFieldString               28.000 0.021\nGetAcquireStaticFieldInt     23.953 0.017\nGetAcquireStaticFieldString  24.532 0.021\nGetAcquireFieldInt           27.457 0.020\nGetAcquireFieldString        28.137 0.023\nGetOpaqueStaticFieldInt      23.955 0.014\nGetOpaqueStaticFieldString   24.530 0.019\nGetOpaqueFieldInt            27.461 0.016\nGetOpaqueFieldString         28.164 0.021\nGetVolatileStaticFieldInt    23.971 0.017\nGetVolatileStaticFieldString 24.612 0.021\nGetVolatileFieldInt          27.518 0.020\nGetVolatileFieldString       28.178 0.023\nSetStaticFieldInt            25.291 0.014\nSetStaticFieldString         28.873 0.018\nSetFieldInt                  28.676 0.016\nSetFieldString               32.286 0.021\nSetVolatileStaticFieldInt    25.339 0.021\nSetVolatileStaticFieldString 28.904 0.028\nSetVolatileFieldInt          28.730 0.023\nSetVolatileFieldString       32.322 0.030\nSetOpaqueStaticFieldInt      25.343 0.014\nSetOpaqueStaticFieldString   28.992 0.018\nSetOpaqueFieldInt            28.749 0.016\nSetOpaqueFieldString         32.317 0.022\nSetReleaseStaticFieldInt     25.354 0.016\nSetReleaseStaticFieldString  28.906 0.025\nSetReleaseFieldInt           28.678 0.017\nSetReleaseFieldString        32.262 0.027\n\nTest: Covered by existing test 712-varhandle-invocations.\nTest: testrunner.py --target --32 --optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\nBug: 71781600\nChange-Id: I0ac6d0c154791d787d5c4abd8095e3c2eee9abbb\n"
    },
    {
      "commit": "86fe9b85c5243debe5f695c1625bae03bf738452",
      "tree": "5de78b8292a0225b617e1825817cbd12b46b6fa3",
      "parents": [
        "cc9df4fa1e666b90c5dd8eac94773763f8421f1e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 16 16:54:01 2020 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 18 20:26:53 2020 +0000"
      },
      "message": "Revert^4 \"Partial LSE analysis \u0026 store removal\"\n\nWe incorrectly handled merging unknowns in some situations.\nSpecifically in cases where we are unable to materialize loop-phis we\ncould end up with PureUnknowns which could end up hiding stores that\nneed to be kept.\n\nIn an unrelated issue we were incorrectly considering some values as\nescapes when live at the point of an invoke. Since\nSearchPhiPlaceholdersForKeptStores used a more precise notion of\nescapes we could end up removing stores without being able to replace\nthe values.\n\nThis reverts commit 2316b3a0779f3721a78681f5c70ed6624ecaebef.\nThis unreverts commit b6837f0350ff66c13582b0e94178dd5ca283ff0a\nThis reverts commit fe270426c8a2a69a8f669339e83b86fbf40e25a1.\nThis unreverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\nBug: 173120044\n\nReason for revert: Fixed issue causing incorrect store elimination\nTest: ./test.py --host\nTest: Boot cuttlefish\n      atest FrameworksServicesTests:com.android.server.job.BackgroundRestrictionsTest#testPowerWhiteList\n\nChange-Id: I2ebae9ccfaf5169d551c5019b547589d0fce1dc9\n"
    },
    {
      "commit": "c2d5c707a2cfeaaafcf8f5d7e5193dd2d5c59592",
      "tree": "5d978a37a409b8801e6e00178a05c0857cef58ef",
      "parents": [
        "cfc6e9d55263d49e2d8d19a4a3a7d38567bb4fb9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 13 15:28:33 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 17 09:11:29 2020 +0000"
      },
      "message": "arm64: Implement VarHandle GetAndBitwiseOp intrinsics.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                                      before after\nGetAndBitwiseOrStaticFieldInt         23.917 0.026\nGetAndBitwiseOrFieldInt               26.828 0.026\nGetAndBitwiseOrAcquireStaticFieldInt  23.908 0.025\nGetAndBitwiseOrAcquireFieldInt        26.822 0.026\nGetAndBitwiseOrReleaseStaticFieldInt  23.906 0.026\nGetAndBitwiseOrReleaseFieldInt        26.831 0.026\nGetAndBitwiseXorStaticFieldInt        23.829 0.026\nGetAndBitwiseXorFieldInt              26.784 0.026\nGetAndBitwiseXorAcquireStaticFieldInt 23.841 0.025\nGetAndBitwiseXorAcquireFieldInt       26.788 0.026\nGetAndBitwiseXorReleaseStaticFieldInt 23.835 0.026\nGetAndBitwiseXorReleaseFieldInt       26.788 0.026\nGetAndBitwiseAndStaticFieldInt        23.874 0.026\nGetAndBitwiseAndFieldInt              26.797 0.026\nGetAndBitwiseAndAcquireStaticFieldInt 23.871 0.025\nGetAndBitwiseAndAcquireFieldInt       26.792 0.026\nGetAndBitwiseAndReleaseStaticFieldInt 23.865 0.026\nGetAndBitwiseAndReleaseFieldInt       26.786 0.026\n\nTest: Covered by existing test 712-varhandle-invocations.\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nChange-Id: I8263f6b1b125c46190da06a9a05e60335bf69992\n"
    },
    {
      "commit": "a07de551da5147f3635c665a31f262cf65647118",
      "tree": "d6f8199cc45ab8b6ef779f97ef0e8f0d04520ef8",
      "parents": [
        "4483d2a4ed7e6c018e304c234484940ec0476039"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Sun Nov 01 22:42:43 2020 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Nov 16 14:31:54 2020 +0000"
      },
      "message": "Revert^2 \"ART: Fix breaking changes from recent VIXL update.\"\n\nThis reverts commit eeaf47f7c9bbad29afab84a0f199a5751d9c616b.\n\nAlso fixes the gtest failure when VIXL simulator stack\nwas overflown.\n\nTest: test-art-target, test-art-host.\nTest: ART_USE_READ_BARRIER\u003dfalse \\\n      SANITIZE_HOST\u003daddress \\\n      ASAN_OPTIONS\u003d\u0027detect_leaks\u003d0\u0027 \\\n      SOONG_ALLOW_MISSING_DEPENDENCIES\u003dtrue \\\n      ART_HEAP_POISONING\u003dtrue m test-art-host-gtest\n\nChange-Id: Ibc1f21204940083879f767d6993127bdde8326af\n"
    },
    {
      "commit": "e1510d4b8aff0d025adacac8e6d42fa9d1dcedf9",
      "tree": "77150893b2e584a1913dddd84287b4a5312c4c19",
      "parents": [
        "436977d92a803be16ba2ad825793daeb462ce373"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 13 11:07:13 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 16 10:37:00 2020 +0000"
      },
      "message": "arm64: Implement VarHandle GetAndAdd intrinsics.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                                 before after\nGetAndAddStaticFieldInt          23.640 0.026\nGetAndAddFieldInt                26.673 0.026\nGetAndAddStaticFieldFloat        23.588 0.029\nGetAndAddFieldFloat              26.732 0.029\nGetAndAddAcquireStaticFieldInt   23.618 0.025\nGetAndAddAcquireFieldInt         26.677 0.026\nGetAndAddAcquireStaticFieldFloat 23.592 0.028\nGetAndAddAcquireFieldFloat       26.736 0.029\nGetAndAddReleaseStaticFieldInt   23.612 0.026\nGetAndAddReleaseFieldInt         26.708 0.026\nGetAndAddReleaseStaticFieldFloat 23.596 0.029\nGetAndAddReleaseFieldFloat       26.747 0.029\n\nTest: Covered by existing test 712-varhandle-invocations.\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nChange-Id: I3e435a3635f2d7164b9b410f5588fefb076edd07\n"
    },
    {
      "commit": "436977d92a803be16ba2ad825793daeb462ce373",
      "tree": "5eeb799688f4990af7d82f4f83e2c57e79229935",
      "parents": [
        "cc5629c1480b3be6189391b335d17911c9ddb6ad"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 12 12:41:06 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 16 09:58:38 2020 +0000"
      },
      "message": "arm64: VarHandle intrinsics improvements.\n\nUnify allocation of the temporary register for offset.\nWe now allocate an extra temporary for most Get intrinsics\nbut arm64 has enough registers and this simplifies the code.\n\nAdd bug number to cases unimplemented due to b/173104084.\n\nAnd use CBNZ instead of CMP+BNE when checking the primitive\ntype for references (kPrimNot has value 0).\n\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nBug: 173104084\nChange-Id: Ia39f4ff2810ef2e310545b65792b2f988c8c38fe\n"
    },
    {
      "commit": "cc5629c1480b3be6189391b335d17911c9ddb6ad",
      "tree": "8fe09ed193c0514e614ea6e3b3bc2a17f453d5ca",
      "parents": [
        "2316b3a0779f3721a78681f5c70ed6624ecaebef"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Oct 30 16:12:01 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Nov 14 21:55:00 2020 +0000"
      },
      "message": "Clarify allocation entry point semantics\n\nTest: Treehugger\nBug: 171993478\nChange-Id: I03a95b7028ef98a5438011ce53b43de44f23bec8\n"
    },
    {
      "commit": "2316b3a0779f3721a78681f5c70ed6624ecaebef",
      "tree": "8aa4682729b839a97b2578e6cbe05ee5d35be923",
      "parents": [
        "aeb7f9f8fe718219cfb04e0da5df62683250477d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sat Nov 14 01:28:22 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Nov 14 02:54:26 2020 +0000"
      },
      "message": "Revert^3 \"Partial LSE analysis \u0026 store removal\"\n\nThis reverts commit b6837f0350ff66c13582b0e94178dd5ca283ff0a\nThis unreverts commit fe270426c8a2a69a8f669339e83b86fbf40e25a1.\nThis rereverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\nBug: 173120044\n\nReason for revert: Git-blame seems to point to the CL as cause of\nb/173120044. Revert during investigation.\n\nChange-Id: I46f557ce79c15f07f4e77aacded1926b192754c3\n"
    },
    {
      "commit": "b6837f0350ff66c13582b0e94178dd5ca283ff0a",
      "tree": "f79fff81352545efe967850e3d17e32255dcfecd",
      "parents": [
        "32c2eb81320f24b5bab24754204b8be95faa08b0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Nov 12 17:05:28 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 13 10:07:21 2020 +0000"
      },
      "message": "Revert^2 \"Partial LSE analysis \u0026 store removal\"\n\nA ScopedArenaAllocator in a single test was accidentally loaded using\noperator new which is not supported. This caused a memory leak.\n\nThis reverts commit fe270426c8a2a69a8f669339e83b86fbf40e25a1.\nThis unreverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\n\nReason for revert: Fixed memory leak in\nLoadStoreAnalysisTest.PartialEscape test case\n\nTest: SANITIZE_HOST\u003daddress ASAN_OPTIONS\u003ddetect_leaks\u003d0 m test-art-host-gtest-dependencies\n      Run art_compiler_tests\n\nChange-Id: I34fa2079df946ae54b8c91fa771a44d56438a719\n"
    },
    {
      "commit": "32c2eb81320f24b5bab24754204b8be95faa08b0",
      "tree": "6c8d6978f05d2046baf26829d7ba00ae8ef647ad",
      "parents": [
        "b209a043a0d5965f25dcb9fde2049df493dcf602"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 10 16:58:47 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 13 08:59:35 2020 +0000"
      },
      "message": "arm64: Implement VarHandle GetAndSet intrinsics.\n\nAdd an extra test to 160-read-barrier-stress. The main path\nis sufficiently exercised by 712-varhandle-invocations.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                                  before after\nGetAndSetStaticFieldInt           23.809 0.027\nGetAndSetStaticFieldString        27.112 0.035\nGetAndSetFieldInt                 26.988 0.028\nGetAndSetFieldString              29.626 0.034\nGetAndSetAcquireStaticFieldInt    23.900 0.025\nGetAndSetAcquireStaticFieldString 27.084 0.034\nGetAndSetAcquireFieldInt          26.972 0.026\nGetAndSetAcquireFieldString       29.617 0.032\nGetAndSetReleaseStaticFieldInt    23.876 0.027\nGetAndSetReleaseStaticFieldString 27.093 0.035\nGetAndSetReleaseFieldInt          26.969 0.028\nGetAndSetReleaseFieldString       29.609 0.034\n\nTest: testrunner.py --target --64 --optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\n      (Ignore two pre-existing checker test failures.)\nBug: 71781600\nChange-Id: I6a03858b1446354919cd4d08348ef93b725aafc6\n"
    },
    {
      "commit": "fe270426c8a2a69a8f669339e83b86fbf40e25a1",
      "tree": "c048fdec8e37cefb7238218a087709c01d5d3923",
      "parents": [
        "e17530a19a717879c8dd8e70073de6aaf4ee455f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 12 14:12:52 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 12 16:33:50 2020 +0000"
      },
      "message": "Revert \"Partial LSE analysis \u0026 store removal\"\n\nThis reverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\n\nReason for revert: memory leak detected in the test.\n\nChange-Id: I81cc2f61494e96964d8be40389eddcd7c66c9266\n"
    },
    {
      "commit": "e17530a19a717879c8dd8e70073de6aaf4ee455f",
      "tree": "745e7e23519d37ae5fcafcf9f63c5e707779ce1b",
      "parents": [
        "bb6cda60e4418c0ab557ea4090e046bed8206763"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 11 17:02:26 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 12 10:53:53 2020 +0000"
      },
      "message": "arm64: Fix VarHandle intrinsics for non-Baker read barrier.\n\nIt turns out the artReadBarrierSlow() ignores the passed\nreference and reloads the field from the object. This makes\nsome of the VarHandle intrinsics broken for the TABLELOOKUP\nconfiguration. This change disables the broken variants of\nthese intrinsics (but leaves support code in place) and\ncleans up locations for those variants that remain active.\n\nAlso refactor reference argument checks and do a few other\nsmall cleanups (renames, comment updates, etc.).\n\nTest: testrunner.py --target --64 --optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\n      (Ignore two pre-existing checker test failures.)\nBug: 71781600\nChange-Id: I8d28a4883771a8db2b283737bb643b36c7038c26\n"
    },
    {
      "commit": "bb6cda60e4418c0ab557ea4090e046bed8206763",
      "tree": "f6b94510108cb653a80e0ea14d50ad6616c9f44a",
      "parents": [
        "670ff8854cf075617e0abee77b2259903757d86e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 09 13:24:56 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 12 02:08:44 2020 +0000"
      },
      "message": "Partial LSE analysis \u0026 store removal\n\nThis is the first piece of partial LSE for art. This CL adds analysis\ntools needed to implement partial LSE. More immediately, it improves\nLSE so that it will remove stores that are provably non-observable\nbased on the location they occur. For example:\n\n```\nFoo o \u003d new Foo();\nif (xyz) {\n  check(foo);\n  foo.x++;\n} else {\n  foo.x \u003d 12;\n}\nreturn foo.x;\n```\n\nThe store of 12 can be removed because the only escape in this method\nis unreachable and was not executed by the point we reach the store.\n\nThe main purpose of this CL is to add the analysis tools needed to\nimplement partial Load-Store elimination. Namely it includes tracking\nof which blocks are escaping and the groups of blocks that we cannot\nremove allocations from.\n\nThe actual impact of this change is incredibly minor, being triggered\nonly once in a AOSP code. go/lem shows only minor effects to\ncompile-time and no effect on the compiled code. See\ngo/lem-allight-partial-lse-2 for numbers. Compile time shows an\naverage of 1.4% regression (max regression is 7% with 0.2 noise).\n\nThis CL adds a new \u0027reachability\u0027 concept to the HGraph. If this has\nbeen calculated it allows one to quickly query whether there is any\nexecution path containing two blocks in a given order. This is used to\ndefine a notion of sections of graph from which the escape of some\nallocation is inevitable.\n\nTest: art_compiler_tests\nTest: treehugger\nBug: 67037140\nChange-Id: I0edc8d6b73f7dd329cb1ea7923080a0abe913ea6\n"
    },
    {
      "commit": "eff9b011ddad5119ac6ba609d572e9b265c6d878",
      "tree": "1379b2a49120fe78eb7075409b744078ddbbed54",
      "parents": [
        "37f4945a45eeb5665b6d75eddc29906ac7759370"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 06 14:22:08 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 11 15:21:32 2020 +0000"
      },
      "message": "Move VarHandle fences to unreachable intrinsics.\n\nThese were erroneously moved to unimplemented intrinsics in\n    https://android-review.googlesource.com/1372099 .\n\nTest: m\nBug: 71781600\nChange-Id: Ic348ec1be92e7db8722575dd44f22826e770cc75\n"
    },
    {
      "commit": "1bff99f706a1b1a4c1799e0f037d9f59f303587a",
      "tree": "06cabecf52fbd336a2e65dbde991c45ce10bc64a",
      "parents": [
        "b15e8797d2ca6fb480a940887c66dd2aae7c9065"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 02 15:07:33 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 10 10:36:19 2020 +0000"
      },
      "message": "arm64: Implement VarHandle CAS intrinsics.\n\nAnd refactor Unsafe CAS intrinsics for code reuse.\n\nAdd extra tests to the 160-read-barrier-stress to test the\nslow paths. The main path is sufficiently exercised by the\n712-varhandle-invocations test. The refactored Unsafe CAS is\nalready covered by 004-Unsafe and 160-read-barrier-stress.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                                           before after\nCompareAndSetStaticFieldInt                24.721 0.026\nCompareAndSetStaticFieldString             29.015 0.032\nCompareAndSetFieldInt                      27.237 0.028\nCompareAndSetFieldString                   31.326 0.033\nWeakCompareAndSetStaticFieldInt            24.735 0.027\nWeakCompareAndSetStaticFieldString         28.970 0.031\nWeakCompareAndSetFieldInt                  27.252 0.028\nWeakCompareAndSetFieldString               31.309 0.036\nWeakCompareAndSetPlainStaticFieldInt       24.738 0.026\nWeakCompareAndSetPlainStaticFieldString    29.004 0.030\nWeakCompareAndSetPlainFieldInt             27.252 0.027\nWeakCompareAndSetPlainFieldString          31.326 0.035\nWeakCompareAndSetAcquireStaticFieldInt     24.728 0.026\nWeakCompareAndSetAcquireStaticFieldString  28.977 0.030\nWeakCompareAndSetAcquireFieldInt           27.250 0.027\nWeakCompareAndSetAcquireFieldString        31.306 0.034\nWeakCompareAndSetReleaseStaticFieldInt     24.738 0.026\nWeakCompareAndSetReleaseStaticFieldString  28.994 0.032\nWeakCompareAndSetReleaseFieldInt           27.250 0.028\nWeakCompareAndSetReleaseFieldString        31.312 0.035\nCompareAndExchangeStaticFieldInt           23.898 0.026\nCompareAndExchangeStaticFieldString        28.544 0.032\nCompareAndExchangeFieldInt                 26.787 0.027\nCompareAndExchangeFieldString              31.022 0.034\nCompareAndExchangeAcquireStaticFieldInt    23.957 0.026\nCompareAndExchangeAcquireStaticFieldString 28.586 0.031\nCompareAndExchangeAcquireFieldInt          26.785 0.026\nCompareAndExchangeAcquireFieldString       31.011 0.033\nCompareAndExchangeReleaseStaticFieldInt    23.963 0.026\nCompareAndExchangeReleaseStaticFieldString 28.511 0.032\nCompareAndExchangeReleaseFieldInt          26.729 0.027\nCompareAndExchangeReleaseFieldString       30.938 0.034\n\nTest: testrunner.py --target --64 --optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\n      (Ignore two pre-existing checker test failures.)\nBug: 71781600\nChange-Id: I01b2218bb812bc636a941f9bd67c844aee5f8b41\n"
    },
    {
      "commit": "8f2eb25ca40136a36a5d7002c8ca5a05723e334e",
      "tree": "51778c592bdd3eb65d3fde8c21997eec30bd1e23",
      "parents": [
        "8411c5ddb824bae1d3202a3bc2e42c77d351e916"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 13:39:54 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 06 15:26:27 2020 +0000"
      },
      "message": "Remove NeedsDexCache logic from the compiler.\n\nThe compiled code and runtime stubs don\u0027t need to have direct access to\nthe dex cache anymore.\n\nTest: test.py\nChange-Id: Id3aab9b10445ba2599e1a9ffd8e36506a745bfec\n"
    },
    {
      "commit": "94d2c81caaa0a7155b0ec45ac2bd55247a50fb9a",
      "tree": "128954d088110272a2e2d8baf3f994a1a9e96183",
      "parents": [
        "1960c42c5df95f3011c020b07328d03716532037"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 05 10:04:45 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 05 10:18:14 2020 +0000"
      },
      "message": "Fix DCHECK()s in read barrier slow paths.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/1478798\nto fix non-Baker read barrier configurations.\n\nTest: ART_READ_BARRIER_TYPE\u003dTABLELOOKUP m test-art-host-gtest\nBug: 170286013\nChange-Id: I6044d4fba720e0ed11b254990021f5b8236964a3\n"
    },
    {
      "commit": "01b65526c1dce94abb8ed98d473ddcd2b8fcd692",
      "tree": "edc3f88f666415ffb459bad64a585fa576dc65ab",
      "parents": [
        "908759b00ba0d84445636cc7cfcaf830b45e7b73"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 28 15:43:54 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 04 18:06:08 2020 +0000"
      },
      "message": "Implement Reference.getReferent() intrinsic.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: aosp_blueline-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing --jit\nBug: 170286013\nChange-Id: I4762f7c1cf3d61de2215ec8f1d14be80289c2372\n"
    },
    {
      "commit": "de91ca90389e4b41ed27b320a6c43ff56a6d75ff",
      "tree": "2e18ff33d30fce88d578ea68b8b1037755aececc",
      "parents": [
        "9ca92fb4646eccff9f972f6a2a21709676b65460"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 27 13:41:40 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 29 15:42:52 2020 +0000"
      },
      "message": "Refactor Integer.valueOf() intrinsic implementation.\n\nPrepare for Reference.getReferent() intrinsic implementation\nby a refactoring to separate the retrieval of an intrinsic\nmethod\u0027s declaring class to its own helper function, rather\nthan being a part of a larger one.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: aosp_blueline-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing --jit\nBug: 170286013\nChange-Id: Ib6c0e55d0c6fcc932999428f21c51afe32ab7ef2\n"
    },
    {
      "commit": "eeaf47f7c9bbad29afab84a0f199a5751d9c616b",
      "tree": "3b1572bd8c3cd89dbe060b52d1760bd857e999ed",
      "parents": [
        "1f3612f93759823d630e117be5216f694e0702e9"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Oct 28 15:59:29 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 28 17:42:50 2020 +0000"
      },
      "message": "Revert \"ART: Fix breaking changes from recent VIXL update.\"\n\nRevert submission 1331125-VIXL_UPDATE_SVE\n\nReason for revert: broken build git_master-art-host/art-gtest-heap-poisoning @ 6936943\nReverted Changes:\nIc10af84a0:Merge remote-tracking branch \u0027aosp/upstream-master...\nI752a0b0ba:ART: Fix breaking changes from recent VIXL update....\n\nBug: 171879890\nChange-Id: Idb0d5c2e88948d799a4ef2c828be2828ea2270ea\n"
    },
    {
      "commit": "4955036617ff4940bd35fa8ce63f0728c1042902",
      "tree": "20ebe9c047b9ed5e21e99f2f0a00a3946fa731e8",
      "parents": [
        "036b0708c12a33469db4a5adde9ded152b5eb700"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Jul 05 18:23:03 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 28 12:03:34 2020 +0000"
      },
      "message": "ART: Fix breaking changes from recent VIXL update.\n\nAlso fixes the vixl-related headers includes.\n\nTest: test-art-target, test-art-host\n\nChange-Id: I752a0b0baf741aa2a0693253155042104c8b3b27\n"
    },
    {
      "commit": "3e9abfc9779399815a7dc8d492466a1234b7fdcd",
      "tree": "fd1017f153d3759488914c4d372f543125722ad1",
      "parents": [
        "35b132e3377029a356cfbc9e4682e3ebceb83edf"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Oct 09 22:17:51 2020 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Oct 23 10:03:13 2020 +0000"
      },
      "message": "Rename ART release APEX to com.android.art.\n\nTest: Build \u0026 boot on AOSP master\nTest: `m` on AOSP master, flipping\n  PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD between true and false, and\n  check out/target/product/bonito/symbols/apex/com.android.art.\nTest: art/build/apex/runtests.sh\nTest: art/tools/buildbot-build.sh {--host,--target}\nTest: art/tools/run-gtests.sh\nTest: m test-art-host-gtest\nTest: art/test/testrunner/testrunner.py --target --64 --optimizing\nTest: m build-art-target-golem\nBug: 169639321\nChange-Id: Ic4bb8d6f9988ce99bba326b9c635bd3c01ed74ab\nMerged-In: Ic4bb8d6f9988ce99bba326b9c635bd3c01ed74ab\n"
    },
    {
      "commit": "938a0670d551d81d5f0710d0d565167b42227337",
      "tree": "dde8d8711384a1caf464c86f2c5944cbfdff61f8",
      "parents": [
        "5b041c05d6b73b73c43a425dc4ff3b784722c4a2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 16:03:42 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 21 14:38:43 2020 +0100"
      },
      "message": "Remove the checkcast quickening optimization.\n\nQuickening is now disabled, and the optimization uses VerifierDeps\npost-verification, which we plan on not supporting for future verifier\nimprovements.\n\nTest: test.py\nBug: 112676029\nChange-Id: Ie9004b27c93e1189e6c1142494e79cd84b05400c\n"
    },
    {
      "commit": "5b041c05d6b73b73c43a425dc4ff3b784722c4a2",
      "tree": "0425b87cf343b8a45182c053d7e300623b64d419",
      "parents": [
        "8bea400eec977e433ad3453c5a21f74955afbc2a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 15:17:53 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 21 13:23:28 2020 +0000"
      },
      "message": "Remove unassignable_types from vdex.\n\nThese were used in case a class went from \"verified-at-runtime\" to\n\"verified\". With go/nterp, we\u0027re re not going to handle this situation\nand we should only record what types the verifier expects to be\nassignable.\n\nTest: test.py\nBug: 112676029\nChange-Id: I6ffa61cef3aa767dfccadbdfdd5432e72e143ca3\n"
    },
    {
      "commit": "eb9eb00868106af52386d7113a8aafaa6d44e8b6",
      "tree": "05b1243b30b31d6e2d3215ebdaa329c90d9875f8",
      "parents": [
        "5fa36f99fdb5617d1ced977c637dcaa2762704fc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 02 13:54:19 2020 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 19 17:01:09 2020 +0000"
      },
      "message": "Faster @CriticalNative for boot image.\n\nThe @CriticalNative call does not need the target method, so\nwe can avoid one instruction on x86, x86-64 and arm64. The\ncurrent approach for arm does not allow such optimization.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_blueline-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --64 --optimizing\nBug: 112189621\nChange-Id: I11b7e415be2697757cbb11c9cccf4058d1d72d7d\n"
    },
    {
      "commit": "4bb09001683e00a9d0d34f685f2ec60004c0c1ef",
      "tree": "283e8c3c77c34a13b020275b031148cd46f1de9b",
      "parents": [
        "ae7168e19f886ed43ed200f9b0e769613df485f9"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Sep 30 11:42:34 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 12 18:12:00 2020 +0000"
      },
      "message": "[metrics] Implement JitMethodCompileTime histogram\n\nJitMethodCompileTime keeps track of how long methods take to compile in\nJIT mode.\n\nTest: m test-art-host-gtest-art_libartbase_tests\nBug: 170149255\nChange-Id: Ic0e5f365d9e7eb7bc0ebcf49d23972adcd6dfb36\n"
    },
    {
      "commit": "8d34a182fea1b24f7b8361b55e930cb953cf3fb2",
      "tree": "4f5ed9d9ac417dfd69fd18f64412b2272c448e05",
      "parents": [
        "8ecbc4e844fc3b73e6a5c5151eda914d53297180"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 16 09:46:58 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 07 08:32:52 2020 +0000"
      },
      "message": "Change interface conflict stub to take the interface method.\n\nTo avoid doing dex cache lookup, pass the interface method instead. This\ncosts a few hundred KBs on speed compiled APKs (\u003c 0.5% code size), but\nimproves performance when hitting a conflict (as seen on dogfood data).\n\nFor nterp, we currently pass the conflict method instead of the\ninterface method. We need to handle default methods before optimizing\nit.\n\nThis removes our last use of dex cache in compiled code. A follow-up CL\nwill remove the NeedsDexCacheOfDeclaringClass from HInvokeInterface.\n\nTest: test.py\n\nChange-Id: I3cdd4543ad7d904b3e81950af46a48a48af6991a\n"
    },
    {
      "commit": "8ecbc4e844fc3b73e6a5c5151eda914d53297180",
      "tree": "702ce0e2469b46bb63440d7b6ddb6a9e8b1637c2",
      "parents": [
        "cbbc8df2264e8ce0528e7b7bfe43e430e5bb3e81"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 06 12:57:45 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 06 15:54:28 2020 +0000"
      },
      "message": "Fix compiler crash in BCE.\n\nRemove a bogus call to HInstruction::AsConstant() that\ncauses a crash if the instruction is not a constant.\n\nTest: New test in 449-checker-bce-rem\nTest: testrunner.py --host --optimizing -t 449-checker-bce-rem\nBug: 169669115\nChange-Id: I7f962441b652538b2d1cc4238eb9ab66abc1286c\n"
    },
    {
      "commit": "71f7affff661a9f48afae25e19fcd3b9e82dac33",
      "tree": "0c39fae9b425703b0c05f7fdf70dc4e330bdbbbf",
      "parents": [
        "4904d5d65de32237790e5370bd076a9bccc22aa1"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Sep 15 16:45:49 2020 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Oct 05 11:41:52 2020 +0000"
      },
      "message": "Use prebuilt_visibility property on sdk/module_exports\n\nWhen the ART sdk/module_exports snapshots are unpacked in a prebuilts\ndirectory they need some additional visibility rules to be added to\nensure that the prebuilts are visible to each other. Previously, those\nwere added on a case by case basis to the individual modules. This\nchange replaces them by using the prebuilt_visibility property that\nspecifies additional visibility rules to be added to all prebuilt\nmodules in the snapshots.\n\nCurrently, the additional visibility added to the prebuilts makes them\nvisible to anything in //prebuilts or beneath which is not restrictive\nenough. Specifying the rule in a single place will make that easier to\nrestrict in future.\n\nBug: 155921753\nBug: 168301990\nTest: build sdk/snapshot, install them in prebuilts/module_sdk/art\n      and run m nothing to ensure the visibility rules are valid.\nChange-Id: I751ed6d488038214ac9df35849babe69a3c79a31\n"
    },
    {
      "commit": "2d98dc23d6e9b74ef004d4358d6c3d53503b12a7",
      "tree": "52e950bc8fead0bbb93cef38b17cec9723604fe1",
      "parents": [
        "cd8ffcbca3e25c3ee8c0ffeaadac4167db6f2b58"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 01 11:21:37 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 02 10:02:09 2020 +0000"
      },
      "message": "arm64: VarHandle.{get,set}{Opaque,Acquire,Volatile}.\n\nExtend the VarHandle.{get,set} for fields to similar\nvariants with additional memory ordering requirements.\n\nTest: testrunner.py --target --64 -t 712-varhandle-invocations\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\nBug: 65872996\nChange-Id: I400802a1e089a5a81149316f88bb90979f8988e6\n"
    },
    {
      "commit": "baade40270fbfdc36cd0500d5245408debe7737e",
      "tree": "6c081f03e5531cdb90da8e0b53c51b5f0358e628",
      "parents": [
        "8f63f1084b013a129f66cf8a7ed8ab1cae9f02aa"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 30 14:45:39 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 30 14:51:18 2020 +0000"
      },
      "message": "arm: Fix LoadClass/BssEntry{Public,Package}\n\nAlso update oatdump to list the new entries.\n\nTest: testrunner.py --target --32 --optimizing -t 727\nBug: 161898207\nChange-Id: I34b400531498cfac3c9606fa82b0894841054457\n"
    },
    {
      "commit": "8f63f1084b013a129f66cf8a7ed8ab1cae9f02aa",
      "tree": "6e9bbf5ad71a55f701f740e2995e0b84e9b87307",
      "parents": [
        "7aa2bfc09541ea5d2516738de84c24cd0269fed0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 28 12:10:28 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 30 13:58:32 2020 +0000"
      },
      "message": "Faster access to unresolved classes from compiled code.\n\nAdd two new load kinds to LoadClass, similar to kBssEntry\nbut using the access-checking entrypoint on the slow-path.\nOne is used for classes that are in the literal package and\nthe other for classes outside the literal package of the\ncompiling class. Associate new .bss entries with these load\nkinds and update them from entrypoints based on the resolved\nclass properties. If the resolved class is public, both\ntypes of entries can be updated, otherwise only the package\nlocal entry can be updated and only if the defining class\nloader of the class is the same as the caller\u0027s defining\nclass loader (which is identical for all code in an oat\nfile) because the run time access check for same package\nrequires both class loader and literal package name match.\n\nTest: Additional tests in 727-checker-unresolved-class.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_blueline-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 161898207\nChange-Id: I281e06ac2825caf81c6d7ee3128af833abd39992\n"
    },
    {
      "commit": "407468761d72c1031a871c18c29238135d9f0a88",
      "tree": "d9655da2c6a95806476f3b4bfcfd522feafaad06",
      "parents": [
        "9636062c4d4839bbb2fd979ee56b2f38d8615f1e"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Sep 29 13:58:10 2020 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Sep 29 14:55:40 2020 +0000"
      },
      "message": "Link libart-disassembler statically into static libart-compiler.\n\nNecessary to avoid runtime dlopen of non-existing\nlibart(d)-disassembler.so in host dex2oat. This increases the stripped\ndex2oat binary size by 4.8% or ~800 KB.\n\nTest: art/tools/buildbot-build.sh --host \u0026\u0026 \\\n  art/test/testrunner/testrunner.py --optimizing --host --ndebug -t 465\n  with and without HOST_PREFER_32_BIT\u003dtrue\nBug: 145934348\nChange-Id: I623019132175bd0430d30a421655484bdcb71857\n"
    },
    {
      "commit": "270e10a8122d4a2abe4d92db55451e2b62f32188",
      "tree": "c79d39ac402c7c1dce256da512f4fa6fb9793bd4",
      "parents": [
        "1938b35c92396fdf8c4386e191e4fc2d95bb1898"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 24 11:48:47 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 28 14:55:24 2020 +0000"
      },
      "message": "Improve codegen for referrer\u0027s class...\n\n... for unresolved compiling class.\n\nTest: Update test 727-checker-unresolved-class.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: testrunner.py --host --optimizing --interpreter --jvm -t 727\nBug: 161898207\nChange-Id: I1a931179060ae435ca52d5a6eca3c641b9356c03\n"
    },
    {
      "commit": "35f765b9c66a9d999d35afd54c693f8636d0a7ee",
      "tree": "4e51043f9d638c0d861022291ef80d126fb96e0d",
      "parents": [
        "a28438ab47e8e41599fa6b2343f8a6a21efa0116"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Wed Sep 23 00:38:38 2020 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Mon Sep 28 10:13:56 2020 +0000"
      },
      "message": "Link all internal libraries statically into dex2oat(d) on host.\n\nAll static defaults had to change to whole_static_libs to work with the\nnew libdex2oat(d)_static libraries, so that they don\u0027t lose all symbols\nin the static_libs dependency from the dex2oat(d) binaries.\n\nThe static unstripped dex2oat binary is 348 MB, 35 MB smaller than the\nsum of the dynamic binary + DSO\u0027s.\n\nTest: art/build/apex/runtests.sh\nTest: runtests in device chroot\nTest: art/test/testrunner/run_build_test_target.py art-test\nTest: readelf -d out/host/linux-x86/bin/dex2oat(d)\n  Check that NEEDED only lists system libraries (libdl, libpthread,\n  libm, librt, libgcc_s, libc).\nBug: 145934348\nChange-Id: I7abcf1db9b053f71ced6a7dde38ab1b4300b7b5a\n"
    },
    {
      "commit": "2f47a3110a16d60128a16b280191941df4ecf237",
      "tree": "37894e0e71d843de44f23c9b32d367ab99e51a67",
      "parents": [
        "e470ff7e4e5e58d292b316681fcf4e889e80638a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 20 14:23:45 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 28 09:22:55 2020 +0100"
      },
      "message": "Integer.divideUnsigned() intrinsic on ARM.\n\nTest: Covered by 082-inline-execute.\nTest: testrunner.py --target --optimizing --32\nBug: 156736938\nChange-Id: I902c3b62b4382f94b045a36493ca7b1c799746d2\n"
    },
    {
      "commit": "a3bd4ec050e10fbfb6df0fe024bc6f3851bcc326",
      "tree": "8a373f87b05b3580f564bd8561bf0dd4ebb9161e",
      "parents": [
        "b0f405e1482df602fc57ee2ed4434456c4dc2555"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Thu Aug 27 16:26:17 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 25 09:16:33 2020 +0000"
      },
      "message": "Introduce Long.divideUnsigned() intrinsic on ARM64.\n\nExtends the 082-inline-execute test and reorders\ndivideUnsigned intrinsic code before VarHandle code.\n\nTest: 082-inline-execute.\nTest: testrunner.py --target --optimizing --64\nBug: 156736938\nChange-Id: I8acf3db184da30640aff36cf02570ae0c6d2b88c\n"
    },
    {
      "commit": "b0f405e1482df602fc57ee2ed4434456c4dc2555",
      "tree": "61d493a3ae65489090b186767ae83c7c1d893de1",
      "parents": [
        "5ba66998281af9719e5d5ef84fd095181d4cf9a8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 24 15:10:35 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 25 08:39:47 2020 +0000"
      },
      "message": "Move the resolved_method_reference to HInvoke.\n\nIn order to also be used by HInvokeInterface.\n\nTest: test.py\nChange-Id: If72071a5347a13843f2c3ad8da4af4d6aaee6444\n"
    },
    {
      "commit": "5ba66998281af9719e5d5ef84fd095181d4cf9a8",
      "tree": "96d6b307af969eade69f390a1af3ab623523b8a1",
      "parents": [
        "6076b6959ac6dd2f5f6c93d119b37899f70a30a8"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Sep 23 15:04:36 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 25 04:46:32 2020 +0000"
      },
      "message": "Refactor Escape-analysis to use visitors\n\nThe current escape-analysis is entirely built around finding a single\n\u0027does-escape\u0027 boolean (and a few ancillary booleans). This change adds\na new VisitEscapes function that allows one to more easily track which\ninstructions cause escapes and rewrites the other escape-analysis\nfunctions in terms of this VisitEscapes function.\n\nTest: ./test.py --host\nBug: 67037140\nChange-Id: Ie5ad7580544be21713d040c2943cae19ff5414d4\n"
    },
    {
      "commit": "370948e9b91bd1a63d548b434a5d155b794c47c9",
      "tree": "9b191c71fd7e37d6c4dea54376b8402679f68e8a",
      "parents": [
        "c616530e7290ad21693b9ec626c55811c1f2c473"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Wed Sep 23 08:07:25 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 24 11:54:30 2020 +0000"
      },
      "message": "X86: Implement VarHandle.compareAndExchange\n\nTest: ART_HEAP_POISONING\u003dtrue art/test.py --host -r -t 712-varhandle-invocation --32\nTest: ART_HEAP_POISONING\u003dfalse art/test.py --host -r -t 712-varhandle-invocation --32\nTest: ART_USE_READ_BARRIER\u003dtrue art/test.py --host -r -t 712-varhandle-invocation --32\nTest: ART_USE_READ_BARRIER\u003dfalse art/test.py --host -r -t 712-varhandle-invocation --32\nBug: 65872996\nChange-Id: I880ba6176050591e7398f95b92fc3f74f566b042\n"
    },
    {
      "commit": "8942b3a769729e9c1fb65f5b738317483124dc45",
      "tree": "e99c60039c9ef27d05a6d43269232953b72058be",
      "parents": [
        "0571d479f52781df0b4d94caaf704631122ba6e6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 20 10:42:15 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 24 10:51:06 2020 +0000"
      },
      "message": "Integer.divideUnsigned() intrinsic on ARM64.\n\nImplements the intrinsic for arm64; adds a comment\nfor a DCHECK() that prevented kNoOutputOverlap usage\nin intrinsics with slow paths.\n\nAuthor: Vladimir Marko.\nCommitter: Artem Serov.\n\nTest: Covered by 082-inline-execute.\nTest: testrunner.py --target --optimizing --64\nBug: 156736938\nChange-Id: Ie1e61c19afe6a899fd4152206e5dbf9ad013e602\n"
    },
    {
      "commit": "0571d479f52781df0b4d94caaf704631122ba6e6",
      "tree": "4d2ec8b223d592074bc380cd6dc40ddc063ecad9",
      "parents": [
        "5437e6fa3c5a1865e4146356d05e0a48764a5e3b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 22 10:14:39 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 24 10:08:56 2020 +0000"
      },
      "message": "LSE: Better elimination of array stores.\n\nThis replaces the workaround from\n    https://android-review.googlesource.com/1427546\nwith a proper fix that precisely tracks the needed stores.\n\nAlso fix spelling of Floyd-Warshall.\n\nTest: Additional tests in 530-checker-lse\nTest: testrunner.py --host --optimizing --interpreter --jvm -t 530\nTest: testrunner.py --host --optimizing\nBug: 168446366\nBug: 77906240\nChange-Id: I0cd7acb600ed210ac09d0006b28f045758c2c3ec\n"
    },
    {
      "commit": "25b9c7da44cd4652aa2ba26aa105509a6d035632",
      "tree": "b11d09d13e3d3c29d9782ab9b7f8521bc58747e8",
      "parents": [
        "6d69b52f331f788cbd1f21ffd5b87cb3b39965e4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 17 17:34:34 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 24 08:26:53 2020 +0000"
      },
      "message": "Don\u0027t store copied methods in BSS.\n\nOtherwise, we can end up in a state where the method on the stack is\nunrelated to the receiver.\n\nAlso fix a comment related to GetCanonicalMethod and\nStackVisitor::ValidateFrame.\n\nTest: 810-checker-invoke-super-default\nChange-Id: I3030e4af6059f7a4a7a1f046f2aabae8ce9057da\n"
    },
    {
      "commit": "6d69b52f331f788cbd1f21ffd5b87cb3b39965e4",
      "tree": "2bca1001afb4c3fc45cbb198765c51aa65e45c42",
      "parents": [
        "e407d97b0f25562110511d025058dcefdacca623"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 23 14:47:28 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 23 14:47:28 2020 +0100"
      },
      "message": "Move MethodLoadKind out of HInvokeStaticOrDirect.\n\nTo prepare for using it in HInvokeInterface. For consistency, also move\nCodePtrLocation.\n\nTest: test.py\nChange-Id: I84f973764275002e2adb71080ebc833b2bafb975\n"
    },
    {
      "commit": "9dfb1a9d642b9eb627895ef3364736fc839b4fe4",
      "tree": "776f1e58c13f620829bde196163ebab089506d1b",
      "parents": [
        "c372314fe478afe6aec5573c26bca378d686072d"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Tue Sep 22 13:27:18 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 23 08:05:32 2020 +0000"
      },
      "message": "X86: Implement VarHandle.getAndSet, getAndSetAcquire, getAndSetRelease\n\nThis commit implements VarHandle getAndSet variants. This implied adding\nxchgb and xchgw instructions and tests for them.\n\nAlso, all the varType checks were moved to GenerateVarHandleCommonChecks.\n\nTest: ART_HEAP_POISONING\u003dtrue art/test.py --host -r -t 712-varhandle-invocation --32\nTest: ART_HEAP_POISONING\u003dfalse art/test.py --host -r -t 712-varhandle-invocation --32\nTest: ART_USE_READ_BARRIER\u003dtrue art/test.py --host -r -t 712-varhandle-invocation --32\nTest: ART_USE_READ_BARRIER\u003dfalse art/test.py --host -r -t 712-varhandle-invocation --32\nTest: m test-art-host-gtest\nBug: 65872996\n\nChange-Id: I675f47e1dbb51a5ece42f20ad8ce552cfef63ffe\n"
    },
    {
      "commit": "331c8e371f2a3324070a4da966af8bf296b58bbb",
      "tree": "82ad282811d40e605bd7e0ad1c3be81ea3385e7f",
      "parents": [
        "49cde240141d84bc0d79ed2225aff5b1a7f8a65e"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Fri Sep 11 17:03:58 2020 -0700"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Tue Sep 22 16:39:51 2020 +0000"
      },
      "message": "Fix expected results for clang-r399163 update.\n\nllvm-objdump changed the format it uses for displaying assembly, so we\nmust also adapt all of the ART tests similarly, since they check for\nexact matching output. llvm-dwarfdump has similarly changed its outputs,\nso we adjust our expectations there too.\n\nBug: http://b/155835175\nTest: m test-art-host-gtest\nChange-Id: Iefdb7b98b5f87d9c7bbad1930a4393919d9b9b34\n"
    }
  ],
  "next": "49cde240141d84bc0d79ed2225aff5b1a7f8a65e"
}
