From 2b03a1f24600c8c9558fb13d3f8bca1ef0f8ee40 Mon Sep 17 00:00:00 2001 From: Roland Levillain Date: Tue, 6 Jun 2017 16:09:59 +0100 Subject: 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 --- compiler/utils/jni_macro_assembler.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'compiler/utils/jni_macro_assembler.h') diff --git a/compiler/utils/jni_macro_assembler.h b/compiler/utils/jni_macro_assembler.h index 59a1a48e20..a8ca1119e5 100644 --- a/compiler/utils/jni_macro_assembler.h +++ b/compiler/utils/jni_macro_assembler.h @@ -216,8 +216,15 @@ class JNIMacroAssembler : public DeletableArenaObject { */ virtual DebugFrameOpCodeWriterForAssembler& cfi() = 0; + void SetEmitRunTimeChecksInDebugMode(bool value) { + emit_run_time_checks_in_debug_mode_ = value; + } + protected: - explicit JNIMacroAssembler() {} + JNIMacroAssembler() {} + + // Should run-time checks be emitted in debug mode? + bool emit_run_time_checks_in_debug_mode_ = false; }; // A "Label" class used with the JNIMacroAssembler -- cgit v1.2.3-59-g8ed1b