diff options
| author | 2018-09-03 09:54:09 +0100 | |
|---|---|---|
| committer | 2018-09-26 13:08:36 +0100 | |
| commit | 5ad79d85d77a42456728897ac3e2e7d4530e618e (patch) | |
| tree | ff70d1f12904c718f2f3f721d3846f4305eae53d /runtime/noop_compiler_callbacks.h | |
| parent | 5d7015cd64085068b1685d44339b4b705ef3f065 (diff) | |
Load boot image at a random address.
And perform in-place fixup of references and pointers. This
dirties all the boot image memory loaded by zygote, so there
shall be no "shared clean" boot image pages anymore, these
shall change to "shared dirty". However, as we're using a
profile-based boot image, these pages are presumably used
often enough and unlikely to be paged out anyway.
The in-place fixup takes around 60-120ms when starting the
zygote on aosp_taimen-userdebug. However, an experiment with
MAP_POPULATE pushes the raw fixup down to around 12-15ms.
If we used compressed images, this would be the actual time
for fixup as the data would be already present in memory.
If we keep using uncompressed images, we shall need to tune
the loading with MAP_POPULATE or MADV_WILLNEED.
The -Xrelocate/-Xno-relocate option is re-interpreted from
"use patchoat if needed" to "relocate the boot image in
memory if possible". We do not allow relocation for the AOT
compilation to speed up dex2oat execution and help producing
deterministic output.
The patchoat tool shall be removed in a follow-up CL.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing --relocate --no-relocate
Test: Pixel 2 XL boots.
Test: m test-art-target-gtest
Test: testrunner.py --target --optimizing --relocate --no-relocate
Bug: 77856493
Change-Id: I2db1fabefb5d4b85c798cd51e04c78cb232bff4a
Diffstat (limited to 'runtime/noop_compiler_callbacks.h')
| -rw-r--r-- | runtime/noop_compiler_callbacks.h | 5 |
1 files changed, 0 insertions, 5 deletions
diff --git a/runtime/noop_compiler_callbacks.h b/runtime/noop_compiler_callbacks.h index 496a6f3d09..439f4856a6 100644 --- a/runtime/noop_compiler_callbacks.h +++ b/runtime/noop_compiler_callbacks.h @@ -31,11 +31,6 @@ class NoopCompilerCallbacks final : public CompilerCallbacks { void ClassRejected(ClassReference ref ATTRIBUTE_UNUSED) override {} - // This is only used by compilers which need to be able to run without relocation even when it - // would normally be enabled. For example the patchoat executable, and dex2oat --image, both need - // to disable the relocation since both deal with writing out the images directly. - bool IsRelocationPossible() override { return false; } - verifier::VerifierDeps* GetVerifierDeps() const override { return nullptr; } private: |