diff options
| author | 2017-06-06 16:09:59 +0100 | |
|---|---|---|
| committer | 2017-08-10 18:17:47 +0100 | |
| commit | 2b03a1f24600c8c9558fb13d3f8bca1ef0f8ee40 (patch) | |
| tree | 4d5fb728acd7f98f8949c84364375a804ff0ba63 /compiler/driver/compiler_options.h | |
| parent | 461ec567f16039374dff35e2f3b808986c100249 (diff) | |
Instrument ARM64 generated code to check the Marking Register.
Generate run-time code in the Optimizing compiler checking that
the Marking Register's value matches `self.tls32_.is.gc_marking`
in debug mode (on target; and on host with JIT, or with AOT when
compiling the core image). If a check fails, abort.
Test: m test-art-target
Test: m test-art-target with tree built with ART_USE_READ_BARRIER=false
Test: ARM64 device boot test with libartd.
Bug: 37707231
Change-Id: Ie9b322b22b3d26654a06821e1db71dbda3c43061
Diffstat (limited to 'compiler/driver/compiler_options.h')
| -rw-r--r-- | compiler/driver/compiler_options.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/compiler/driver/compiler_options.h b/compiler/driver/compiler_options.h index b99263db0e..1e05c4e9aa 100644 --- a/compiler/driver/compiler_options.h +++ b/compiler/driver/compiler_options.h @@ -161,6 +161,9 @@ class CompilerOptions FINAL { return generate_mini_debug_info_; } + // Should run-time checks be emitted in debug mode? + bool EmitRunTimeChecksInDebugMode() const; + bool GetGenerateBuildId() const { return generate_build_id_; } @@ -177,10 +180,19 @@ class CompilerOptions FINAL { return implicit_suspend_checks_; } + // Are we compiling a boot image? bool IsBootImage() const { return boot_image_; } + // Are we compiling a core image (small boot image only used for ART testing)? + bool IsCoreImage() const { + // Ensure that `core_image_` => `boot_image_`. + DCHECK(!core_image_ || boot_image_); + return core_image_; + } + + // Are we compiling an app image? bool IsAppImage() const { return app_image_; } @@ -266,6 +278,7 @@ class CompilerOptions FINAL { const std::vector<const DexFile*>* no_inline_from_; bool boot_image_; + bool core_image_; bool app_image_; // When using a profile file only the top K% of the profiled samples will be compiled. double top_k_profile_threshold_; |