summaryrefslogtreecommitdiff
path: root/runtime/noop_compiler_callbacks.h
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/noop_compiler_callbacks.h')
-rw-r--r--runtime/noop_compiler_callbacks.h162
1 files changed, 162 insertions, 0 deletions
diff --git a/runtime/noop_compiler_callbacks.h b/runtime/noop_compiler_callbacks.h
index 557ed6ef6e..2a4a45af17 100644
--- a/runtime/noop_compiler_callbacks.h
+++ b/runtime/noop_compiler_callbacks.h
@@ -60,6 +60,168 @@ class NoopCompilerCallbacks final : public CompilerCallbacks {
return false;
}
void SetEnablePublicSdkChecks([[maybe_unused]] bool enabled) override {}
+
+ // Transaction-related virtual functions should not be called on `PermissiveClassLinker`.
+
+ bool TransactionWriteConstraint([[maybe_unused]] Thread* self,
+ [[maybe_unused]] ObjPtr<mirror::Object> obj) override
+ REQUIRES_SHARED(Locks::mutator_lock_) {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ bool TransactionWriteValueConstraint([[maybe_unused]] Thread* self,
+ [[maybe_unused]] ObjPtr<mirror::Object> value) override
+ REQUIRES_SHARED(Locks::mutator_lock_) {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ bool TransactionAllocationConstraint([[maybe_unused]] Thread* self,
+ [[maybe_unused]] ObjPtr<mirror::Class> klass) override
+ REQUIRES_SHARED(Locks::mutator_lock_) {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void RecordWriteFieldBoolean([[maybe_unused]] mirror::Object* obj,
+ [[maybe_unused]] MemberOffset field_offset,
+ [[maybe_unused]] uint8_t value,
+ [[maybe_unused]] bool is_volatile) override {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void RecordWriteFieldByte([[maybe_unused]] mirror::Object* obj,
+ [[maybe_unused]] MemberOffset field_offset,
+ [[maybe_unused]] int8_t value,
+ [[maybe_unused]] bool is_volatile) override {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void RecordWriteFieldChar([[maybe_unused]] mirror::Object* obj,
+ [[maybe_unused]] MemberOffset field_offset,
+ [[maybe_unused]] uint16_t value,
+ [[maybe_unused]] bool is_volatile) override {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void RecordWriteFieldShort([[maybe_unused]] mirror::Object* obj,
+ [[maybe_unused]] MemberOffset field_offset,
+ [[maybe_unused]] int16_t value,
+ [[maybe_unused]] bool is_volatile) override {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void RecordWriteField32([[maybe_unused]] mirror::Object* obj,
+ [[maybe_unused]] MemberOffset field_offset,
+ [[maybe_unused]] uint32_t value,
+ [[maybe_unused]] bool is_volatile) override {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void RecordWriteField64([[maybe_unused]] mirror::Object* obj,
+ [[maybe_unused]] MemberOffset field_offset,
+ [[maybe_unused]] uint64_t value,
+ [[maybe_unused]] bool is_volatile) override {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void RecordWriteFieldReference([[maybe_unused]] mirror::Object* obj,
+ [[maybe_unused]] MemberOffset field_offset,
+ [[maybe_unused]] ObjPtr<mirror::Object> value,
+ [[maybe_unused]] bool is_volatile) override
+ REQUIRES_SHARED(Locks::mutator_lock_) {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void RecordWriteArray([[maybe_unused]] mirror::Array* array,
+ [[maybe_unused]] size_t index,
+ [[maybe_unused]] uint64_t value) override
+ REQUIRES_SHARED(Locks::mutator_lock_) {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void RecordStrongStringInsertion([[maybe_unused]] ObjPtr<mirror::String> s) override
+ REQUIRES(Locks::intern_table_lock_) {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void RecordWeakStringInsertion([[maybe_unused]] ObjPtr<mirror::String> s) override
+ REQUIRES(Locks::intern_table_lock_) {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void RecordStrongStringRemoval([[maybe_unused]] ObjPtr<mirror::String> s) override
+ REQUIRES(Locks::intern_table_lock_) {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void RecordWeakStringRemoval([[maybe_unused]] ObjPtr<mirror::String> s) override
+ REQUIRES(Locks::intern_table_lock_) {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void RecordResolveString([[maybe_unused]] ObjPtr<mirror::DexCache> dex_cache,
+ [[maybe_unused]] dex::StringIndex string_idx) override
+ REQUIRES_SHARED(Locks::mutator_lock_) {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void RecordResolveMethodType([[maybe_unused]] ObjPtr<mirror::DexCache> dex_cache,
+ [[maybe_unused]] dex::ProtoIndex proto_idx) override
+ REQUIRES_SHARED(Locks::mutator_lock_) {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void ThrowTransactionAbortError([[maybe_unused]] Thread* self) override
+ REQUIRES_SHARED(Locks::mutator_lock_) {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void AbortTransactionF([[maybe_unused]] Thread* self,
+ [[maybe_unused]] const char* fmt, ...) override
+ __attribute__((__format__(__printf__, 3, 4)))
+ REQUIRES_SHARED(Locks::mutator_lock_) {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void AbortTransactionV([[maybe_unused]] Thread* self,
+ [[maybe_unused]] const char* fmt,
+ [[maybe_unused]] va_list args) override
+ REQUIRES_SHARED(Locks::mutator_lock_) {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ bool IsTransactionAborted() const override {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
+
+ void VisitTransactionRoots([[maybe_unused]] RootVisitor* visitor) override {
+ // Nothing to do for `PermissiveClassLinker`, only `AotClassLinker` handles transactions.
+ }
+
+ const void* GetTransactionalInterpreter() override {
+ LOG(FATAL) << "UNREACHABLE";
+ UNREACHABLE();
+ }
};
DISALLOW_COPY_AND_ASSIGN(NoopCompilerCallbacks);