Remove workaround for Chromium's lack of thread_local. Chromium is allowing thread_local, so this is no longer necessary. Bug: chromium:1416710 PiperOrigin-RevId: 513534394
diff --git a/build/source_list.bzl b/build/source_list.bzl index e8b4451..e5aba7e 100644 --- a/build/source_list.bzl +++ b/build/source_list.bzl
@@ -41,7 +41,6 @@ "common/platform/api/quiche_stack_trace.h", "common/platform/api/quiche_testvalue.h", "common/platform/api/quiche_thread.h", - "common/platform/api/quiche_thread_local.h", "common/platform/api/quiche_time_utils.h", "common/platform/api/quiche_url_utils.h", "common/print_elements.h", @@ -1396,7 +1395,6 @@ "common/platform/default/quiche_platform_impl/quiche_server_stats_impl.h", "common/platform/default/quiche_platform_impl/quiche_stack_trace_impl.h", "common/platform/default/quiche_platform_impl/quiche_testvalue_impl.h", - "common/platform/default/quiche_platform_impl/quiche_thread_local_impl.h", "common/platform/default/quiche_platform_impl/quiche_time_utils_impl.h", "common/platform/default/quiche_platform_impl/quiche_udp_socket_platform_impl.h", "common/platform/default/quiche_platform_impl/quiche_url_utils_impl.h",
diff --git a/build/source_list.gni b/build/source_list.gni index da3d5f0..cf1f119 100644 --- a/build/source_list.gni +++ b/build/source_list.gni
@@ -41,7 +41,6 @@ "src/quiche/common/platform/api/quiche_stack_trace.h", "src/quiche/common/platform/api/quiche_testvalue.h", "src/quiche/common/platform/api/quiche_thread.h", - "src/quiche/common/platform/api/quiche_thread_local.h", "src/quiche/common/platform/api/quiche_time_utils.h", "src/quiche/common/platform/api/quiche_url_utils.h", "src/quiche/common/print_elements.h", @@ -1396,7 +1395,6 @@ "src/quiche/common/platform/default/quiche_platform_impl/quiche_server_stats_impl.h", "src/quiche/common/platform/default/quiche_platform_impl/quiche_stack_trace_impl.h", "src/quiche/common/platform/default/quiche_platform_impl/quiche_testvalue_impl.h", - "src/quiche/common/platform/default/quiche_platform_impl/quiche_thread_local_impl.h", "src/quiche/common/platform/default/quiche_platform_impl/quiche_time_utils_impl.h", "src/quiche/common/platform/default/quiche_platform_impl/quiche_udp_socket_platform_impl.h", "src/quiche/common/platform/default/quiche_platform_impl/quiche_url_utils_impl.h",
diff --git a/build/source_list.json b/build/source_list.json index 04319c6..563c80f 100644 --- a/build/source_list.json +++ b/build/source_list.json
@@ -40,7 +40,6 @@ "quiche/common/platform/api/quiche_stack_trace.h", "quiche/common/platform/api/quiche_testvalue.h", "quiche/common/platform/api/quiche_thread.h", - "quiche/common/platform/api/quiche_thread_local.h", "quiche/common/platform/api/quiche_time_utils.h", "quiche/common/platform/api/quiche_url_utils.h", "quiche/common/print_elements.h", @@ -1395,7 +1394,6 @@ "quiche/common/platform/default/quiche_platform_impl/quiche_server_stats_impl.h", "quiche/common/platform/default/quiche_platform_impl/quiche_stack_trace_impl.h", "quiche/common/platform/default/quiche_platform_impl/quiche_testvalue_impl.h", - "quiche/common/platform/default/quiche_platform_impl/quiche_thread_local_impl.h", "quiche/common/platform/default/quiche_platform_impl/quiche_time_utils_impl.h", "quiche/common/platform/default/quiche_platform_impl/quiche_udp_socket_platform_impl.h", "quiche/common/platform/default/quiche_platform_impl/quiche_url_utils_impl.h"
diff --git a/quiche/common/platform/api/quiche_thread_local.h b/quiche/common/platform/api/quiche_thread_local.h deleted file mode 100644 index c2d58e1..0000000 --- a/quiche/common/platform/api/quiche_thread_local.h +++ /dev/null
@@ -1,27 +0,0 @@ -// Copyright 2021 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 QUICHE_COMMON_PLATFORM_API_QUICHE_THREAD_LOCAL_H_ -#define QUICHE_COMMON_PLATFORM_API_QUICHE_THREAD_LOCAL_H_ - -#include "quiche_platform_impl/quiche_thread_local_impl.h" - -// Define a thread local |type*| with |name|. Conceptually, this is a -// -// static thread_local type* name = nullptr; -// -// It is wrapped in a macro because the thread_local keyword is banned from -// Chromium. -#define DEFINE_QUICHE_THREAD_LOCAL_POINTER(name, type) \ - DEFINE_QUICHE_THREAD_LOCAL_POINTER_IMPL(name, type) - -// Get the value of |name| for the current thread. -#define GET_QUICHE_THREAD_LOCAL_POINTER(name) \ - GET_QUICHE_THREAD_LOCAL_POINTER_IMPL(name) - -// Set the |value| of |name| for the current thread. -#define SET_QUICHE_THREAD_LOCAL_POINTER(name, value) \ - SET_QUICHE_THREAD_LOCAL_POINTER_IMPL(name, value) - -#endif // QUICHE_COMMON_PLATFORM_API_QUICHE_THREAD_LOCAL_H_
diff --git a/quiche/common/platform/default/quiche_platform_impl/quiche_thread_local_impl.h b/quiche/common/platform/default/quiche_platform_impl/quiche_thread_local_impl.h deleted file mode 100644 index 5ebea4c..0000000 --- a/quiche/common/platform/default/quiche_platform_impl/quiche_thread_local_impl.h +++ /dev/null
@@ -1,24 +0,0 @@ -// Copyright 2021 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 QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_THREAD_LOCAL_IMPL_H_ -#define QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_THREAD_LOCAL_IMPL_H_ - -#define DEFINE_QUICHE_THREAD_LOCAL_POINTER_IMPL(name, type) \ - struct QuicheThreadLocalPointer_##name { \ - static type** Instance() { \ - static thread_local type* instance = nullptr; \ - return &instance; \ - } \ - static type* Get() { return *Instance(); } \ - static void Set(type* ptr) { *Instance() = ptr; } \ - } - -#define GET_QUICHE_THREAD_LOCAL_POINTER_IMPL(name) \ - QuicheThreadLocalPointer_##name::Get() - -#define SET_QUICHE_THREAD_LOCAL_POINTER_IMPL(name, value) \ - QuicheThreadLocalPointer_##name::Set(value) - -#endif // QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_THREAD_LOCAL_IMPL_H_
diff --git a/quiche/quic/core/quic_connection_context.cc b/quiche/quic/core/quic_connection_context.cc index 01381ed..28e9d8e 100644 --- a/quiche/quic/core/quic_connection_context.cc +++ b/quiche/quic/core/quic_connection_context.cc
@@ -4,12 +4,12 @@ #include "quiche/quic/core/quic_connection_context.h" -#include "quiche/common/platform/api/quiche_thread_local.h" +#include "absl/base/attributes.h" #include "quiche/common/quiche_text_utils.h" namespace quic { namespace { -DEFINE_QUICHE_THREAD_LOCAL_POINTER(CurrentContext, QuicConnectionContext); +ABSL_CONST_INIT thread_local QuicConnectionContext* current_context = nullptr; } // namespace std::string QuicConnectionProcessPacketContext::DebugString() const { @@ -25,13 +25,13 @@ // static QuicConnectionContext* QuicConnectionContext::Current() { - return GET_QUICHE_THREAD_LOCAL_POINTER(CurrentContext); + return current_context; } QuicConnectionContextSwitcher::QuicConnectionContextSwitcher( QuicConnectionContext* new_context) : old_context_(QuicConnectionContext::Current()) { - SET_QUICHE_THREAD_LOCAL_POINTER(CurrentContext, new_context); + current_context = new_context; if (new_context && new_context->tracer) { new_context->tracer->Activate(); } @@ -42,7 +42,7 @@ if (current && current->tracer) { current->tracer->Deactivate(); } - SET_QUICHE_THREAD_LOCAL_POINTER(CurrentContext, old_context_); + current_context = old_context_; } } // namespace quic