|
|
|
#
|
|
|
|
# Copyright 2017 The Abseil Authors.
|
|
|
|
#
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
# you may not use this file except in compliance with the License.
|
|
|
|
# You may obtain a copy of the License at
|
|
|
|
#
|
|
|
|
# https://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
#
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
# See the License for the specific language governing permissions and
|
|
|
|
# limitations under the License.
|
|
|
|
|
|
|
|
load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
|
|
|
|
load(
|
|
|
|
"//absl:copts/configure_copts.bzl",
|
|
|
|
"ABSL_DEFAULT_COPTS",
|
|
|
|
"ABSL_TEST_COPTS",
|
|
|
|
)
|
|
|
|
|
|
|
|
package(
|
|
|
|
default_visibility = ["//visibility:public"],
|
|
|
|
features = ["parse_headers"],
|
|
|
|
)
|
|
|
|
|
|
|
|
licenses(["notice"])
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "strings",
|
|
|
|
srcs = [
|
|
|
|
"ascii.cc",
|
|
|
|
"charconv.cc",
|
|
|
|
"escaping.cc",
|
|
|
|
"internal/charconv_bigint.cc",
|
|
|
|
"internal/charconv_bigint.h",
|
|
|
|
"internal/charconv_parse.cc",
|
|
|
|
"internal/charconv_parse.h",
|
|
|
|
"internal/memutil.cc",
|
|
|
|
"internal/memutil.h",
|
|
|
|
"internal/stl_type_traits.h",
|
|
|
|
"internal/str_join_internal.h",
|
|
|
|
"internal/str_split_internal.h",
|
|
|
|
"match.cc",
|
|
|
|
"numbers.cc",
|
|
|
|
"str_cat.cc",
|
|
|
|
"str_replace.cc",
|
|
|
|
"str_split.cc",
|
|
|
|
"string_view.cc",
|
|
|
|
"substitute.cc",
|
|
|
|
],
|
|
|
|
hdrs = [
|
|
|
|
"ascii.h",
|
|
|
|
"charconv.h",
|
|
|
|
"escaping.h",
|
|
|
|
"internal/string_constant.h",
|
|
|
|
"match.h",
|
|
|
|
"numbers.h",
|
|
|
|
"str_cat.h",
|
|
|
|
"str_join.h",
|
|
|
|
"str_replace.h",
|
|
|
|
"str_split.h",
|
|
|
|
"string_view.h",
|
|
|
|
"strip.h",
|
|
|
|
"substitute.h",
|
|
|
|
],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
deps = [
|
|
|
|
":internal",
|
|
|
|
"//absl/base",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:endian",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"//absl/base:throw_delegate",
|
|
|
|
"//absl/memory",
|
|
|
|
"//absl/meta:type_traits",
|
|
|
|
"//absl/numeric:bits",
|
|
|
|
"//absl/numeric:int128",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "internal",
|
|
|
|
srcs = [
|
|
|
|
"internal/escaping.cc",
|
|
|
|
"internal/ostringstream.cc",
|
|
|
|
"internal/utf8.cc",
|
|
|
|
],
|
|
|
|
hdrs = [
|
|
|
|
"internal/char_map.h",
|
|
|
|
"internal/escaping.h",
|
|
|
|
"internal/ostringstream.h",
|
|
|
|
"internal/resize_uninitialized.h",
|
|
|
|
"internal/utf8.h",
|
|
|
|
],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
deps = [
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:endian",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"//absl/meta:type_traits",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "match_test",
|
|
|
|
size = "small",
|
|
|
|
srcs = ["match_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "escaping_test",
|
|
|
|
size = "small",
|
|
|
|
srcs = [
|
|
|
|
"escaping_test.cc",
|
|
|
|
"internal/escaping_test_common.h",
|
|
|
|
],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":cord",
|
|
|
|
":strings",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/container:fixed_array",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "escaping_benchmark",
|
|
|
|
srcs = [
|
|
|
|
"escaping_benchmark.cc",
|
|
|
|
"internal/escaping_test_common.h",
|
|
|
|
],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
tags = ["benchmark"],
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"@com_github_google_benchmark//:benchmark_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "ascii_test",
|
|
|
|
size = "small",
|
|
|
|
srcs = ["ascii_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "ascii_benchmark",
|
|
|
|
srcs = ["ascii_benchmark.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
tags = ["benchmark"],
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"@com_github_google_benchmark//:benchmark_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "memutil_benchmark",
|
|
|
|
srcs = [
|
|
|
|
"internal/memutil.h",
|
|
|
|
"internal/memutil_benchmark.cc",
|
|
|
|
],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
tags = ["benchmark"],
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"@com_github_google_benchmark//:benchmark_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "memutil_test",
|
|
|
|
size = "small",
|
|
|
|
srcs = [
|
|
|
|
"internal/memutil.h",
|
|
|
|
"internal/memutil_test.cc",
|
|
|
|
],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "utf8_test",
|
|
|
|
size = "small",
|
|
|
|
srcs = [
|
|
|
|
"internal/utf8_test.cc",
|
|
|
|
],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":internal",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "string_constant_test",
|
|
|
|
size = "small",
|
|
|
|
srcs = ["internal/string_constant_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/meta:type_traits",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "string_view_benchmark",
|
|
|
|
srcs = ["string_view_benchmark.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
tags = ["benchmark"],
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"@com_github_google_benchmark//:benchmark_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "string_view_test",
|
|
|
|
size = "small",
|
|
|
|
srcs = ["string_view_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:dynamic_annotations",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "cord_internal",
|
|
|
|
srcs = [
|
|
|
|
"internal/cord_internal.cc",
|
|
|
|
"internal/cord_rep_ring.cc",
|
|
|
|
],
|
|
|
|
hdrs = [
|
|
|
|
"internal/cord_internal.h",
|
|
|
|
"internal/cord_rep_flat.h",
|
|
|
|
"internal/cord_rep_ring.h",
|
|
|
|
"internal/cord_rep_ring_reader.h",
|
|
|
|
],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
visibility = [
|
|
|
|
"//visibility:private",
|
|
|
|
],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/base:base_internal",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:endian",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"//absl/base:throw_delegate",
|
|
|
|
"//absl/container:compressed_tuple",
|
|
|
|
"//absl/container:inlined_vector",
|
|
|
|
"//absl/container:layout",
|
|
|
|
"//absl/meta:type_traits",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "cordz_update_tracker",
|
|
|
|
hdrs = ["internal/cordz_update_tracker.h"],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = ["//absl/base:config"],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "cordz_update_tracker_test",
|
|
|
|
srcs = ["internal/cordz_update_tracker_test.cc"],
|
|
|
|
deps = [
|
|
|
|
":cordz_update_tracker",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/synchronization",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "cord",
|
|
|
|
srcs = [
|
|
|
|
"cord.cc",
|
|
|
|
],
|
|
|
|
hdrs = [
|
|
|
|
"cord.h",
|
|
|
|
],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
deps = [
|
|
|
|
":cord_internal",
|
|
|
|
":cordz_functions",
|
|
|
|
":cordz_info",
|
|
|
|
":cordz_statistics",
|
|
|
|
":cordz_update_scope",
|
|
|
|
":cordz_update_tracker",
|
|
|
|
":internal",
|
|
|
|
":str_format",
|
|
|
|
":strings",
|
|
|
|
"//absl/base",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:endian",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"//absl/container:fixed_array",
|
|
|
|
"//absl/container:inlined_vector",
|
|
|
|
"//absl/functional:function_ref",
|
|
|
|
"//absl/meta:type_traits",
|
|
|
|
"//absl/types:optional",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "cordz_handle",
|
|
|
|
srcs = ["internal/cordz_handle.cc"],
|
|
|
|
hdrs = ["internal/cordz_handle.h"],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
deps = [
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"//absl/synchronization",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "cordz_info",
|
|
|
|
srcs = ["internal/cordz_info.cc"],
|
|
|
|
hdrs = ["internal/cordz_info.h"],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
deps = [
|
|
|
|
":cord_internal",
|
|
|
|
":cordz_functions",
|
|
|
|
":cordz_handle",
|
|
|
|
":cordz_statistics",
|
Export of internal Abseil changes
--
ac1df60490c9583e475e22de7adfc40023196fbf by Martijn Vels <mvels@google.com>:
Change Cord constructor(string_view) to explicit make_tree and Cordz tracking
This CL changes the ctor to use an easier to maintain model where Cord code explicitly invokes Cordz update or new / tree logic, which avoids the ambiguity of the 'branched' InlineRep::set_tree code. This removes the need to equip InlineRep with 'MethodIdentifier' or other necessary call info, and also is a cleaner model: InlineRep is carrying too much code now that should plainly sit in Cord, especially with all internal abstractions having moved to InlineData.
See child CL(s) for desired state
PiperOrigin-RevId: 369433619
--
b665af7f586e6c679a8b27d4f78d5a1d2b596058 by Abseil Team <absl-team@google.com>:
Rename the 'Compare' template type to 'LessThan', as the passed-in function is expected to act like operator<. It is worth avoiding confusion with std::compare, which returns an int (-1/0/1), as due to implicit casting this can lead to hard-to-spot bugs.
PiperOrigin-RevId: 369391118
--
c3c775269cad0f4982ec63f3616dd78bb9e52dca by Martijn Vels <mvels@google.com>:
Integrate CordzUpdateTracker into CordzInfo
PiperOrigin-RevId: 369348824
--
771d81ed357496c117179e1daec76eba5155932d by Martijn Vels <mvels@google.com>:
Replace mutex() with Lock() / Unlock() function
Mini design future tracking of CordzInfo sampled cords: CordzInfo holds a CordRep* reference without a reference count. Cord is responsible for synchronizing updates for sampled cords such that the CordRep* contained in CordzInfo is at all times valid. This is done by scoping Lock() and Unlock() calls around the code modifying the code of a sampled cord. For example (using the future CL CordzUpdateScope()):
CordzInfo* cordz_info = get_cordz_info();
CordzUpdateScope scope(cordz_info, CordzUpdateTracker::kRemovePrefix);
CordRep* rep = RemovePrefixImpl(root);
set_tree(rep);
if (cordz_info) {
cordz_info->SetCordRep(rep);
}
On CordzInfo::Unlock(), if the internal rep is null, the cord is no longer sampled, and CordzInfo will be deleted. Thus any update resulting in the Cord being inlined will automatically no longer be sampled.
PiperOrigin-RevId: 369338802
--
5563c12df04a1e965a03b50bdd032739c55c0706 by Martijn Vels <mvels@google.com>:
Add UpdateTracker to CordzStatistics
PiperOrigin-RevId: 369318178
--
6b4d8463722a3e55a3e8f6cb3741a41055e7f83e by Martijn Vels <mvels@google.com>:
Add kClear, kConstructor* and kUnknown values and fix typo
PiperOrigin-RevId: 369297163
--
041adcbc929789d6d53371a8236840fc350e1eeb by Derek Mauro <dmauro@google.com>:
Switch from malloc to operator new in pool_urbg.cc
so it can only fail by throwing/aborting
PiperOrigin-RevId: 369274087
--
5d97a5f43e3f2d02d0a5bbe586d93b5751812981 by Benjamin Barenblat <bbaren@google.com>:
Correct Thumb function bound computation in the symbolizer
On 32-bit ARM, all functions are aligned to multiples of two bytes, and
the lowest-order bit in a function’s address is ignored by the CPU when
computing branch targets. That bit is still present in instructions and
ELF symbol tables, though; it’s repurposed to indicate whether the
function contains ARM or Thumb code. If the symbolizer doesn’t ignore
that bit, it will believe Thumb functions have boundaries that are off
by one byte, so instruct the symbolizer to null out the lowest-order bit
after retrieving it from the symbol table.
PiperOrigin-RevId: 369254082
--
462bb307c6cc332c1e2c3adb5f0cad51804bf937 by Derek Mauro <dmauro@google.com>:
Add a check for malloc failure in pool_urbg.cc
GitHub #940
PiperOrigin-RevId: 369238100
GitOrigin-RevId: ac1df60490c9583e475e22de7adfc40023196fbf
Change-Id: Ic6ec91c62cd3a0031f6a75a43a83da959ece2d25
4 years ago
|
|
|
":cordz_update_tracker",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/debugging:stacktrace",
|
|
|
|
"//absl/synchronization",
|
|
|
|
"//absl/types:span",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "cordz_update_scope",
|
|
|
|
hdrs = ["internal/cordz_update_scope.h"],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
deps = [
|
|
|
|
":cord_internal",
|
|
|
|
":cordz_info",
|
|
|
|
":cordz_update_tracker",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "cordz_update_scope_test",
|
|
|
|
srcs = ["internal/cordz_update_scope_test.cc"],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
deps = [
|
|
|
|
":cord_internal",
|
|
|
|
":cordz_info",
|
|
|
|
":cordz_test_helpers",
|
|
|
|
":cordz_update_scope",
|
|
|
|
":cordz_update_tracker",
|
|
|
|
"//absl/base:config",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "cordz_sample_token",
|
|
|
|
srcs = ["internal/cordz_sample_token.cc"],
|
|
|
|
hdrs = ["internal/cordz_sample_token.h"],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
deps = [
|
|
|
|
":cordz_handle",
|
|
|
|
":cordz_info",
|
|
|
|
"//absl/base:config",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "cordz_functions",
|
|
|
|
srcs = ["internal/cordz_functions.cc"],
|
|
|
|
hdrs = ["internal/cordz_functions.h"],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
deps = [
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:exponential_biased",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "cordz_statistics",
|
|
|
|
hdrs = ["internal/cordz_statistics.h"],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
deps = [
|
Export of internal Abseil changes
--
ac1df60490c9583e475e22de7adfc40023196fbf by Martijn Vels <mvels@google.com>:
Change Cord constructor(string_view) to explicit make_tree and Cordz tracking
This CL changes the ctor to use an easier to maintain model where Cord code explicitly invokes Cordz update or new / tree logic, which avoids the ambiguity of the 'branched' InlineRep::set_tree code. This removes the need to equip InlineRep with 'MethodIdentifier' or other necessary call info, and also is a cleaner model: InlineRep is carrying too much code now that should plainly sit in Cord, especially with all internal abstractions having moved to InlineData.
See child CL(s) for desired state
PiperOrigin-RevId: 369433619
--
b665af7f586e6c679a8b27d4f78d5a1d2b596058 by Abseil Team <absl-team@google.com>:
Rename the 'Compare' template type to 'LessThan', as the passed-in function is expected to act like operator<. It is worth avoiding confusion with std::compare, which returns an int (-1/0/1), as due to implicit casting this can lead to hard-to-spot bugs.
PiperOrigin-RevId: 369391118
--
c3c775269cad0f4982ec63f3616dd78bb9e52dca by Martijn Vels <mvels@google.com>:
Integrate CordzUpdateTracker into CordzInfo
PiperOrigin-RevId: 369348824
--
771d81ed357496c117179e1daec76eba5155932d by Martijn Vels <mvels@google.com>:
Replace mutex() with Lock() / Unlock() function
Mini design future tracking of CordzInfo sampled cords: CordzInfo holds a CordRep* reference without a reference count. Cord is responsible for synchronizing updates for sampled cords such that the CordRep* contained in CordzInfo is at all times valid. This is done by scoping Lock() and Unlock() calls around the code modifying the code of a sampled cord. For example (using the future CL CordzUpdateScope()):
CordzInfo* cordz_info = get_cordz_info();
CordzUpdateScope scope(cordz_info, CordzUpdateTracker::kRemovePrefix);
CordRep* rep = RemovePrefixImpl(root);
set_tree(rep);
if (cordz_info) {
cordz_info->SetCordRep(rep);
}
On CordzInfo::Unlock(), if the internal rep is null, the cord is no longer sampled, and CordzInfo will be deleted. Thus any update resulting in the Cord being inlined will automatically no longer be sampled.
PiperOrigin-RevId: 369338802
--
5563c12df04a1e965a03b50bdd032739c55c0706 by Martijn Vels <mvels@google.com>:
Add UpdateTracker to CordzStatistics
PiperOrigin-RevId: 369318178
--
6b4d8463722a3e55a3e8f6cb3741a41055e7f83e by Martijn Vels <mvels@google.com>:
Add kClear, kConstructor* and kUnknown values and fix typo
PiperOrigin-RevId: 369297163
--
041adcbc929789d6d53371a8236840fc350e1eeb by Derek Mauro <dmauro@google.com>:
Switch from malloc to operator new in pool_urbg.cc
so it can only fail by throwing/aborting
PiperOrigin-RevId: 369274087
--
5d97a5f43e3f2d02d0a5bbe586d93b5751812981 by Benjamin Barenblat <bbaren@google.com>:
Correct Thumb function bound computation in the symbolizer
On 32-bit ARM, all functions are aligned to multiples of two bytes, and
the lowest-order bit in a function’s address is ignored by the CPU when
computing branch targets. That bit is still present in instructions and
ELF symbol tables, though; it’s repurposed to indicate whether the
function contains ARM or Thumb code. If the symbolizer doesn’t ignore
that bit, it will believe Thumb functions have boundaries that are off
by one byte, so instruct the symbolizer to null out the lowest-order bit
after retrieving it from the symbol table.
PiperOrigin-RevId: 369254082
--
462bb307c6cc332c1e2c3adb5f0cad51804bf937 by Derek Mauro <dmauro@google.com>:
Add a check for malloc failure in pool_urbg.cc
GitHub #940
PiperOrigin-RevId: 369238100
GitOrigin-RevId: ac1df60490c9583e475e22de7adfc40023196fbf
Change-Id: Ic6ec91c62cd3a0031f6a75a43a83da959ece2d25
4 years ago
|
|
|
":cordz_update_tracker",
|
|
|
|
"//absl/base:config",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "cordz_functions_test",
|
|
|
|
srcs = [
|
|
|
|
"internal/cordz_functions_test.cc",
|
|
|
|
],
|
|
|
|
deps = [
|
|
|
|
":cordz_functions",
|
|
|
|
":cordz_test_helpers",
|
|
|
|
"//absl/base:config",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "cordz_handle_test",
|
|
|
|
srcs = [
|
|
|
|
"internal/cordz_handle_test.cc",
|
|
|
|
],
|
|
|
|
deps = [
|
|
|
|
":cordz_handle",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/memory",
|
|
|
|
"//absl/random",
|
|
|
|
"//absl/random:distributions",
|
|
|
|
"//absl/synchronization",
|
|
|
|
"//absl/synchronization:thread_pool",
|
|
|
|
"//absl/time",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "cordz_info_test",
|
|
|
|
srcs = [
|
|
|
|
"internal/cordz_info_test.cc",
|
|
|
|
],
|
|
|
|
deps = [
|
|
|
|
":cord_internal",
|
|
|
|
":cordz_handle",
|
|
|
|
":cordz_info",
|
Export of internal Abseil changes
--
ac1df60490c9583e475e22de7adfc40023196fbf by Martijn Vels <mvels@google.com>:
Change Cord constructor(string_view) to explicit make_tree and Cordz tracking
This CL changes the ctor to use an easier to maintain model where Cord code explicitly invokes Cordz update or new / tree logic, which avoids the ambiguity of the 'branched' InlineRep::set_tree code. This removes the need to equip InlineRep with 'MethodIdentifier' or other necessary call info, and also is a cleaner model: InlineRep is carrying too much code now that should plainly sit in Cord, especially with all internal abstractions having moved to InlineData.
See child CL(s) for desired state
PiperOrigin-RevId: 369433619
--
b665af7f586e6c679a8b27d4f78d5a1d2b596058 by Abseil Team <absl-team@google.com>:
Rename the 'Compare' template type to 'LessThan', as the passed-in function is expected to act like operator<. It is worth avoiding confusion with std::compare, which returns an int (-1/0/1), as due to implicit casting this can lead to hard-to-spot bugs.
PiperOrigin-RevId: 369391118
--
c3c775269cad0f4982ec63f3616dd78bb9e52dca by Martijn Vels <mvels@google.com>:
Integrate CordzUpdateTracker into CordzInfo
PiperOrigin-RevId: 369348824
--
771d81ed357496c117179e1daec76eba5155932d by Martijn Vels <mvels@google.com>:
Replace mutex() with Lock() / Unlock() function
Mini design future tracking of CordzInfo sampled cords: CordzInfo holds a CordRep* reference without a reference count. Cord is responsible for synchronizing updates for sampled cords such that the CordRep* contained in CordzInfo is at all times valid. This is done by scoping Lock() and Unlock() calls around the code modifying the code of a sampled cord. For example (using the future CL CordzUpdateScope()):
CordzInfo* cordz_info = get_cordz_info();
CordzUpdateScope scope(cordz_info, CordzUpdateTracker::kRemovePrefix);
CordRep* rep = RemovePrefixImpl(root);
set_tree(rep);
if (cordz_info) {
cordz_info->SetCordRep(rep);
}
On CordzInfo::Unlock(), if the internal rep is null, the cord is no longer sampled, and CordzInfo will be deleted. Thus any update resulting in the Cord being inlined will automatically no longer be sampled.
PiperOrigin-RevId: 369338802
--
5563c12df04a1e965a03b50bdd032739c55c0706 by Martijn Vels <mvels@google.com>:
Add UpdateTracker to CordzStatistics
PiperOrigin-RevId: 369318178
--
6b4d8463722a3e55a3e8f6cb3741a41055e7f83e by Martijn Vels <mvels@google.com>:
Add kClear, kConstructor* and kUnknown values and fix typo
PiperOrigin-RevId: 369297163
--
041adcbc929789d6d53371a8236840fc350e1eeb by Derek Mauro <dmauro@google.com>:
Switch from malloc to operator new in pool_urbg.cc
so it can only fail by throwing/aborting
PiperOrigin-RevId: 369274087
--
5d97a5f43e3f2d02d0a5bbe586d93b5751812981 by Benjamin Barenblat <bbaren@google.com>:
Correct Thumb function bound computation in the symbolizer
On 32-bit ARM, all functions are aligned to multiples of two bytes, and
the lowest-order bit in a function’s address is ignored by the CPU when
computing branch targets. That bit is still present in instructions and
ELF symbol tables, though; it’s repurposed to indicate whether the
function contains ARM or Thumb code. If the symbolizer doesn’t ignore
that bit, it will believe Thumb functions have boundaries that are off
by one byte, so instruct the symbolizer to null out the lowest-order bit
after retrieving it from the symbol table.
PiperOrigin-RevId: 369254082
--
462bb307c6cc332c1e2c3adb5f0cad51804bf937 by Derek Mauro <dmauro@google.com>:
Add a check for malloc failure in pool_urbg.cc
GitHub #940
PiperOrigin-RevId: 369238100
GitOrigin-RevId: ac1df60490c9583e475e22de7adfc40023196fbf
Change-Id: Ic6ec91c62cd3a0031f6a75a43a83da959ece2d25
4 years ago
|
|
|
":cordz_statistics",
|
|
|
|
":cordz_test_helpers",
|
Export of internal Abseil changes
--
ac1df60490c9583e475e22de7adfc40023196fbf by Martijn Vels <mvels@google.com>:
Change Cord constructor(string_view) to explicit make_tree and Cordz tracking
This CL changes the ctor to use an easier to maintain model where Cord code explicitly invokes Cordz update or new / tree logic, which avoids the ambiguity of the 'branched' InlineRep::set_tree code. This removes the need to equip InlineRep with 'MethodIdentifier' or other necessary call info, and also is a cleaner model: InlineRep is carrying too much code now that should plainly sit in Cord, especially with all internal abstractions having moved to InlineData.
See child CL(s) for desired state
PiperOrigin-RevId: 369433619
--
b665af7f586e6c679a8b27d4f78d5a1d2b596058 by Abseil Team <absl-team@google.com>:
Rename the 'Compare' template type to 'LessThan', as the passed-in function is expected to act like operator<. It is worth avoiding confusion with std::compare, which returns an int (-1/0/1), as due to implicit casting this can lead to hard-to-spot bugs.
PiperOrigin-RevId: 369391118
--
c3c775269cad0f4982ec63f3616dd78bb9e52dca by Martijn Vels <mvels@google.com>:
Integrate CordzUpdateTracker into CordzInfo
PiperOrigin-RevId: 369348824
--
771d81ed357496c117179e1daec76eba5155932d by Martijn Vels <mvels@google.com>:
Replace mutex() with Lock() / Unlock() function
Mini design future tracking of CordzInfo sampled cords: CordzInfo holds a CordRep* reference without a reference count. Cord is responsible for synchronizing updates for sampled cords such that the CordRep* contained in CordzInfo is at all times valid. This is done by scoping Lock() and Unlock() calls around the code modifying the code of a sampled cord. For example (using the future CL CordzUpdateScope()):
CordzInfo* cordz_info = get_cordz_info();
CordzUpdateScope scope(cordz_info, CordzUpdateTracker::kRemovePrefix);
CordRep* rep = RemovePrefixImpl(root);
set_tree(rep);
if (cordz_info) {
cordz_info->SetCordRep(rep);
}
On CordzInfo::Unlock(), if the internal rep is null, the cord is no longer sampled, and CordzInfo will be deleted. Thus any update resulting in the Cord being inlined will automatically no longer be sampled.
PiperOrigin-RevId: 369338802
--
5563c12df04a1e965a03b50bdd032739c55c0706 by Martijn Vels <mvels@google.com>:
Add UpdateTracker to CordzStatistics
PiperOrigin-RevId: 369318178
--
6b4d8463722a3e55a3e8f6cb3741a41055e7f83e by Martijn Vels <mvels@google.com>:
Add kClear, kConstructor* and kUnknown values and fix typo
PiperOrigin-RevId: 369297163
--
041adcbc929789d6d53371a8236840fc350e1eeb by Derek Mauro <dmauro@google.com>:
Switch from malloc to operator new in pool_urbg.cc
so it can only fail by throwing/aborting
PiperOrigin-RevId: 369274087
--
5d97a5f43e3f2d02d0a5bbe586d93b5751812981 by Benjamin Barenblat <bbaren@google.com>:
Correct Thumb function bound computation in the symbolizer
On 32-bit ARM, all functions are aligned to multiples of two bytes, and
the lowest-order bit in a function’s address is ignored by the CPU when
computing branch targets. That bit is still present in instructions and
ELF symbol tables, though; it’s repurposed to indicate whether the
function contains ARM or Thumb code. If the symbolizer doesn’t ignore
that bit, it will believe Thumb functions have boundaries that are off
by one byte, so instruct the symbolizer to null out the lowest-order bit
after retrieving it from the symbol table.
PiperOrigin-RevId: 369254082
--
462bb307c6cc332c1e2c3adb5f0cad51804bf937 by Derek Mauro <dmauro@google.com>:
Add a check for malloc failure in pool_urbg.cc
GitHub #940
PiperOrigin-RevId: 369238100
GitOrigin-RevId: ac1df60490c9583e475e22de7adfc40023196fbf
Change-Id: Ic6ec91c62cd3a0031f6a75a43a83da959ece2d25
4 years ago
|
|
|
":cordz_update_tracker",
|
|
|
|
":strings",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/debugging:stacktrace",
|
|
|
|
"//absl/debugging:symbolize",
|
|
|
|
"//absl/types:span",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "cordz_sample_token_test",
|
|
|
|
srcs = [
|
|
|
|
"internal/cordz_sample_token_test.cc",
|
|
|
|
],
|
|
|
|
deps = [
|
|
|
|
":cord_internal",
|
|
|
|
":cordz_handle",
|
|
|
|
":cordz_info",
|
|
|
|
":cordz_sample_token",
|
|
|
|
":cordz_test_helpers",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/memory",
|
|
|
|
"//absl/random",
|
|
|
|
"//absl/synchronization",
|
|
|
|
"//absl/synchronization:thread_pool",
|
|
|
|
"//absl/time",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "cord_test_helpers",
|
|
|
|
testonly = 1,
|
|
|
|
hdrs = [
|
|
|
|
"cord_test_helpers.h",
|
|
|
|
],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
deps = [
|
|
|
|
":cord",
|
|
|
|
":cord_internal",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "cordz_test_helpers",
|
|
|
|
testonly = 1,
|
|
|
|
hdrs = ["cordz_test_helpers.h"],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
deps = [
|
|
|
|
":cord",
|
|
|
|
":cord_internal",
|
|
|
|
":cordz_info",
|
|
|
|
":cordz_sample_token",
|
|
|
|
":cordz_statistics",
|
|
|
|
":cordz_update_tracker",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"@com_google_googletest//:gtest",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "cord_test",
|
|
|
|
size = "medium",
|
|
|
|
srcs = ["cord_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":cord",
|
|
|
|
":cord_test_helpers",
|
|
|
|
":cordz_functions",
|
|
|
|
":cordz_test_helpers",
|
|
|
|
":str_format",
|
|
|
|
":strings",
|
|
|
|
"//absl/base",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:endian",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"//absl/container:fixed_array",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "cordz_test",
|
|
|
|
size = "medium",
|
|
|
|
srcs = ["cordz_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
tags = [
|
|
|
|
"benchmark",
|
|
|
|
"no_test_android_arm",
|
|
|
|
"no_test_android_arm64",
|
|
|
|
"no_test_android_x86",
|
|
|
|
"no_test_darwin_x86_64",
|
|
|
|
"no_test_ios_x86_64",
|
|
|
|
"no_test_loonix",
|
|
|
|
"no_test_msvc_x64",
|
|
|
|
],
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":cord",
|
|
|
|
":cordz_functions",
|
|
|
|
":cordz_info",
|
|
|
|
":cordz_sample_token",
|
|
|
|
":cordz_statistics",
|
|
|
|
":cordz_test_helpers",
|
|
|
|
":cordz_update_tracker",
|
|
|
|
":strings",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "cord_ring_test",
|
|
|
|
size = "medium",
|
|
|
|
srcs = ["cord_ring_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":cord_internal",
|
|
|
|
":strings",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"//absl/debugging:leak_check",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "cord_ring_reader_test",
|
|
|
|
size = "medium",
|
|
|
|
srcs = ["cord_ring_reader_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":cord_internal",
|
|
|
|
":strings",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/debugging:leak_check",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "substitute_test",
|
|
|
|
size = "small",
|
|
|
|
srcs = ["substitute_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "str_replace_benchmark",
|
|
|
|
srcs = ["str_replace_benchmark.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
tags = ["benchmark"],
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"@com_github_google_benchmark//:benchmark_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "str_replace_test",
|
|
|
|
size = "small",
|
|
|
|
srcs = ["str_replace_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "str_split_test",
|
|
|
|
srcs = ["str_split_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/base:dynamic_annotations",
|
|
|
|
"//absl/container:flat_hash_map",
|
|
|
|
"//absl/container:node_hash_map",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "str_split_benchmark",
|
|
|
|
srcs = ["str_split_benchmark.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
tags = ["benchmark"],
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"@com_github_google_benchmark//:benchmark_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "ostringstream_test",
|
|
|
|
size = "small",
|
|
|
|
srcs = ["internal/ostringstream_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":internal",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "ostringstream_benchmark",
|
|
|
|
srcs = ["internal/ostringstream_benchmark.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
tags = ["benchmark"],
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":internal",
|
|
|
|
"@com_github_google_benchmark//:benchmark_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "resize_uninitialized_test",
|
|
|
|
size = "small",
|
|
|
|
srcs = [
|
|
|
|
"internal/resize_uninitialized.h",
|
|
|
|
"internal/resize_uninitialized_test.cc",
|
|
|
|
],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/meta:type_traits",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "str_join_test",
|
|
|
|
size = "small",
|
|
|
|
srcs = ["str_join_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/memory",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "str_join_benchmark",
|
|
|
|
srcs = ["str_join_benchmark.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
tags = ["benchmark"],
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"@com_github_google_benchmark//:benchmark_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "str_cat_test",
|
|
|
|
size = "small",
|
|
|
|
srcs = ["str_cat_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "str_cat_benchmark",
|
|
|
|
srcs = ["str_cat_benchmark.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
tags = ["benchmark"],
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"@com_github_google_benchmark//:benchmark_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "numbers_test",
|
|
|
|
size = "medium",
|
|
|
|
srcs = [
|
|
|
|
"internal/numbers_test_common.h",
|
|
|
|
"numbers_test.cc",
|
|
|
|
],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":internal",
|
|
|
|
":pow10_helper",
|
|
|
|
":strings",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"//absl/random",
|
|
|
|
"//absl/random:distributions",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "numbers_benchmark",
|
|
|
|
srcs = ["numbers_benchmark.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
tags = ["benchmark"],
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"//absl/random",
|
|
|
|
"//absl/random:distributions",
|
|
|
|
"@com_github_google_benchmark//:benchmark_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "strip_test",
|
|
|
|
size = "small",
|
|
|
|
srcs = ["strip_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "char_map_test",
|
|
|
|
srcs = ["internal/char_map_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
deps = [
|
|
|
|
":internal",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "char_map_benchmark",
|
|
|
|
srcs = ["internal/char_map_benchmark.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
tags = ["benchmark"],
|
|
|
|
deps = [
|
|
|
|
":internal",
|
|
|
|
"@com_github_google_benchmark//:benchmark_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "charconv_test",
|
|
|
|
srcs = ["charconv_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
deps = [
|
|
|
|
":pow10_helper",
|
|
|
|
":str_format",
|
|
|
|
":strings",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "charconv_parse_test",
|
|
|
|
srcs = [
|
|
|
|
"internal/charconv_parse.h",
|
|
|
|
"internal/charconv_parse_test.cc",
|
|
|
|
],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "charconv_bigint_test",
|
|
|
|
srcs = [
|
|
|
|
"internal/charconv_bigint.h",
|
|
|
|
"internal/charconv_bigint_test.cc",
|
|
|
|
"internal/charconv_parse.h",
|
|
|
|
],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/base:config",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "charconv_benchmark",
|
|
|
|
srcs = [
|
|
|
|
"charconv_benchmark.cc",
|
|
|
|
],
|
|
|
|
tags = [
|
|
|
|
"benchmark",
|
|
|
|
],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"@com_github_google_benchmark//:benchmark_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "str_format",
|
|
|
|
hdrs = [
|
|
|
|
"str_format.h",
|
|
|
|
],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
deps = [
|
|
|
|
":str_format_internal",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "str_format_internal",
|
|
|
|
srcs = [
|
|
|
|
"internal/str_format/arg.cc",
|
|
|
|
"internal/str_format/bind.cc",
|
|
|
|
"internal/str_format/extension.cc",
|
|
|
|
"internal/str_format/float_conversion.cc",
|
|
|
|
"internal/str_format/output.cc",
|
|
|
|
"internal/str_format/parser.cc",
|
|
|
|
],
|
|
|
|
hdrs = [
|
|
|
|
"internal/str_format/arg.h",
|
|
|
|
"internal/str_format/bind.h",
|
|
|
|
"internal/str_format/checker.h",
|
|
|
|
"internal/str_format/extension.h",
|
|
|
|
"internal/str_format/float_conversion.h",
|
|
|
|
"internal/str_format/output.h",
|
|
|
|
"internal/str_format/parser.h",
|
|
|
|
],
|
|
|
|
copts = ABSL_DEFAULT_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":strings",
|
|
|
|
"//absl/base:config",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"//absl/functional:function_ref",
|
|
|
|
"//absl/meta:type_traits",
|
|
|
|
"//absl/numeric:bits",
|
|
|
|
"//absl/numeric:int128",
|
Export of internal Abseil changes
--
e2de21d54c02b6419c57c0f4e2a16b608deca260 by Evan Brown <ezb@google.com>:
Remove the InsertEnd benchmark.
This benchmark has significantly different possible behaviors that can result in misleading metrics. Specifically, we can have a case where we are deallocating the last node in the b-tree in the erase and then allocating a new node in the insert call repeatedly, whereas normally, we end up just inserting/erasing a value from the last node. Also, the name of the benchmark is misleading because it involves an erase and an insert, but the name only mentions the insert.
PiperOrigin-RevId: 360930639
--
51f6bb97b9cbdb809c31b77e93ce080ca3cba9ea by Benjamin Barenblat <bbaren@google.com>:
Stop testing with double-double random variables
On POWER, long double is often represented as a pair of doubles added
together (double-double arithmetic). We’ve already special-cased
double-double arithmetic in a number of tests, but compiler
bugs [1, 2, 3] have now triggered both false positives and false
negatives, which suggests testing with double doubles is unlikely to
yield useful signal. Remove the special casing and detect if we’re on a
double-double system; if so, just don’t test long doubles.
[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99048
[2] https://bugs.llvm.org/show_bug.cgi?id=49131
[3] https://bugs.llvm.org/show_bug.cgi?id=49132
PiperOrigin-RevId: 360793161
--
07fb4d7932c2f5d711c480f759dacb0be60f975e by Abseil Team <absl-team@google.com>:
internal change
PiperOrigin-RevId: 360712825
GitOrigin-RevId: e2de21d54c02b6419c57c0f4e2a16b608deca260
Change-Id: I98389b5a8789dcc8f35abc00c767e909181665f0
4 years ago
|
|
|
"//absl/numeric:representation",
|
|
|
|
"//absl/types:optional",
|
|
|
|
"//absl/types:span",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "str_format_test",
|
|
|
|
srcs = ["str_format_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":cord",
|
|
|
|
":str_format",
|
|
|
|
":strings",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "str_format_extension_test",
|
|
|
|
srcs = [
|
|
|
|
"internal/str_format/extension_test.cc",
|
|
|
|
],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":str_format",
|
|
|
|
":str_format_internal",
|
|
|
|
":strings",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "str_format_arg_test",
|
|
|
|
srcs = ["internal/str_format/arg_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":str_format",
|
|
|
|
":str_format_internal",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "str_format_bind_test",
|
|
|
|
srcs = ["internal/str_format/bind_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":str_format_internal",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "str_format_checker_test",
|
|
|
|
srcs = ["internal/str_format/checker_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":str_format",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "str_format_convert_test",
|
|
|
|
size = "medium",
|
|
|
|
srcs = ["internal/str_format/convert_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":str_format_internal",
|
|
|
|
":strings",
|
|
|
|
"//absl/base:raw_logging_internal",
|
|
|
|
"//absl/types:optional",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "str_format_output_test",
|
|
|
|
srcs = ["internal/str_format/output_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":cord",
|
|
|
|
":str_format_internal",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "str_format_parser_test",
|
|
|
|
srcs = ["internal/str_format/parser_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":str_format_internal",
|
|
|
|
"//absl/base:core_headers",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_library(
|
|
|
|
name = "pow10_helper",
|
|
|
|
testonly = True,
|
|
|
|
srcs = ["internal/pow10_helper.cc"],
|
|
|
|
hdrs = ["internal/pow10_helper.h"],
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = ["//absl/base:config"],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_test(
|
|
|
|
name = "pow10_helper_test",
|
|
|
|
srcs = ["internal/pow10_helper_test.cc"],
|
|
|
|
copts = ABSL_TEST_COPTS,
|
|
|
|
visibility = ["//visibility:private"],
|
|
|
|
deps = [
|
|
|
|
":pow10_helper",
|
|
|
|
":str_format",
|
|
|
|
"@com_google_googletest//:gtest_main",
|
|
|
|
],
|
|
|
|
)
|