diff options
Diffstat (limited to 'runtime')
| -rw-r--r-- | runtime/art_field.h | 4 | ||||
| -rw-r--r-- | runtime/art_method-inl.h | 16 | ||||
| -rw-r--r-- | runtime/art_method.cc | 4 | ||||
| -rw-r--r-- | runtime/art_method.h | 2 | ||||
| -rw-r--r-- | runtime/class_linker.cc | 8 | ||||
| -rw-r--r-- | runtime/hidden_api.cc | 19 | ||||
| -rw-r--r-- | runtime/hidden_api.h | 14 | ||||
| -rw-r--r-- | runtime/hidden_api_test.cc | 32 |
8 files changed, 49 insertions, 50 deletions
diff --git a/runtime/art_field.h b/runtime/art_field.h index 5afd000b05..dc7f985b91 100644 --- a/runtime/art_field.h +++ b/runtime/art_field.h @@ -180,8 +180,8 @@ class ArtField final { return (GetAccessFlags() & kAccVolatile) != 0; } - HiddenApiAccessFlags::ApiList GetHiddenApiAccessFlags() REQUIRES_SHARED(Locks::mutator_lock_) { - return HiddenApiAccessFlags::DecodeFromRuntime(GetAccessFlags()); + hiddenapi::ApiList GetHiddenApiAccessFlags() REQUIRES_SHARED(Locks::mutator_lock_) { + return hiddenapi::DecodeFromRuntime(GetAccessFlags()); } // Returns an instance field with this offset in the given class or null if not found. diff --git a/runtime/art_method-inl.h b/runtime/art_method-inl.h index f693524a6c..e9c17eeab5 100644 --- a/runtime/art_method-inl.h +++ b/runtime/art_method-inl.h @@ -367,7 +367,7 @@ inline bool ArtMethod::HasSingleImplementation() { return (GetAccessFlags() & kAccSingleImplementation) != 0; } -inline HiddenApiAccessFlags::ApiList ArtMethod::GetHiddenApiAccessFlags() +inline hiddenapi::ApiList ArtMethod::GetHiddenApiAccessFlags() REQUIRES_SHARED(Locks::mutator_lock_) { if (UNLIKELY(IsIntrinsic())) { switch (static_cast<Intrinsics>(GetIntrinsic())) { @@ -407,7 +407,7 @@ inline HiddenApiAccessFlags::ApiList ArtMethod::GetHiddenApiAccessFlags() // Note that the DCHECK currently won't fail if the dex methods are // whitelisted, e.g. in the core image (b/77733081). As a result, we // might print warnings but we won't change the semantics. - return HiddenApiAccessFlags::kLightGreylist; + return hiddenapi::ApiList::kLightGreylist; case Intrinsics::kStringNewStringFromBytes: case Intrinsics::kStringNewStringFromChars: case Intrinsics::kStringNewStringFromString: @@ -417,7 +417,7 @@ inline HiddenApiAccessFlags::ApiList ArtMethod::GetHiddenApiAccessFlags() case Intrinsics::kMemoryPokeIntNative: case Intrinsics::kMemoryPokeLongNative: case Intrinsics::kMemoryPokeShortNative: - return HiddenApiAccessFlags::kDarkGreylist; + return hiddenapi::ApiList::kDarkGreylist; case Intrinsics::kVarHandleFullFence: case Intrinsics::kVarHandleAcquireFence: case Intrinsics::kVarHandleReleaseFence: @@ -460,13 +460,13 @@ inline HiddenApiAccessFlags::ApiList ArtMethod::GetHiddenApiAccessFlags() // whitelisted, e.g. in the core image (b/77733081). Given that they are // exclusively VarHandle intrinsics, they should not be used outside // tests that do not enable hidden API checks. - return HiddenApiAccessFlags::kBlacklist; + return hiddenapi::ApiList::kBlacklist; default: // Remaining intrinsics are public API. We DCHECK that in SetIntrinsic(). - return HiddenApiAccessFlags::kWhitelist; + return hiddenapi::ApiList::kWhitelist; } } else { - return HiddenApiAccessFlags::DecodeFromRuntime(GetAccessFlags()); + return hiddenapi::DecodeFromRuntime(GetAccessFlags()); } } @@ -492,7 +492,7 @@ inline void ArtMethod::SetIntrinsic(uint32_t intrinsic) { bool is_default_conflict = IsDefaultConflicting(); bool is_compilable = IsCompilable(); bool must_count_locks = MustCountLocks(); - HiddenApiAccessFlags::ApiList hidden_api_flags = GetHiddenApiAccessFlags(); + hiddenapi::ApiList hidden_api_flags = GetHiddenApiAccessFlags(); SetAccessFlags(new_value); DCHECK_EQ(java_flags, (GetAccessFlags() & kAccJavaFlagsMask)); DCHECK_EQ(is_constructor, IsConstructor()); @@ -512,7 +512,7 @@ inline void ArtMethod::SetIntrinsic(uint32_t intrinsic) { // these because (a) warnings on greylist do not change semantics, and // (b) only VarHandle intrinsics are blacklisted at the moment and they // should not be used outside tests with disabled API checks. - if (hidden_api_flags != HiddenApiAccessFlags::kWhitelist) { + if (hidden_api_flags != hiddenapi::ApiList::kWhitelist) { DCHECK_EQ(hidden_api_flags, GetHiddenApiAccessFlags()) << PrettyMethod(); } } else { diff --git a/runtime/art_method.cc b/runtime/art_method.cc index 4a19b108ab..9bf31edd52 100644 --- a/runtime/art_method.cc +++ b/runtime/art_method.cc @@ -688,13 +688,13 @@ void ArtMethod::SetNotIntrinsic() { } // Query the hidden API access flags of the intrinsic. - HiddenApiAccessFlags::ApiList intrinsic_api_list = GetHiddenApiAccessFlags(); + hiddenapi::ApiList intrinsic_api_list = GetHiddenApiAccessFlags(); // Clear intrinsic-related access flags. ClearAccessFlags(kAccIntrinsic | kAccIntrinsicBits); // Re-apply hidden API access flags now that the method is not an intrinsic. - SetAccessFlags(HiddenApiAccessFlags::EncodeForRuntime(GetAccessFlags(), intrinsic_api_list)); + SetAccessFlags(hiddenapi::EncodeForRuntime(GetAccessFlags(), intrinsic_api_list)); DCHECK_EQ(GetHiddenApiAccessFlags(), intrinsic_api_list); } diff --git a/runtime/art_method.h b/runtime/art_method.h index 18ddcc05c5..e56f3fd6bc 100644 --- a/runtime/art_method.h +++ b/runtime/art_method.h @@ -326,7 +326,7 @@ class ArtMethod final { AddAccessFlags(kAccMustCountLocks); } - HiddenApiAccessFlags::ApiList GetHiddenApiAccessFlags() REQUIRES_SHARED(Locks::mutator_lock_); + hiddenapi::ApiList GetHiddenApiAccessFlags() REQUIRES_SHARED(Locks::mutator_lock_); // Returns true if this method could be overridden by a default method. bool IsOverridableByDefaultMethod() REQUIRES_SHARED(Locks::mutator_lock_); diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc index 0247e4e076..151f7b8565 100644 --- a/runtime/class_linker.cc +++ b/runtime/class_linker.cc @@ -3395,8 +3395,8 @@ void ClassLinker::LoadField(const ClassAccessor::Field& field, // also set its runtime hidden API access flags. uint32_t access_flags = field.GetAccessFlags(); if (klass->IsBootStrapClassLoaded()) { - access_flags = HiddenApiAccessFlags::EncodeForRuntime( - access_flags, static_cast<HiddenApiAccessFlags::ApiList>(field.GetHiddenapiFlags())); + access_flags = hiddenapi::EncodeForRuntime( + access_flags, static_cast<hiddenapi::ApiList>(field.GetHiddenapiFlags())); } dst->SetAccessFlags(access_flags); } @@ -3418,8 +3418,8 @@ void ClassLinker::LoadMethod(const DexFile& dex_file, // also set its runtime hidden API access flags. uint32_t access_flags = method.GetAccessFlags(); if (klass->IsBootStrapClassLoaded()) { - access_flags = HiddenApiAccessFlags::EncodeForRuntime( - access_flags, static_cast<HiddenApiAccessFlags::ApiList>(method.GetHiddenapiFlags())); + access_flags = hiddenapi::EncodeForRuntime( + access_flags, static_cast<hiddenapi::ApiList>(method.GetHiddenapiFlags())); } if (UNLIKELY(strcmp("finalize", method_name) == 0)) { diff --git a/runtime/hidden_api.cc b/runtime/hidden_api.cc index 5729800bb0..f3552765c5 100644 --- a/runtime/hidden_api.cc +++ b/runtime/hidden_api.cc @@ -60,14 +60,14 @@ static inline std::ostream& operator<<(std::ostream& os, AccessMethod value) { return os; } -static constexpr bool EnumsEqual(EnforcementPolicy policy, HiddenApiAccessFlags::ApiList apiList) { +static constexpr bool EnumsEqual(EnforcementPolicy policy, hiddenapi::ApiList apiList) { return static_cast<int>(policy) == static_cast<int>(apiList); } // GetMemberAction-related static_asserts. static_assert( - EnumsEqual(EnforcementPolicy::kDarkGreyAndBlackList, HiddenApiAccessFlags::kDarkGreylist) && - EnumsEqual(EnforcementPolicy::kBlacklistOnly, HiddenApiAccessFlags::kBlacklist), + EnumsEqual(EnforcementPolicy::kDarkGreyAndBlackList, hiddenapi::ApiList::kDarkGreylist) && + EnumsEqual(EnforcementPolicy::kBlacklistOnly, hiddenapi::ApiList::kBlacklist), "Mismatch between EnforcementPolicy and ApiList enums"); static_assert( EnforcementPolicy::kJustWarn < EnforcementPolicy::kDarkGreyAndBlackList && @@ -133,8 +133,7 @@ void MemberSignature::Dump(std::ostream& os) const { } } -void MemberSignature::WarnAboutAccess(AccessMethod access_method, - HiddenApiAccessFlags::ApiList list) { +void MemberSignature::WarnAboutAccess(AccessMethod access_method, hiddenapi::ApiList list) { LOG(WARNING) << "Accessing hidden " << (type_ == kField ? "field " : "method ") << Dumpable<MemberSignature>(*this) << " (" << list << ", " << access_method << ")"; } @@ -200,14 +199,14 @@ template<typename T> static ALWAYS_INLINE void MaybeWhitelistMember(Runtime* runtime, T* member) REQUIRES_SHARED(Locks::mutator_lock_) { if (CanUpdateMemberAccessFlags(member) && runtime->ShouldDedupeHiddenApiWarnings()) { - member->SetAccessFlags(HiddenApiAccessFlags::EncodeForRuntime( - member->GetAccessFlags(), HiddenApiAccessFlags::kWhitelist)); + member->SetAccessFlags(hiddenapi::EncodeForRuntime( + member->GetAccessFlags(), hiddenapi::ApiList::kWhitelist)); } } template<typename T> Action GetMemberActionImpl(T* member, - HiddenApiAccessFlags::ApiList api_list, + hiddenapi::ApiList api_list, Action action, AccessMethod access_method) { DCHECK_NE(action, kAllow); @@ -276,11 +275,11 @@ Action GetMemberActionImpl(T* member, // Need to instantiate this. template Action GetMemberActionImpl<ArtField>(ArtField* member, - HiddenApiAccessFlags::ApiList api_list, + hiddenapi::ApiList api_list, Action action, AccessMethod access_method); template Action GetMemberActionImpl<ArtMethod>(ArtMethod* member, - HiddenApiAccessFlags::ApiList api_list, + hiddenapi::ApiList api_list, Action action, AccessMethod access_method); } // namespace detail diff --git a/runtime/hidden_api.h b/runtime/hidden_api.h index c16e7f347e..57f1a599cf 100644 --- a/runtime/hidden_api.h +++ b/runtime/hidden_api.h @@ -68,8 +68,8 @@ enum AccessContextFlags { kAccessDenied = 1 << 1, }; -inline Action GetActionFromAccessFlags(HiddenApiAccessFlags::ApiList api_list) { - if (api_list == HiddenApiAccessFlags::kWhitelist) { +inline Action GetActionFromAccessFlags(ApiList api_list) { + if (api_list == ApiList::kWhitelist) { return kAllow; } @@ -85,9 +85,9 @@ inline Action GetActionFromAccessFlags(HiddenApiAccessFlags::ApiList api_list) { } DCHECK(policy >= EnforcementPolicy::kDarkGreyAndBlackList); // The logic below relies on equality of values in the enums EnforcementPolicy and - // HiddenApiAccessFlags::ApiList, and their ordering. Assertions are in hidden_api.cc. + // ApiList, and their ordering. Assertions are in hidden_api.cc. if (static_cast<int>(policy) > static_cast<int>(api_list)) { - return api_list == HiddenApiAccessFlags::kDarkGreylist + return api_list == ApiList::kDarkGreylist ? kAllowButWarnAndToast : kAllowButWarn; } else { @@ -144,14 +144,14 @@ class MemberSignature { bool IsExempted(const std::vector<std::string>& exemptions); - void WarnAboutAccess(AccessMethod access_method, HiddenApiAccessFlags::ApiList list); + void WarnAboutAccess(AccessMethod access_method, ApiList list); void LogAccessToEventLog(AccessMethod access_method, Action action_taken); }; template<typename T> Action GetMemberActionImpl(T* member, - HiddenApiAccessFlags::ApiList api_list, + ApiList api_list, Action action, AccessMethod access_method) REQUIRES_SHARED(Locks::mutator_lock_); @@ -208,7 +208,7 @@ inline Action GetMemberAction(T* member, // cannot change Java semantics. We should, however, decode the access flags // once and use it throughout this function, otherwise we may get inconsistent // results, e.g. print whitelist warnings (b/78327881). - HiddenApiAccessFlags::ApiList api_list = member->GetHiddenApiAccessFlags(); + ApiList api_list = member->GetHiddenApiAccessFlags(); Action action = GetActionFromAccessFlags(member->GetHiddenApiAccessFlags()); if (action == kAllow) { diff --git a/runtime/hidden_api_test.cc b/runtime/hidden_api_test.cc index 4c7efe666f..1727af016c 100644 --- a/runtime/hidden_api_test.cc +++ b/runtime/hidden_api_test.cc @@ -89,39 +89,39 @@ class HiddenApiTest : public CommonRuntimeTest { TEST_F(HiddenApiTest, CheckGetActionFromRuntimeFlags) { runtime_->SetHiddenApiEnforcementPolicy(hiddenapi::EnforcementPolicy::kNoChecks); - ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kWhitelist), hiddenapi::kAllow); - ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kLightGreylist), hiddenapi::kAllow); - ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kDarkGreylist), hiddenapi::kAllow); - ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kBlacklist), hiddenapi::kAllow); + ASSERT_EQ(GetActionFromAccessFlags(hiddenapi::ApiList::kWhitelist), hiddenapi::kAllow); + ASSERT_EQ(GetActionFromAccessFlags(hiddenapi::ApiList::kLightGreylist), hiddenapi::kAllow); + ASSERT_EQ(GetActionFromAccessFlags(hiddenapi::ApiList::kDarkGreylist), hiddenapi::kAllow); + ASSERT_EQ(GetActionFromAccessFlags(hiddenapi::ApiList::kBlacklist), hiddenapi::kAllow); runtime_->SetHiddenApiEnforcementPolicy(hiddenapi::EnforcementPolicy::kJustWarn); - ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kWhitelist), + ASSERT_EQ(GetActionFromAccessFlags(hiddenapi::ApiList::kWhitelist), hiddenapi::kAllow); - ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kLightGreylist), + ASSERT_EQ(GetActionFromAccessFlags(hiddenapi::ApiList::kLightGreylist), hiddenapi::kAllowButWarn); - ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kDarkGreylist), + ASSERT_EQ(GetActionFromAccessFlags(hiddenapi::ApiList::kDarkGreylist), hiddenapi::kAllowButWarn); - ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kBlacklist), + ASSERT_EQ(GetActionFromAccessFlags(hiddenapi::ApiList::kBlacklist), hiddenapi::kAllowButWarn); runtime_->SetHiddenApiEnforcementPolicy(hiddenapi::EnforcementPolicy::kDarkGreyAndBlackList); - ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kWhitelist), + ASSERT_EQ(GetActionFromAccessFlags(hiddenapi::ApiList::kWhitelist), hiddenapi::kAllow); - ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kLightGreylist), + ASSERT_EQ(GetActionFromAccessFlags(hiddenapi::ApiList::kLightGreylist), hiddenapi::kAllowButWarn); - ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kDarkGreylist), + ASSERT_EQ(GetActionFromAccessFlags(hiddenapi::ApiList::kDarkGreylist), hiddenapi::kDeny); - ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kBlacklist), + ASSERT_EQ(GetActionFromAccessFlags(hiddenapi::ApiList::kBlacklist), hiddenapi::kDeny); runtime_->SetHiddenApiEnforcementPolicy(hiddenapi::EnforcementPolicy::kBlacklistOnly); - ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kWhitelist), + ASSERT_EQ(GetActionFromAccessFlags(hiddenapi::ApiList::kWhitelist), hiddenapi::kAllow); - ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kLightGreylist), + ASSERT_EQ(GetActionFromAccessFlags(hiddenapi::ApiList::kLightGreylist), hiddenapi::kAllowButWarn); - ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kDarkGreylist), + ASSERT_EQ(GetActionFromAccessFlags(hiddenapi::ApiList::kDarkGreylist), hiddenapi::kAllowButWarnAndToast); - ASSERT_EQ(GetActionFromAccessFlags(HiddenApiAccessFlags::kBlacklist), + ASSERT_EQ(GetActionFromAccessFlags(hiddenapi::ApiList::kBlacklist), hiddenapi::kDeny); } |