From 68e126cad26fa5f1fead5de9a05c85a8557ae60d Mon Sep 17 00:00:00 2001 From: John McCall Date: Wed, 12 Dec 2018 12:05:33 -0500 Subject: [PATCH] Revert "Future-proof the ARM64 ABI by not reserving the entire top byte." This reverts commit 478d2b2552ee322212de9b12935869899dad3a06. This patch does not work with our current assumptions about BridgeObject. --- stdlib/public/SwiftShims/System.h | 5 ++--- test/IRGen/bridge_object_arm64.sil | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/stdlib/public/SwiftShims/System.h b/stdlib/public/SwiftShims/System.h index e7d4df2d5f13c..a8fae1f724f96 100644 --- a/stdlib/public/SwiftShims/System.h +++ b/stdlib/public/SwiftShims/System.h @@ -136,10 +136,9 @@ /// Darwin reserves the low 4GB of address space. #define SWIFT_ABI_DARWIN_ARM64_LEAST_VALID_POINTER 0x100000000ULL -// TBI guarantees the top byte of pointers is unused, but ARMv8.5-A -// claims the bottom four bits of that for memory tagging. +// TBI guarantees the top byte of pointers is unused. // Heap objects are eight-byte aligned. -#define SWIFT_ABI_ARM64_SWIFT_SPARE_BITS_MASK 0xF000000000000007ULL +#define SWIFT_ABI_ARM64_SWIFT_SPARE_BITS_MASK 0xFF00000000000007ULL // Objective-C reserves just the high bit for tagged pointers. #define SWIFT_ABI_ARM64_OBJC_RESERVED_BITS_MASK 0x8000000000000000ULL diff --git a/test/IRGen/bridge_object_arm64.sil b/test/IRGen/bridge_object_arm64.sil index 3642d702a0ada..053cee1e8ae07 100644 --- a/test/IRGen/bridge_object_arm64.sil +++ b/test/IRGen/bridge_object_arm64.sil @@ -35,8 +35,8 @@ entry(%c : $C, %w : $Builtin.Word): // CHECK: [[TAGGED_RESULT:%.*]] = bitcast [[BRIDGE]] %0 to [[C:%objc_object\*]] // CHECK: br label %tagged-cont // CHECK: not-tagged-pointer: -// -- 0x0fff_ffff_ffff_fff8 -// CHECK: [[MASKED_BITS:%.*]] = and i64 [[BOBITS]], 1152921504606846968 +// -- 0x00ff_ffff_ffff_fff8 +// CHECK: [[MASKED_BITS:%.*]] = and i64 [[BOBITS]], 72057594037927928 // CHECK: [[MASKED_RESULT:%.*]] = inttoptr i64 [[MASKED_BITS]] to [[C]] // CHECK: br label %tagged-cont // CHECK: tagged-cont: