diff options
Diffstat (limited to 'runtime/noop_compiler_callbacks.h')
-rw-r--r-- | runtime/noop_compiler_callbacks.h | 162 |
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); |