From 0f6af5e3b51a7f5905d09a98ec8d531541666015 Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Mon, 30 Jan 2023 14:29:11 +0000 Subject: Reland "Write classes in runtime-generated app image." This reverts commit 24b3d648ff6c2c200003f55ac63fc910d7bfd40f. Bug: 260557058 Reason for revert: - Encode class loader context in image, and check it at load time. - Set nterp entrypoint to methods that can. Test: test.py Test: atest com.android.bluetooth.opp.BluetoothOppObexServerSessionTest#onPut_withUnsupportedMimeTypeInHeader_returnsHttpBadRequest Change-Id: Ibf4a8604c4a226d1acc021103668e211446bb53c --- runtime/oat.cc | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'runtime/oat.cc') diff --git a/runtime/oat.cc b/runtime/oat.cc index 42bb7d4894..2c7a73f964 100644 --- a/runtime/oat.cc +++ b/runtime/oat.cc @@ -467,4 +467,27 @@ void OatHeader::Flatten(const SafeMap* key_value_store key_value_store_size_ = data_ptr - reinterpret_cast(&key_value_store_); } +const uint8_t* OatHeader::GetOatAddress(StubType type) const { + DCHECK_LE(type, StubType::kLast); + switch (type) { + // TODO: We could maybe clean this up if we stored them in an array in the oat header. + case StubType::kQuickGenericJNITrampoline: + return static_cast(GetQuickGenericJniTrampoline()); + case StubType::kJNIDlsymLookupTrampoline: + return static_cast(GetJniDlsymLookupTrampoline()); + case StubType::kJNIDlsymLookupCriticalTrampoline: + return static_cast(GetJniDlsymLookupCriticalTrampoline()); + case StubType::kQuickIMTConflictTrampoline: + return static_cast(GetQuickImtConflictTrampoline()); + case StubType::kQuickResolutionTrampoline: + return static_cast(GetQuickResolutionTrampoline()); + case StubType::kQuickToInterpreterBridge: + return static_cast(GetQuickToInterpreterBridge()); + case StubType::kNterpTrampoline: + return static_cast(GetNterpTrampoline()); + default: + UNREACHABLE(); + } +} + } // namespace art -- cgit v1.2.3-59-g8ed1b