123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- // Copyright 2020 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef BASE_ALLOCATOR_PARTITION_ALLOC_FEATURES_H_
- #define BASE_ALLOCATOR_PARTITION_ALLOC_FEATURES_H_
- #include "base/allocator/buildflags.h"
- #include "base/allocator/partition_allocator/partition_alloc_config.h"
- #include "base/base_export.h"
- #include "base/compiler_specific.h"
- #include "base/metrics/field_trial_params.h"
- namespace base {
- struct Feature;
- namespace features {
- // See /docs/dangling_ptr.md
- //
- // Usage:
- // --enable-features=PartitionAllocDanglingPtr:mode/crash
- // --enable-features=PartitionAllocDanglingPtr:mode/log_signature
- extern const BASE_EXPORT Feature kPartitionAllocDanglingPtr;
- enum class DanglingPtrMode {
- // Crash immediately after detecting a dangling raw_ptr.
- kCrash, // (default)
- // Log the signature of every occurrences without crashing. It is used by
- // bots.
- // Format "[DanglingSignature]\t<1>\t<2>"
- // 1. The function who freed the memory while it was still referenced.
- // 2. The function who released the raw_ptr reference.
- kLogSignature,
- // Note: This will be extended with a single shot DumpWithoutCrashing.
- };
- extern const BASE_EXPORT base::FeatureParam<DanglingPtrMode>
- kDanglingPtrModeParam;
- #if defined(PA_ALLOW_PCSCAN)
- extern const BASE_EXPORT Feature kPartitionAllocPCScan;
- #endif // defined(PA_ALLOW_PCSCAN)
- #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
- extern const BASE_EXPORT Feature kPartitionAllocPCScanBrowserOnly;
- extern const BASE_EXPORT Feature kPartitionAllocPCScanRendererOnly;
- extern const BASE_EXPORT Feature kPartitionAllocBackupRefPtrControl;
- extern const BASE_EXPORT Feature kPartitionAllocLargeThreadCacheSize;
- extern const BASE_EXPORT Feature kPartitionAllocLargeEmptySlotSpanRing;
- #endif // BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC)
- enum class BackupRefPtrEnabledProcesses {
- // BRP enabled only in the browser process.
- kBrowserOnly,
- // BRP enabled only in the browser and renderer processes.
- kBrowserAndRenderer,
- // BRP enabled in all processes, except renderer.
- kNonRenderer,
- // BRP enabled in all processes.
- kAllProcesses,
- };
- enum class BackupRefPtrMode {
- // BRP is disabled across all partitions. Equivalent to the Finch flag being
- // disabled.
- kDisabled,
- // BRP is enabled in the main partition, as well as certain Renderer-only
- // partitions (if enabled in Renderer at all).
- // This entails splitting the main partition.
- kEnabled,
- // Same as kEnabled but without zapping quarantined objects.
- kEnabledWithoutZapping,
- // BRP is disabled, but the main partition is split out, as if BRP was enabled
- // in the "previous slot" mode.
- kDisabledButSplitPartitions2Way,
- // BRP is disabled, but the main partition *and* aligned partition are split
- // out, as if BRP was enabled in the "before allocation" mode.
- kDisabledButSplitPartitions3Way,
- };
- extern const BASE_EXPORT Feature kPartitionAllocBackupRefPtr;
- extern const BASE_EXPORT base::FeatureParam<BackupRefPtrEnabledProcesses>
- kBackupRefPtrEnabledProcessesParam;
- extern const BASE_EXPORT base::FeatureParam<BackupRefPtrMode>
- kBackupRefPtrModeParam;
- extern const BASE_EXPORT base::FeatureParam<bool>
- kBackupRefPtrAsanEnableDereferenceCheckParam;
- extern const BASE_EXPORT base::FeatureParam<bool>
- kBackupRefPtrAsanEnableExtractionCheckParam;
- extern const BASE_EXPORT base::FeatureParam<bool>
- kBackupRefPtrAsanEnableInstantiationCheckParam;
- extern const BASE_EXPORT Feature kPartitionAllocPCScanMUAwareScheduler;
- extern const BASE_EXPORT Feature kPartitionAllocPCScanStackScanning;
- extern const BASE_EXPORT Feature kPartitionAllocDCScan;
- extern const BASE_EXPORT Feature kPartitionAllocPCScanImmediateFreeing;
- extern const BASE_EXPORT Feature kPartitionAllocPCScanEagerClearing;
- extern const BASE_EXPORT Feature kPartitionAllocUseAlternateDistribution;
- extern const BASE_EXPORT Feature kPartitionAllocSortActiveSlotSpans;
- } // namespace features
- } // namespace base
- #endif // BASE_ALLOCATOR_PARTITION_ALLOC_FEATURES_H_
|