diff options
author | 2016-12-14 10:11:49 -0800 | |
---|---|---|
committer | 2016-12-15 09:50:39 -0800 | |
commit | 46ee31b67d7ee1bd085fbc240502053caa3cf8fa (patch) | |
tree | 83e870f293cd60d533207e389d7b094acd87b31f | |
parent | 9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604 (diff) |
ART: Move to libbase StringPrintf
Remove ART's StringPrintf implementation. Fix up clients. Add
missing includes where necessary.
Test: m test-art-host
Change-Id: I564038d5868595ac3bb88d641af1000cea940e5a
124 files changed, 449 insertions, 300 deletions
diff --git a/cmdline/cmdline.h b/cmdline/cmdline.h index 6e042c3c27..f4540ff655 100644 --- a/cmdline/cmdline.h +++ b/cmdline/cmdline.h @@ -24,10 +24,12 @@ #include <iostream> #include <string> -#include "runtime.h" +#include "android-base/stringprintf.h" + +#include "base/logging.h" #include "base/stringpiece.h" #include "noop_compiler_callbacks.h" -#include "base/logging.h" +#include "runtime.h" #if !defined(NDEBUG) #define DBG_LOG LOG(INFO) @@ -197,7 +199,7 @@ struct CmdlineArgs { " Example: --boot-image=/system/framework/boot.art\n" " (specifies /system/framework/<arch>/boot.art as the image file)\n" "\n"; - usage += StringPrintf( // Optional. + usage += android::base::StringPrintf( // Optional. " --instruction-set=(arm|arm64|mips|mips64|x86|x86_64): for locating the image\n" " file based on the image location set.\n" " Example: --instruction-set=x86\n" @@ -264,8 +266,8 @@ struct CmdlineArgs { // Check that the boot image location points to a valid file name. std::string file_name; if (!LocationToFilename(boot_image_location, instruction_set_, &file_name)) { - *error_msg = StringPrintf("No corresponding file for location '%s' exists", - file_name.c_str()); + *error_msg = android::base::StringPrintf("No corresponding file for location '%s' exists", + file_name.c_str()); return false; } diff --git a/compiler/dex/dex_to_dex_compiler.cc b/compiler/dex/dex_to_dex_compiler.cc index cf69f469a0..d4f6545c59 100644 --- a/compiler/dex/dex_to_dex_compiler.cc +++ b/compiler/dex/dex_to_dex_compiler.cc @@ -16,6 +16,8 @@ #include "dex_to_dex_compiler.h" +#include "android-base/stringprintf.h" + #include "art_field-inl.h" #include "art_method-inl.h" #include "base/logging.h" @@ -32,6 +34,8 @@ namespace art { namespace optimizer { +using android::base::StringPrintf; + // Controls quickening activation. const bool kEnableQuickening = true; // Control check-cast elision. diff --git a/compiler/driver/dex_compilation_unit.cc b/compiler/driver/dex_compilation_unit.cc index 64fd9e7f0f..47b19297e5 100644 --- a/compiler/driver/dex_compilation_unit.cc +++ b/compiler/driver/dex_compilation_unit.cc @@ -16,7 +16,6 @@ #include "dex_compilation_unit.h" -#include "base/stringprintf.h" #include "mirror/dex_cache.h" #include "utils.h" diff --git a/compiler/elf_writer_test.cc b/compiler/elf_writer_test.cc index 6f48779258..9669c4a9d3 100644 --- a/compiler/elf_writer_test.cc +++ b/compiler/elf_writer_test.cc @@ -16,7 +16,6 @@ #include "elf_file.h" -#include "base/stringprintf.h" #include "base/unix_file/fd_file.h" #include "common_compiler_test.h" #include "elf_file.h" diff --git a/compiler/image_test.cc b/compiler/image_test.cc index 9bbe595fa9..1290379569 100644 --- a/compiler/image_test.cc +++ b/compiler/image_test.cc @@ -20,6 +20,8 @@ #include <string> #include <vector> +#include "android-base/stringprintf.h" + #include "base/unix_file/fd_file.h" #include "class_linker-inl.h" #include "common_compiler_test.h" @@ -134,7 +136,8 @@ void CompilationHelper::Compile(CompilerDriver* driver, // Create a generic tmp file, to be the base of the .art and .oat temporary files. ScratchFile location; for (int i = 0; i < static_cast<int>(class_path.size()); ++i) { - std::string cur_location(StringPrintf("%s-%d.art", location.GetFilename().c_str(), i)); + std::string cur_location = + android::base::StringPrintf("%s-%d.art", location.GetFilename().c_str(), i); image_locations.push_back(ScratchFile(cur_location)); } } diff --git a/compiler/jit/jit_compiler.cc b/compiler/jit/jit_compiler.cc index 9dfb434b10..148ce4f9ee 100644 --- a/compiler/jit/jit_compiler.cc +++ b/compiler/jit/jit_compiler.cc @@ -16,6 +16,8 @@ #include "jit_compiler.h" +#include "android-base/stringprintf.h" + #include "arch/instruction_set.h" #include "arch/instruction_set_features.h" #include "art_method-inl.h" @@ -81,7 +83,7 @@ NO_RETURN static void Usage(const char* fmt, ...) { va_list ap; va_start(ap, fmt); std::string error; - StringAppendV(&error, fmt, ap); + android::base::StringAppendV(&error, fmt, ap); LOG(FATAL) << error; va_end(ap); exit(EXIT_FAILURE); diff --git a/compiler/oat_test.cc b/compiler/oat_test.cc index 0a778b0954..edc93ab0c4 100644 --- a/compiler/oat_test.cc +++ b/compiler/oat_test.cc @@ -14,6 +14,8 @@ * limitations under the License. */ +#include "android-base/stringprintf.h" + #include "arch/instruction_set_features.h" #include "art_method-inl.h" #include "base/enums.h" @@ -48,7 +50,7 @@ NO_RETURN static void Usage(const char* fmt, ...) { va_list ap; va_start(ap, fmt); std::string error; - StringAppendV(&error, fmt, ap); + android::base::StringAppendV(&error, fmt, ap); LOG(FATAL) << error; va_end(ap); UNREACHABLE(); diff --git a/compiler/optimizing/graph_checker.cc b/compiler/optimizing/graph_checker.cc index 188ee3a8d1..34b52a87b5 100644 --- a/compiler/optimizing/graph_checker.cc +++ b/compiler/optimizing/graph_checker.cc @@ -20,12 +20,15 @@ #include <string> #include <sstream> +#include "android-base/stringprintf.h" + #include "base/arena_containers.h" #include "base/bit_vector-inl.h" -#include "base/stringprintf.h" namespace art { +using android::base::StringPrintf; + static bool IsAllowedToJumpToExitBlock(HInstruction* instruction) { return instruction->IsThrow() || instruction->IsReturn() || instruction->IsReturnVoid(); } diff --git a/compiler/optimizing/graph_test.cc b/compiler/optimizing/graph_test.cc index d5305646a8..28ee3a5e8b 100644 --- a/compiler/optimizing/graph_test.cc +++ b/compiler/optimizing/graph_test.cc @@ -15,7 +15,6 @@ */ #include "base/arena_allocator.h" -#include "base/stringprintf.h" #include "builder.h" #include "nodes.h" #include "optimizing_unit_test.h" diff --git a/compiler/optimizing/linearize_test.cc b/compiler/optimizing/linearize_test.cc index 13e14c53b5..3831aa6c91 100644 --- a/compiler/optimizing/linearize_test.cc +++ b/compiler/optimizing/linearize_test.cc @@ -18,7 +18,6 @@ #include "arch/x86/instruction_set_features_x86.h" #include "base/arena_allocator.h" -#include "base/stringprintf.h" #include "builder.h" #include "code_generator.h" #include "code_generator_x86.h" diff --git a/compiler/optimizing/pretty_printer.h b/compiler/optimizing/pretty_printer.h index 5891350894..c6579dc5e0 100644 --- a/compiler/optimizing/pretty_printer.h +++ b/compiler/optimizing/pretty_printer.h @@ -17,7 +17,8 @@ #ifndef ART_COMPILER_OPTIMIZING_PRETTY_PRINTER_H_ #define ART_COMPILER_OPTIMIZING_PRETTY_PRINTER_H_ -#include "base/stringprintf.h" +#include "android-base/stringprintf.h" + #include "nodes.h" namespace art { @@ -108,7 +109,7 @@ class StringPrettyPrinter : public HPrettyPrinter { : HPrettyPrinter(graph), str_(""), current_block_(nullptr) { } void PrintInt(int value) OVERRIDE { - str_ += StringPrintf("%d", value); + str_ += android::base::StringPrintf("%d", value); } void PrintString(const char* value) OVERRIDE { diff --git a/compiler/optimizing/pretty_printer_test.cc b/compiler/optimizing/pretty_printer_test.cc index 951cdfbd8b..1af94f3445 100644 --- a/compiler/optimizing/pretty_printer_test.cc +++ b/compiler/optimizing/pretty_printer_test.cc @@ -15,7 +15,6 @@ */ #include "base/arena_allocator.h" -#include "base/stringprintf.h" #include "builder.h" #include "dex_file.h" #include "dex_instruction.h" diff --git a/compiler/optimizing/ssa_test.cc b/compiler/optimizing/ssa_test.cc index 429763423c..f69f417efc 100644 --- a/compiler/optimizing/ssa_test.cc +++ b/compiler/optimizing/ssa_test.cc @@ -14,8 +14,9 @@ * limitations under the License. */ +#include "android-base/stringprintf.h" + #include "base/arena_allocator.h" -#include "base/stringprintf.h" #include "builder.h" #include "dex_file.h" #include "dex_instruction.h" @@ -35,7 +36,7 @@ class SsaPrettyPrinter : public HPrettyPrinter { explicit SsaPrettyPrinter(HGraph* graph) : HPrettyPrinter(graph), str_("") {} void PrintInt(int value) OVERRIDE { - str_ += StringPrintf("%d", value); + str_ += android::base::StringPrintf("%d", value); } void PrintString(const char* value) OVERRIDE { diff --git a/compiler/utils/arm/assembler_thumb2_test.cc b/compiler/utils/arm/assembler_thumb2_test.cc index 30e8f4e604..0147a76744 100644 --- a/compiler/utils/arm/assembler_thumb2_test.cc +++ b/compiler/utils/arm/assembler_thumb2_test.cc @@ -16,12 +16,15 @@ #include "assembler_thumb2.h" +#include "android-base/stringprintf.h" + #include "base/stl_util.h" -#include "base/stringprintf.h" #include "utils/assembler_test.h" namespace art { +using android::base::StringPrintf; + class AssemblerThumb2Test : public AssemblerTest<arm::Thumb2Assembler, arm::Register, arm::SRegister, uint32_t> { diff --git a/compiler/utils/dedupe_set-inl.h b/compiler/utils/dedupe_set-inl.h index ac5481336b..c06e9cadcc 100644 --- a/compiler/utils/dedupe_set-inl.h +++ b/compiler/utils/dedupe_set-inl.h @@ -23,10 +23,11 @@ #include <inttypes.h> #include <unordered_map> +#include "android-base/stringprintf.h" + #include "base/mutex.h" #include "base/hash_set.h" #include "base/stl_util.h" -#include "base/stringprintf.h" #include "base/time_utils.h" namespace art { @@ -238,13 +239,13 @@ std::string DedupeSet<InKey, StoreKey, Alloc, HashType, HashFunc, kShard>::DumpS for (HashType shard = 0; shard < kShard; ++shard) { shards_[shard]->UpdateStats(self, &stats); } - return StringPrintf("%zu collisions, %zu max hash collisions, " - "%zu/%zu probe distance, %" PRIu64 " ns hash time", - stats.collision_sum, - stats.collision_max, - stats.total_probe_distance, - stats.total_size, - hash_time_); + return android::base::StringPrintf("%zu collisions, %zu max hash collisions, " + "%zu/%zu probe distance, %" PRIu64 " ns hash time", + stats.collision_sum, + stats.collision_max, + stats.total_probe_distance, + stats.total_size, + hash_time_); } diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc index 5a0f0c6e50..2346635198 100644 --- a/dex2oat/dex2oat.cc +++ b/dex2oat/dex2oat.cc @@ -33,6 +33,7 @@ #include <sys/utsname.h> #endif +#include "android-base/stringprintf.h" #include "android-base/strings.h" #include "arch/instruction_set_features.h" @@ -87,6 +88,9 @@ namespace art { +using android::base::StringAppendV; +using android::base::StringPrintf; + static constexpr size_t kDefaultMinDexFilesForSwap = 2; static constexpr size_t kDefaultMinDexFileCumulativeSizeForSwap = 20 * MB; diff --git a/dex2oat/dex2oat_test.cc b/dex2oat/dex2oat_test.cc index b6b62a80dc..cdb3b9fe2a 100644 --- a/dex2oat/dex2oat_test.cc +++ b/dex2oat/dex2oat_test.cc @@ -19,11 +19,15 @@ #include <string> #include <vector> +#include <sys/wait.h> +#include <unistd.h> + +#include "android-base/stringprintf.h" + #include "common_runtime_test.h" #include "base/logging.h" #include "base/macros.h" -#include "base/stringprintf.h" #include "dex_file-inl.h" #include "dex2oat_environment_test.h" #include "jit/offline_profiling_info.h" @@ -31,9 +35,6 @@ #include "oat_file.h" #include "utils.h" -#include <sys/wait.h> -#include <unistd.h> - namespace art { class Dex2oatTest : public Dex2oatEnvironmentTest { @@ -217,7 +218,7 @@ class Dex2oatSwapTest : public Dex2oatTest { std::unique_ptr<ScratchFile> sf; if (use_fd) { sf.reset(new ScratchFile()); - copy.push_back(StringPrintf("--swap-fd=%d", sf->GetFd())); + copy.push_back(android::base::StringPrintf("--swap-fd=%d", sf->GetFd())); } else { std::string swap_location = GetOdexDir() + "/Dex2OatSwapTest.odex.swap"; copy.push_back("--swap-file=" + swap_location); diff --git a/dexdump/dexdump.cc b/dexdump/dexdump.cc index 916984c261..d5776fa61e 100644 --- a/dexdump/dexdump.cc +++ b/dexdump/dexdump.cc @@ -42,7 +42,8 @@ #include <sstream> #include <vector> -#include "base/stringprintf.h" +#include "android-base/stringprintf.h" + #include "dexdump_cfg.h" #include "dex_file-inl.h" #include "dex_file_types.h" @@ -887,8 +888,10 @@ static std::unique_ptr<char[]> indexString(const DexFile* pDexFile, const char* name = pDexFile->StringDataByIdx(pMethodId.name_idx_); const Signature signature = pDexFile->GetMethodSignature(pMethodId); const char* backDescriptor = pDexFile->StringByTypeIdx(pMethodId.class_idx_); - method = StringPrintf("%s.%s:%s", - backDescriptor, name, signature.ToString().c_str()); + method = android::base::StringPrintf("%s.%s:%s", + backDescriptor, + name, + signature.ToString().c_str()); } if (secondary_index < pDexFile->GetHeader().proto_ids_size_) { const DexFile::ProtoId& protoId = pDexFile->GetProtoId(secondary_index); diff --git a/dexdump/dexdump_test.cc b/dexdump/dexdump_test.cc index d28ca2834e..53dda6a995 100644 --- a/dexdump/dexdump_test.cc +++ b/dexdump/dexdump_test.cc @@ -21,7 +21,6 @@ #include <sys/types.h> #include <unistd.h> -#include "base/stringprintf.h" #include "common_runtime_test.h" #include "runtime/arch/instruction_set.h" #include "runtime/os.h" diff --git a/dexlayout/dexlayout.cc b/dexlayout/dexlayout.cc index cfe48378ae..cac60900bc 100644 --- a/dexlayout/dexlayout.cc +++ b/dexlayout/dexlayout.cc @@ -30,7 +30,8 @@ #include <sstream> #include <vector> -#include "base/stringprintf.h" +#include "android-base/stringprintf.h" + #include "dex_ir_builder.h" #include "dex_file-inl.h" #include "dex_instruction-inl.h" @@ -43,6 +44,8 @@ namespace art { +using android::base::StringPrintf; + /* * Flags for use with createAccessFlagStr(). */ diff --git a/dexlayout/dexlayout_test.cc b/dexlayout/dexlayout_test.cc index 665baa6c73..46a1c43548 100644 --- a/dexlayout/dexlayout_test.cc +++ b/dexlayout/dexlayout_test.cc @@ -21,7 +21,6 @@ #include <sys/types.h> #include <unistd.h> -#include "base/stringprintf.h" #include "base/unix_file/fd_file.h" #include "common_runtime_test.h" #include "utils.h" diff --git a/dexlist/dexlist_test.cc b/dexlist/dexlist_test.cc index da1dd7fd89..13209427c9 100644 --- a/dexlist/dexlist_test.cc +++ b/dexlist/dexlist_test.cc @@ -21,7 +21,6 @@ #include <sys/types.h> #include <unistd.h> -#include "base/stringprintf.h" #include "common_runtime_test.h" #include "runtime/arch/instruction_set.h" #include "runtime/gc/heap.h" diff --git a/imgdiag/imgdiag.cc b/imgdiag/imgdiag.cc index a374686dc5..f307cbc4f5 100644 --- a/imgdiag/imgdiag.cc +++ b/imgdiag/imgdiag.cc @@ -26,9 +26,10 @@ #include <map> #include <unordered_set> +#include "android-base/stringprintf.h" + #include "art_method-inl.h" #include "base/unix_file/fd_file.h" -#include "base/stringprintf.h" #include "gc/space/image_space.h" #include "gc/heap.h" #include "mirror/class-inl.h" @@ -46,6 +47,8 @@ namespace art { +using android::base::StringPrintf; + class ImgDiagDumper { public: explicit ImgDiagDumper(std::ostream* os, diff --git a/imgdiag/imgdiag_test.cc b/imgdiag/imgdiag_test.cc index 9f771ba8a3..3f2afc0696 100644 --- a/imgdiag/imgdiag_test.cc +++ b/imgdiag/imgdiag_test.cc @@ -20,12 +20,13 @@ #include "common_runtime_test.h" +#include "android-base/stringprintf.h" + #include "runtime/os.h" #include "runtime/arch/instruction_set.h" #include "runtime/utils.h" #include "runtime/gc/space/image_space.h" #include "runtime/gc/heap.h" -#include "base/stringprintf.h" #include <sys/types.h> #include <unistd.h> @@ -57,7 +58,7 @@ class ImgDiagTest : public CommonRuntimeTest { virtual void SetUpRuntimeOptions(RuntimeOptions* options) OVERRIDE { // Needs to live until CommonRuntimeTest::SetUp finishes, since we pass it a cstring. - runtime_args_image_ = StringPrintf("-Ximage:%s", GetCoreArtLocation().c_str()); + runtime_args_image_ = android::base::StringPrintf("-Ximage:%s", GetCoreArtLocation().c_str()); options->push_back(std::make_pair(runtime_args_image_, nullptr)); } diff --git a/oatdump/oatdump.cc b/oatdump/oatdump.cc index 17b47a482a..148ee88669 100644 --- a/oatdump/oatdump.cc +++ b/oatdump/oatdump.cc @@ -26,6 +26,7 @@ #include <unordered_set> #include <vector> +#include "android-base/stringprintf.h" #include "android-base/strings.h" #include "arch/instruction_set_features.h" @@ -76,6 +77,8 @@ namespace art { +using android::base::StringPrintf; + const char* image_methods_descriptions_[] = { "kResolutionMethod", "kImtConflictMethod", diff --git a/oatdump/oatdump_test.cc b/oatdump/oatdump_test.cc index a2eba4514b..e77d03bae7 100644 --- a/oatdump/oatdump_test.cc +++ b/oatdump/oatdump_test.cc @@ -22,7 +22,6 @@ #include "common_runtime_test.h" -#include "base/stringprintf.h" #include "base/unix_file/fd_file.h" #include "runtime/arch/instruction_set.h" #include "runtime/gc/heap.h" diff --git a/patchoat/patchoat.cc b/patchoat/patchoat.cc index 62d1ddff75..7ae13a574b 100644 --- a/patchoat/patchoat.cc +++ b/patchoat/patchoat.cc @@ -24,6 +24,7 @@ #include <string> #include <vector> +#include "android-base/stringprintf.h" #include "android-base/strings.h" #include "art_field-inl.h" @@ -31,7 +32,6 @@ #include "base/dumpable.h" #include "base/scoped_flock.h" #include "base/stringpiece.h" -#include "base/stringprintf.h" #include "base/unix_file/fd_file.h" #include "base/unix_file/random_access_file_utils.h" #include "elf_utils.h" @@ -939,7 +939,7 @@ static std::string CommandLine() { static void UsageErrorV(const char* fmt, va_list ap) { std::string error; - StringAppendV(&error, fmt, ap); + android::base::StringAppendV(&error, fmt, ap); LOG(ERROR) << error; } diff --git a/profman/profman.cc b/profman/profman.cc index 0b2d172726..e5384078f1 100644 --- a/profman/profman.cc +++ b/profman/profman.cc @@ -25,12 +25,12 @@ #include <string> #include <vector> +#include "android-base/stringprintf.h" #include "android-base/strings.h" #include "base/dumpable.h" #include "base/scoped_flock.h" #include "base/stringpiece.h" -#include "base/stringprintf.h" #include "base/time_utils.h" #include "base/unix_file/fd_file.h" #include "dex_file.h" @@ -61,7 +61,7 @@ static bool FdIsValid(int fd) { static void UsageErrorV(const char* fmt, va_list ap) { std::string error; - StringAppendV(&error, fmt, ap); + android::base::StringAppendV(&error, fmt, ap); LOG(ERROR) << error; } diff --git a/runtime/Android.bp b/runtime/Android.bp index 32ebee24c8..86019bf71c 100644 --- a/runtime/Android.bp +++ b/runtime/Android.bp @@ -40,7 +40,6 @@ cc_defaults { "base/scoped_arena_allocator.cc", "base/scoped_flock.cc", "base/stringpiece.cc", - "base/stringprintf.cc", "base/time_utils.cc", "base/timing_logger.cc", "base/unix_file/fd_file.cc", @@ -508,7 +507,6 @@ art_cc_test { "base/histogram_test.cc", "base/mutex_test.cc", "base/scoped_flock_test.cc", - "base/stringprintf_test.cc", "base/time_utils_test.cc", "base/timing_logger_test.cc", "base/transform_array_ref_test.cc", diff --git a/runtime/arch/arm/instruction_set_features_arm.cc b/runtime/arch/arm/instruction_set_features_arm.cc index f264b82448..181b2ed723 100644 --- a/runtime/arch/arm/instruction_set_features_arm.cc +++ b/runtime/arch/arm/instruction_set_features_arm.cc @@ -24,10 +24,10 @@ #include "signal.h" #include <fstream> +#include "android-base/stringprintf.h" #include "android-base/strings.h" -#include "base/stringprintf.h" -#include "utils.h" // For Trim. +#include "base/logging.h" #if defined(__arm__) extern "C" bool artCheckForArmSdivInstruction(); @@ -35,6 +35,8 @@ extern "C" bool artCheckForArmSdivInstruction(); namespace art { +using android::base::StringPrintf; + ArmFeaturesUniquePtr ArmInstructionSetFeatures::FromVariant( const std::string& variant, std::string* error_msg) { // Assume all ARM processors are SMP. diff --git a/runtime/arch/arm64/instruction_set_features_arm64.cc b/runtime/arch/arm64/instruction_set_features_arm64.cc index f7b5a7649a..52d8b3e367 100644 --- a/runtime/arch/arm64/instruction_set_features_arm64.cc +++ b/runtime/arch/arm64/instruction_set_features_arm64.cc @@ -19,14 +19,16 @@ #include <fstream> #include <sstream> +#include "android-base/stringprintf.h" #include "android-base/strings.h" +#include "base/logging.h" #include "base/stl_util.h" -#include "base/stringprintf.h" -#include "utils.h" // For Trim. namespace art { +using android::base::StringPrintf; + Arm64FeaturesUniquePtr Arm64InstructionSetFeatures::FromVariant( const std::string& variant, std::string* error_msg) { const bool smp = true; // Conservative default. diff --git a/runtime/arch/instruction_set_features_test.cc b/runtime/arch/instruction_set_features_test.cc index 0b8e531896..d4893923d6 100644 --- a/runtime/arch/instruction_set_features_test.cc +++ b/runtime/arch/instruction_set_features_test.cc @@ -22,11 +22,14 @@ #include "android-base/properties.h" #endif +#include "android-base/stringprintf.h" + #include "base/logging.h" -#include "base/stringprintf.h" namespace art { +using android::base::StringPrintf; + #ifdef ART_TARGET_ANDROID #if defined(__aarch64__) TEST(InstructionSetFeaturesTest, DISABLED_FeaturesFromSystemPropertyVariant) { diff --git a/runtime/arch/instruction_set_test.cc b/runtime/arch/instruction_set_test.cc index 5dfc4b4c48..5aae93acc5 100644 --- a/runtime/arch/instruction_set_test.cc +++ b/runtime/arch/instruction_set_test.cc @@ -19,7 +19,6 @@ #include <gtest/gtest.h> #include "base/enums.h" -#include "base/stringprintf.h" namespace art { diff --git a/runtime/arch/mips/instruction_set_features_mips.cc b/runtime/arch/mips/instruction_set_features_mips.cc index a65c967efd..5b50573695 100644 --- a/runtime/arch/mips/instruction_set_features_mips.cc +++ b/runtime/arch/mips/instruction_set_features_mips.cc @@ -19,14 +19,16 @@ #include <fstream> #include <sstream> +#include "android-base/stringprintf.h" #include "android-base/strings.h" +#include "base/logging.h" #include "base/stl_util.h" -#include "base/stringprintf.h" -#include "utils.h" // For Trim. namespace art { +using android::base::StringPrintf; + // An enum for the Mips revision. enum class MipsLevel { kBase, diff --git a/runtime/arch/mips64/instruction_set_features_mips64.cc b/runtime/arch/mips64/instruction_set_features_mips64.cc index e564d1eab5..92c44e85de 100644 --- a/runtime/arch/mips64/instruction_set_features_mips64.cc +++ b/runtime/arch/mips64/instruction_set_features_mips64.cc @@ -19,13 +19,15 @@ #include <fstream> #include <sstream> +#include "android-base/stringprintf.h" #include "android-base/strings.h" -#include "base/stringprintf.h" -#include "utils.h" // For Trim. +#include "base/logging.h" namespace art { +using android::base::StringPrintf; + Mips64FeaturesUniquePtr Mips64InstructionSetFeatures::FromVariant( const std::string& variant, std::string* error_msg ATTRIBUTE_UNUSED) { if (variant != "default" && variant != "mips64r6") { diff --git a/runtime/arch/x86/instruction_set_features_x86.cc b/runtime/arch/x86/instruction_set_features_x86.cc index cc102ecedd..c520d63cf3 100644 --- a/runtime/arch/x86/instruction_set_features_x86.cc +++ b/runtime/arch/x86/instruction_set_features_x86.cc @@ -19,14 +19,16 @@ #include <fstream> #include <sstream> +#include "android-base/stringprintf.h" #include "android-base/strings.h" #include "arch/x86_64/instruction_set_features_x86_64.h" -#include "base/stringprintf.h" -#include "utils.h" // For Trim. +#include "base/logging.h" namespace art { +using android::base::StringPrintf; + // Feature-support arrays. static constexpr const char* x86_known_variants[] = { diff --git a/runtime/art_method.cc b/runtime/art_method.cc index 96b6f18403..dfc7837aea 100644 --- a/runtime/art_method.cc +++ b/runtime/art_method.cc @@ -18,6 +18,8 @@ #include <cstddef> +#include "android-base/stringprintf.h" + #include "arch/context.h" #include "art_field-inl.h" #include "art_method-inl.h" @@ -46,6 +48,8 @@ namespace art { +using android::base::StringPrintf; + extern "C" void art_quick_invoke_stub(ArtMethod*, uint32_t*, uint32_t, Thread*, JValue*, const char*); extern "C" void art_quick_invoke_static_stub(ArtMethod*, uint32_t*, uint32_t, Thread*, JValue*, diff --git a/runtime/base/file_magic.cc b/runtime/base/file_magic.cc index de6f4237ff..568a7ae5d6 100644 --- a/runtime/base/file_magic.cc +++ b/runtime/base/file_magic.cc @@ -20,13 +20,16 @@ #include <sys/stat.h> #include <sys/types.h> +#include "android-base/stringprintf.h" + #include "base/logging.h" #include "base/unix_file/fd_file.h" #include "dex_file.h" -#include "stringprintf.h" namespace art { +using android::base::StringPrintf; + File OpenAndReadMagic(const char* filename, uint32_t* magic, std::string* error_msg) { CHECK(magic != nullptr); File fd(filename, O_RDONLY, /* check_usage */ false); diff --git a/runtime/base/mutex-inl.h b/runtime/base/mutex-inl.h index 92b7c6537c..44a84c834f 100644 --- a/runtime/base/mutex-inl.h +++ b/runtime/base/mutex-inl.h @@ -21,7 +21,6 @@ #include "mutex.h" -#include "base/stringprintf.h" #include "base/value_object.h" #include "thread.h" #include "utils.h" diff --git a/runtime/base/mutex.cc b/runtime/base/mutex.cc index ce452cbcf6..9116097604 100644 --- a/runtime/base/mutex.cc +++ b/runtime/base/mutex.cc @@ -19,6 +19,8 @@ #include <errno.h> #include <sys/time.h> +#include "android-base/stringprintf.h" + #include "atomic.h" #include "base/logging.h" #include "base/time_utils.h" @@ -30,6 +32,8 @@ namespace art { +using android::base::StringPrintf; + static Atomic<Locks::ClientCallback*> safe_to_call_abort_callback(nullptr); Mutex* Locks::abort_lock_ = nullptr; diff --git a/runtime/base/scoped_flock.cc b/runtime/base/scoped_flock.cc index 0e8031f4f2..d4bb56b62a 100644 --- a/runtime/base/scoped_flock.cc +++ b/runtime/base/scoped_flock.cc @@ -19,12 +19,15 @@ #include <sys/file.h> #include <sys/stat.h> +#include "android-base/stringprintf.h" + #include "base/logging.h" -#include "base/stringprintf.h" #include "base/unix_file/fd_file.h" namespace art { +using android::base::StringPrintf; + bool ScopedFlock::Init(const char* filename, std::string* error_msg) { return Init(filename, O_CREAT | O_RDWR, true, error_msg); } diff --git a/runtime/base/stringprintf.cc b/runtime/base/stringprintf.cc deleted file mode 100644 index 8fd9257048..0000000000 --- a/runtime/base/stringprintf.cc +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * 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 - * - * http://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. - */ - -#include "stringprintf.h" - -#include <stdio.h> - -namespace art { - -void StringAppendV(std::string* dst, const char* format, va_list ap) { - // First try with a small fixed size buffer - char space[1024]; - - // It's possible for methods that use a va_list to invalidate - // the data in it upon use. The fix is to make a copy - // of the structure before using it and use that copy instead. - va_list backup_ap; - va_copy(backup_ap, ap); - int result = vsnprintf(space, sizeof(space), format, backup_ap); - va_end(backup_ap); - - if (result < static_cast<int>(sizeof(space))) { - if (result >= 0) { - // Normal case -- everything fit. - dst->append(space, result); - return; - } - - if (result < 0) { - // Just an error. - return; - } - } - - // Increase the buffer size to the size requested by vsnprintf, - // plus one for the closing \0. - int length = result+1; - char* buf = new char[length]; - - // Restore the va_list before we use it again - va_copy(backup_ap, ap); - result = vsnprintf(buf, length, format, backup_ap); - va_end(backup_ap); - - if (result >= 0 && result < length) { - // It fit - dst->append(buf, result); - } - delete[] buf; -} - -std::string StringPrintf(const char* fmt, ...) { - va_list ap; - va_start(ap, fmt); - std::string result; - StringAppendV(&result, fmt, ap); - va_end(ap); - return result; -} - -void StringAppendF(std::string* dst, const char* format, ...) { - va_list ap; - va_start(ap, format); - StringAppendV(dst, format, ap); - va_end(ap); -} - -} // namespace art diff --git a/runtime/base/stringprintf.h b/runtime/base/stringprintf.h deleted file mode 100644 index 4767a750c3..0000000000 --- a/runtime/base/stringprintf.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * 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 - * - * http://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. - */ - -#ifndef ART_RUNTIME_BASE_STRINGPRINTF_H_ -#define ART_RUNTIME_BASE_STRINGPRINTF_H_ - -#include <stdarg.h> -#include <string> - -namespace art { - -// Returns a string corresponding to printf-like formatting of the arguments. -std::string StringPrintf(const char* fmt, ...) - __attribute__((__format__(__printf__, 1, 2))); - -// Appends a printf-like formatting of the arguments to 'dst'. -void StringAppendF(std::string* dst, const char* fmt, ...) - __attribute__((__format__(__printf__, 2, 3))); - -// Appends a printf-like formatting of the arguments to 'dst'. -void StringAppendV(std::string* dst, const char* format, va_list ap); - -} // namespace art - -#endif // ART_RUNTIME_BASE_STRINGPRINTF_H_ diff --git a/runtime/base/stringprintf_test.cc b/runtime/base/stringprintf_test.cc deleted file mode 100644 index 0bfde33a3f..0000000000 --- a/runtime/base/stringprintf_test.cc +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * 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 - * - * http://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. - */ - -#include "stringprintf.h" - -#include "gtest/gtest.h" - -namespace art { - -TEST(StringPrintfTest, HexSizeT) { - size_t size = 0x00107e59; - EXPECT_STREQ("00107e59", StringPrintf("%08zx", size).c_str()); - EXPECT_STREQ("0x00107e59", StringPrintf("0x%08zx", size).c_str()); -} - -} // namespace art diff --git a/runtime/base/time_utils.cc b/runtime/base/time_utils.cc index 57f198d7e5..3c09d5a36f 100644 --- a/runtime/base/time_utils.cc +++ b/runtime/base/time_utils.cc @@ -20,8 +20,9 @@ #include "time_utils.h" +#include "android-base/stringprintf.h" + #include "base/logging.h" -#include "base/stringprintf.h" #if defined(__APPLE__) #include <sys/time.h> @@ -29,6 +30,8 @@ namespace art { +using android::base::StringPrintf; + std::string PrettyDuration(uint64_t nano_duration, size_t max_fraction_digits) { if (nano_duration == 0) { return "0"; diff --git a/runtime/check_jni.cc b/runtime/check_jni.cc index 6c27bc61e4..1c3328e484 100644 --- a/runtime/check_jni.cc +++ b/runtime/check_jni.cc @@ -20,6 +20,8 @@ #include <sys/mman.h> #include <zlib.h> +#include "android-base/stringprintf.h" + #include "art_field-inl.h" #include "art_method-inl.h" #include "base/logging.h" @@ -42,6 +44,9 @@ namespace art { +using android::base::StringAppendF; +using android::base::StringPrintf; + /* * =========================================================================== * JNI function helpers diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc index 6565f6bf42..92da9b5449 100644 --- a/runtime/class_linker.cc +++ b/runtime/class_linker.cc @@ -28,6 +28,8 @@ #include <utility> #include <vector> +#include "android-base/stringprintf.h" + #include "art_field-inl.h" #include "art_method-inl.h" #include "base/arena_allocator.h" @@ -106,6 +108,8 @@ namespace art { +using android::base::StringPrintf; + static constexpr bool kSanityCheckObjects = kIsDebugBuild; static constexpr bool kVerifyArtMethodDeclaringClasses = kIsDebugBuild; diff --git a/runtime/common_runtime_test.cc b/runtime/common_runtime_test.cc index 8226e6049e..743fcc87eb 100644 --- a/runtime/common_runtime_test.cc +++ b/runtime/common_runtime_test.cc @@ -24,11 +24,12 @@ #include <stdlib.h> #include "../../external/icu/icu4c/source/common/unicode/uvernum.h" +#include "android-base/stringprintf.h" + #include "art_field-inl.h" #include "base/macros.h" #include "base/logging.h" #include "base/stl_util.h" -#include "base/stringprintf.h" #include "base/unix_file/fd_file.h" #include "class_linker.h" #include "compiler_callbacks.h" @@ -65,6 +66,8 @@ int main(int argc, char **argv) { namespace art { +using android::base::StringPrintf; + ScratchFile::ScratchFile() { // ANDROID_DATA needs to be set CHECK_NE(static_cast<char*>(nullptr), getenv("ANDROID_DATA")) << diff --git a/runtime/common_throws.cc b/runtime/common_throws.cc index 9f0dbbbdd0..c30272e114 100644 --- a/runtime/common_throws.cc +++ b/runtime/common_throws.cc @@ -18,6 +18,7 @@ #include <sstream> +#include "android-base/stringprintf.h" #include "ScopedLocalRef.h" #include "art_field-inl.h" @@ -37,6 +38,9 @@ namespace art { +using android::base::StringAppendV; +using android::base::StringPrintf; + static void AddReferrerLocation(std::ostream& os, ObjPtr<mirror::Class> referrer) REQUIRES_SHARED(Locks::mutator_lock_) { if (referrer != nullptr) { diff --git a/runtime/debugger.cc b/runtime/debugger.cc index e33966617f..df4413d52c 100644 --- a/runtime/debugger.cc +++ b/runtime/debugger.cc @@ -20,6 +20,8 @@ #include <set> +#include "android-base/stringprintf.h" + #include "arch/context.h" #include "art_field-inl.h" #include "art_method-inl.h" @@ -61,6 +63,8 @@ namespace art { +using android::base::StringPrintf; + // The key identifying the debugger to update instrumentation. static constexpr const char* kDbgInstrumentationKey = "Debugger"; diff --git a/runtime/dex_file.cc b/runtime/dex_file.cc index aa8fb38fca..7d704ad0cc 100644 --- a/runtime/dex_file.cc +++ b/runtime/dex_file.cc @@ -28,10 +28,11 @@ #include <sstream> #include <type_traits> +#include "android-base/stringprintf.h" + #include "base/enums.h" #include "base/file_magic.h" #include "base/logging.h" -#include "base/stringprintf.h" #include "base/systrace.h" #include "base/unix_file/fd_file.h" #include "dex_file-inl.h" @@ -45,6 +46,8 @@ namespace art { +using android::base::StringPrintf; + static_assert(sizeof(dex::StringIndex) == sizeof(uint32_t), "StringIndex size is wrong"); static_assert(std::is_trivially_copyable<dex::StringIndex>::value, "StringIndex not trivial"); static_assert(sizeof(dex::TypeIndex) == sizeof(uint16_t), "TypeIndex size is wrong"); diff --git a/runtime/dex_file_annotations.cc b/runtime/dex_file_annotations.cc index 52b9f114d2..9504e8bd29 100644 --- a/runtime/dex_file_annotations.cc +++ b/runtime/dex_file_annotations.cc @@ -18,6 +18,8 @@ #include <stdlib.h> +#include "android-base/stringprintf.h" + #include "art_field-inl.h" #include "art_method-inl.h" #include "class_linker-inl.h" @@ -31,6 +33,8 @@ namespace art { +using android::base::StringPrintf; + struct DexFile::AnnotationValue { JValue value_; uint8_t type_; diff --git a/runtime/dex_file_verifier.cc b/runtime/dex_file_verifier.cc index 07f0fcae56..a3ab9fa5bd 100644 --- a/runtime/dex_file_verifier.cc +++ b/runtime/dex_file_verifier.cc @@ -22,7 +22,8 @@ #include <limits> #include <memory> -#include "base/stringprintf.h" +#include "android-base/stringprintf.h" + #include "dex_file-inl.h" #include "experimental_flags.h" #include "leb128.h" @@ -32,6 +33,9 @@ namespace art { +using android::base::StringAppendV; +using android::base::StringPrintf; + static constexpr uint32_t kTypeIdLimit = std::numeric_limits<uint16_t>::max(); static bool IsValidOrNoTypeId(uint16_t low, uint16_t high) { diff --git a/runtime/dex_instruction.cc b/runtime/dex_instruction.cc index 99023893ba..7b8974fa5a 100644 --- a/runtime/dex_instruction.cc +++ b/runtime/dex_instruction.cc @@ -21,12 +21,15 @@ #include <iomanip> #include <sstream> -#include "base/stringprintf.h" +#include "android-base/stringprintf.h" + #include "dex_file-inl.h" #include "utils.h" namespace art { +using android::base::StringPrintf; + const char* const Instruction::kInstructionNames[] = { #define INSTRUCTION_NAME(o, c, pname, f, i, a, v) pname, #include "dex_instruction_list.h" diff --git a/runtime/elf_file.cc b/runtime/elf_file.cc index ee0f34002b..59b734f169 100644 --- a/runtime/elf_file.cc +++ b/runtime/elf_file.cc @@ -20,11 +20,11 @@ #include <sys/types.h> #include <unistd.h> +#include "android-base/stringprintf.h" #include "android-base/strings.h" #include "arch/instruction_set.h" #include "base/logging.h" -#include "base/stringprintf.h" #include "base/stl_util.h" #include "base/unix_file/fd_file.h" #include "elf_file_impl.h" @@ -34,6 +34,8 @@ namespace art { +using android::base::StringPrintf; + template <typename ElfTypes> ElfFileImpl<ElfTypes>::ElfFileImpl(File* file, bool writable, bool program_header_only, diff --git a/runtime/gc/accounting/space_bitmap.cc b/runtime/gc/accounting/space_bitmap.cc index f4d0bc7dbf..eb9f0395ac 100644 --- a/runtime/gc/accounting/space_bitmap.cc +++ b/runtime/gc/accounting/space_bitmap.cc @@ -16,8 +16,9 @@ #include "space_bitmap-inl.h" +#include "android-base/stringprintf.h" + #include "art_field-inl.h" -#include "base/stringprintf.h" #include "dex_file-inl.h" #include "mem_map.h" #include "mirror/object-inl.h" @@ -28,6 +29,8 @@ namespace art { namespace gc { namespace accounting { +using android::base::StringPrintf; + template<size_t kAlignment> size_t SpaceBitmap<kAlignment>::ComputeBitmapSize(uint64_t capacity) { const uint64_t kBytesCoveredPerWord = kAlignment * kBitsPerIntPtrT; diff --git a/runtime/gc/allocator/rosalloc.cc b/runtime/gc/allocator/rosalloc.cc index 2e4475f225..35a251fda8 100644 --- a/runtime/gc/allocator/rosalloc.cc +++ b/runtime/gc/allocator/rosalloc.cc @@ -16,6 +16,13 @@ #include "rosalloc.h" +#include <map> +#include <list> +#include <sstream> +#include <vector> + +#include "android-base/stringprintf.h" + #include "base/memory_tool.h" #include "base/mutex-inl.h" #include "gc/space/memory_tool_settings.h" @@ -26,15 +33,12 @@ #include "thread-inl.h" #include "thread_list.h" -#include <map> -#include <list> -#include <sstream> -#include <vector> - namespace art { namespace gc { namespace allocator { +using android::base::StringPrintf; + static constexpr bool kUsePrefetchDuringAllocRun = false; static constexpr bool kPrefetchNewRunDataByZeroing = false; static constexpr size_t kPrefetchStride = 64; diff --git a/runtime/gc/collector/garbage_collector.cc b/runtime/gc/collector/garbage_collector.cc index ed16854d66..01bcb7df19 100644 --- a/runtime/gc/collector/garbage_collector.cc +++ b/runtime/gc/collector/garbage_collector.cc @@ -18,6 +18,8 @@ #include "garbage_collector.h" +#include "android-base/stringprintf.h" + #include "base/dumpable.h" #include "base/histogram-inl.h" #include "base/logging.h" @@ -81,7 +83,7 @@ void GarbageCollector::ResetCumulativeStatistics() { } void GarbageCollector::Run(GcCause gc_cause, bool clear_soft_references) { - ScopedTrace trace(StringPrintf("%s %s GC", PrettyCause(gc_cause), GetName())); + ScopedTrace trace(android::base::StringPrintf("%s %s GC", PrettyCause(gc_cause), GetName())); Thread* self = Thread::Current(); uint64_t start_time = NanoTime(); Iteration* current_iteration = GetCurrentIteration(); diff --git a/runtime/gc/heap.cc b/runtime/gc/heap.cc index 3ed138c00e..34d82845dc 100644 --- a/runtime/gc/heap.cc +++ b/runtime/gc/heap.cc @@ -21,6 +21,8 @@ #include <unwind.h> // For GC verification. #include <vector> +#include "android-base/stringprintf.h" + #include "allocation_listener.h" #include "art_field-inl.h" #include "base/allocator.h" @@ -82,6 +84,8 @@ namespace art { namespace gc { +using android::base::StringPrintf; + static constexpr size_t kCollectorTransitionStressIterations = 0; static constexpr size_t kCollectorTransitionStressWait = 10 * 1000; // Microseconds // Minimum amount of remaining bytes before a concurrent GC is triggered. @@ -3919,7 +3923,7 @@ void Heap::RegisterNativeFree(JNIEnv* env, size_t bytes) { ScopedObjectAccess soa(env); env->ThrowNew(WellKnownClasses::java_lang_RuntimeException, StringPrintf("Attempted to free %zd native bytes with only %zd native bytes " - "registered as allocated", bytes, expected_size).c_str()); + "registered as allocated", bytes, expected_size).c_str()); break; } } while (!native_bytes_allocated_.CompareExchangeWeakRelaxed(expected_size, diff --git a/runtime/gc/space/image_space.cc b/runtime/gc/space/image_space.cc index 76f3692f41..e03958d717 100644 --- a/runtime/gc/space/image_space.cc +++ b/runtime/gc/space/image_space.cc @@ -22,6 +22,7 @@ #include <sys/types.h> #include <unistd.h> +#include "android-base/stringprintf.h" #include "android-base/strings.h" #include "art_method.h" @@ -45,6 +46,9 @@ namespace art { namespace gc { namespace space { +using android::base::StringAppendF; +using android::base::StringPrintf; + Atomic<uint32_t> ImageSpace::bitmap_index_(0); ImageSpace::ImageSpace(const std::string& image_filename, diff --git a/runtime/gc/space/image_space_fs.h b/runtime/gc/space/image_space_fs.h index fa941c0376..5999548d2b 100644 --- a/runtime/gc/space/image_space_fs.h +++ b/runtime/gc/space/image_space_fs.h @@ -20,9 +20,10 @@ #include <dirent.h> #include <dlfcn.h> +#include "android-base/stringprintf.h" + #include "base/logging.h" #include "base/macros.h" -#include "base/stringprintf.h" #include "base/unix_file/fd_file.h" #include "globals.h" #include "os.h" @@ -56,7 +57,7 @@ static void DeleteDirectoryContents(const std::string& dir, bool recurse) { continue; } // We only want to delete regular files and symbolic links. - std::string file = StringPrintf("%s/%s", dir.c_str(), name); + std::string file = android::base::StringPrintf("%s/%s", dir.c_str(), name); if (de->d_type != DT_REG && de->d_type != DT_LNK) { if (de->d_type == DT_DIR) { if (recurse) { diff --git a/runtime/gc/space/malloc_space.cc b/runtime/gc/space/malloc_space.cc index b1572cc7ea..a186f4c922 100644 --- a/runtime/gc/space/malloc_space.cc +++ b/runtime/gc/space/malloc_space.cc @@ -16,6 +16,8 @@ #include "malloc_space.h" +#include "android-base/stringprintf.h" + #include "gc/accounting/card_table-inl.h" #include "gc/accounting/space_bitmap-inl.h" #include "gc/heap.h" @@ -33,6 +35,8 @@ namespace art { namespace gc { namespace space { +using android::base::StringPrintf; + size_t MallocSpace::bitmap_index_ = 0; MallocSpace::MallocSpace(const std::string& name, MemMap* mem_map, diff --git a/runtime/hprof/hprof.cc b/runtime/hprof/hprof.cc index 8cbe49166a..fe6a6e9140 100644 --- a/runtime/hprof/hprof.cc +++ b/runtime/hprof/hprof.cc @@ -37,9 +37,10 @@ #include <set> +#include "android-base/stringprintf.h" + #include "art_field-inl.h" #include "base/logging.h" -#include "base/stringprintf.h" #include "base/time_utils.h" #include "base/unix_file/fd_file.h" #include "class_linker.h" @@ -797,8 +798,9 @@ class Hprof : public SingleRootVisitor { file->Erase(); } if (!okay) { - std::string msg(StringPrintf("Couldn't dump heap; writing \"%s\" failed: %s", - filename_.c_str(), strerror(errno))); + std::string msg(android::base::StringPrintf("Couldn't dump heap; writing \"%s\" failed: %s", + filename_.c_str(), + strerror(errno))); ThrowRuntimeException("%s", msg.c_str()); LOG(ERROR) << msg; } diff --git a/runtime/indirect_reference_table-inl.h b/runtime/indirect_reference_table-inl.h index 9c634fa861..0e66ae96b5 100644 --- a/runtime/indirect_reference_table-inl.h +++ b/runtime/indirect_reference_table-inl.h @@ -19,6 +19,8 @@ #include "indirect_reference_table.h" +#include "android-base/stringprintf.h" + #include "base/dumpable.h" #include "gc_root-inl.h" #include "obj_ptr-inl.h" @@ -38,15 +40,15 @@ inline bool IndirectReferenceTable::GetChecked(IndirectRef iref) const { return false; } if (UNLIKELY(GetIndirectRefKind(iref) == kHandleScopeOrInvalid)) { - AbortIfNoCheckJNI(StringPrintf("JNI ERROR (app bug): invalid %s %p", - GetIndirectRefKindString(kind_), - iref)); + AbortIfNoCheckJNI(android::base::StringPrintf("JNI ERROR (app bug): invalid %s %p", + GetIndirectRefKindString(kind_), + iref)); return false; } const uint32_t top_index = segment_state_.top_index; uint32_t idx = ExtractIndex(iref); if (UNLIKELY(idx >= top_index)) { - std::string msg = StringPrintf( + std::string msg = android::base::StringPrintf( "JNI ERROR (app bug): accessed stale %s %p (index %d in a table of size %d)", GetIndirectRefKindString(kind_), iref, @@ -56,9 +58,9 @@ inline bool IndirectReferenceTable::GetChecked(IndirectRef iref) const { return false; } if (UNLIKELY(table_[idx].GetReference()->IsNull())) { - AbortIfNoCheckJNI(StringPrintf("JNI ERROR (app bug): accessed deleted %s %p", - GetIndirectRefKindString(kind_), - iref)); + AbortIfNoCheckJNI(android::base::StringPrintf("JNI ERROR (app bug): accessed deleted %s %p", + GetIndirectRefKindString(kind_), + iref)); return false; } if (UNLIKELY(!CheckEntry("use", iref, idx))) { @@ -73,7 +75,7 @@ inline bool IndirectReferenceTable::CheckEntry(const char* what, uint32_t idx) const { IndirectRef checkRef = ToIndirectRef(idx); if (UNLIKELY(checkRef != iref)) { - std::string msg = StringPrintf( + std::string msg = android::base::StringPrintf( "JNI ERROR (app bug): attempt to %s stale %s %p (should be %p)", what, GetIndirectRefKindString(kind_), diff --git a/runtime/indirect_reference_table_test.cc b/runtime/indirect_reference_table_test.cc index 722b411f97..bf4cab24cc 100644 --- a/runtime/indirect_reference_table_test.cc +++ b/runtime/indirect_reference_table_test.cc @@ -16,6 +16,8 @@ #include "indirect_reference_table-inl.h" +#include "android-base/stringprintf.h" + #include "class_linker-inl.h" #include "common_runtime_test.h" #include "mirror/object-inl.h" @@ -23,6 +25,8 @@ namespace art { +using android::base::StringPrintf; + class IndirectReferenceTableTest : public CommonRuntimeTest {}; static void CheckDump(IndirectReferenceTable* irt, size_t num_objects, size_t num_unique) diff --git a/runtime/instrumentation.cc b/runtime/instrumentation.cc index 870d1ae9b5..03ef962f05 100644 --- a/runtime/instrumentation.cc +++ b/runtime/instrumentation.cc @@ -1098,10 +1098,14 @@ TwoWordReturn Instrumentation::PopInstrumentationStackFrame(Thread* self, uintpt Dbg::IsForcedInterpreterNeededForUpcall(self, visitor.caller)); if (deoptimize && Runtime::Current()->IsDeoptimizeable(*return_pc)) { if (kVerboseInstrumentation) { - LOG(INFO) << StringPrintf("Deoptimizing %s by returning from %s with result %#" PRIx64 " in ", - visitor.caller->PrettyMethod().c_str(), - method->PrettyMethod().c_str(), - return_value.GetJ()) << *self; + LOG(INFO) << "Deoptimizing " + << visitor.caller->PrettyMethod() + << " by returning from " + << method->PrettyMethod() + << " with result " + << std::hex << return_value.GetJ() << std::dec + << " in " + << *self; } self->PushDeoptimizationContext(return_value, return_shorty == 'L', diff --git a/runtime/interpreter/interpreter_common.cc b/runtime/interpreter/interpreter_common.cc index 22da07dd24..a09e71b6c0 100644 --- a/runtime/interpreter/interpreter_common.cc +++ b/runtime/interpreter/interpreter_common.cc @@ -676,7 +676,7 @@ void AbortTransactionV(Thread* self, const char* fmt, va_list args) { CHECK(Runtime::Current()->IsActiveTransaction()); // Constructs abort message. std::string abort_msg; - StringAppendV(&abort_msg, fmt, args); + android::base::StringAppendV(&abort_msg, fmt, args); // Throws an exception so we can abort the transaction and rollback every change. Runtime::Current()->AbortTransactionAndThrowAbortError(self, abort_msg); } diff --git a/runtime/interpreter/interpreter_common.h b/runtime/interpreter/interpreter_common.h index c9a5b44c54..2e850642e4 100644 --- a/runtime/interpreter/interpreter_common.h +++ b/runtime/interpreter/interpreter_common.h @@ -25,6 +25,8 @@ #include <sstream> #include <atomic> +#include "android-base/stringprintf.h" + #include "art_field-inl.h" #include "art_method-inl.h" #include "base/enums.h" @@ -430,12 +432,12 @@ static inline void TraceExecution(const ShadowFrame& shadow_frame, const Instruc #define TRACE_LOG std::cerr std::ostringstream oss; oss << shadow_frame.GetMethod()->PrettyMethod() - << StringPrintf("\n0x%x: ", dex_pc) + << android::base::StringPrintf("\n0x%x: ", dex_pc) << inst->DumpString(shadow_frame.GetMethod()->GetDexFile()) << "\n"; for (uint32_t i = 0; i < shadow_frame.NumberOfVRegs(); ++i) { uint32_t raw_value = shadow_frame.GetVReg(i); ObjPtr<mirror::Object> ref_value = shadow_frame.GetVRegReference(i); - oss << StringPrintf(" vreg%u=0x%08X", i, raw_value); + oss << android::base::StringPrintf(" vreg%u=0x%08X", i, raw_value); if (ref_value != nullptr) { if (ref_value->GetClass()->IsStringClass() && !ref_value->AsString()->IsValueNull()) { diff --git a/runtime/interpreter/unstarted_runtime.cc b/runtime/interpreter/unstarted_runtime.cc index a5b1038d5a..7dd3d3db4d 100644 --- a/runtime/interpreter/unstarted_runtime.cc +++ b/runtime/interpreter/unstarted_runtime.cc @@ -25,6 +25,7 @@ #include <locale> #include <unordered_map> +#include "android-base/stringprintf.h" #include "ScopedLocalRef.h" #include "art_method-inl.h" @@ -56,6 +57,9 @@ namespace art { namespace interpreter { +using android::base::StringAppendV; +using android::base::StringPrintf; + static void AbortTransactionOrFail(Thread* self, const char* fmt, ...) __attribute__((__format__(__printf__, 2, 3))) REQUIRES_SHARED(Locks::mutator_lock_); diff --git a/runtime/java_vm_ext.cc b/runtime/java_vm_ext.cc index caf705a9cb..f80c43d80c 100644 --- a/runtime/java_vm_ext.cc +++ b/runtime/java_vm_ext.cc @@ -18,6 +18,8 @@ #include <dlfcn.h> +#include "android-base/stringprintf.h" + #include "art_method.h" #include "base/dumpable.h" #include "base/mutex.h" @@ -42,6 +44,9 @@ namespace art { +using android::base::StringAppendF; +using android::base::StringAppendV; + static constexpr size_t kGlobalsMax = 51200; // Arbitrary sanity check. (Must fit in 16 bits.) static constexpr size_t kWeakGlobalsMax = 51200; // Arbitrary sanity check. (Must fit in 16 bits.) diff --git a/runtime/jdwp/jdwp_adb.cc b/runtime/jdwp/jdwp_adb.cc index e9d6d079c1..0eff2ab47b 100644 --- a/runtime/jdwp/jdwp_adb.cc +++ b/runtime/jdwp/jdwp_adb.cc @@ -20,8 +20,9 @@ #include <sys/un.h> #include <unistd.h> +#include "android-base/stringprintf.h" + #include "base/logging.h" -#include "base/stringprintf.h" #include "jdwp/jdwp_priv.h" #ifdef ART_TARGET_ANDROID @@ -52,6 +53,8 @@ namespace art { namespace JDWP { +using android::base::StringPrintf; + struct JdwpAdbState : public JdwpNetStateBase { public: explicit JdwpAdbState(JdwpState* state) : JdwpNetStateBase(state) { diff --git a/runtime/jdwp/jdwp_event.cc b/runtime/jdwp/jdwp_event.cc index 5574a117a7..172f52a974 100644 --- a/runtime/jdwp/jdwp_event.cc +++ b/runtime/jdwp/jdwp_event.cc @@ -21,10 +21,11 @@ #include <string.h> #include <unistd.h> +#include "android-base/stringprintf.h" + #include "art_field-inl.h" #include "art_method-inl.h" #include "base/logging.h" -#include "base/stringprintf.h" #include "debugger.h" #include "jdwp/jdwp_constants.h" #include "jdwp/jdwp_expand_buf.h" @@ -103,6 +104,8 @@ namespace art { namespace JDWP { +using android::base::StringPrintf; + /* * Stuff to compare against when deciding if a mod matches. Only the * values for mods valid for the event being evaluated will be filled in. diff --git a/runtime/jdwp/jdwp_handler.cc b/runtime/jdwp/jdwp_handler.cc index 0f2d188bca..964c5679d7 100644 --- a/runtime/jdwp/jdwp_handler.cc +++ b/runtime/jdwp/jdwp_handler.cc @@ -20,11 +20,12 @@ #include <memory> #include <string> +#include "android-base/stringprintf.h" + #include "atomic.h" #include "base/hex_dump.h" #include "base/logging.h" #include "base/macros.h" -#include "base/stringprintf.h" #include "debugger.h" #include "jdwp/jdwp_constants.h" #include "jdwp/jdwp_event.h" @@ -39,6 +40,8 @@ namespace art { namespace JDWP { +using android::base::StringPrintf; + std::string DescribeField(const FieldId& field_id) { return StringPrintf("%#" PRIx64 " (%s)", field_id, Dbg::GetFieldName(field_id).c_str()); } diff --git a/runtime/jdwp/jdwp_main.cc b/runtime/jdwp/jdwp_main.cc index e3bf3e5a9d..7707ba4932 100644 --- a/runtime/jdwp/jdwp_main.cc +++ b/runtime/jdwp/jdwp_main.cc @@ -20,6 +20,8 @@ #include <time.h> #include <unistd.h> +#include "android-base/stringprintf.h" + #include "atomic.h" #include "base/logging.h" #include "base/time_utils.h" @@ -31,6 +33,8 @@ namespace art { namespace JDWP { +using android::base::StringPrintf; + static void* StartJdwpThread(void* arg); /* diff --git a/runtime/jdwp/jdwp_request.cc b/runtime/jdwp/jdwp_request.cc index 18f40a143c..6af267e674 100644 --- a/runtime/jdwp/jdwp_request.cc +++ b/runtime/jdwp/jdwp_request.cc @@ -18,7 +18,8 @@ #include <inttypes.h> -#include "base/stringprintf.h" +#include "android-base/stringprintf.h" + #include "jdwp/jdwp_priv.h" namespace art { @@ -100,7 +101,7 @@ MethodId Request::ReadMethodId() { ObjectId Request::ReadObjectId(const char* specific_kind) { ObjectId id = Read8BE(); - VLOG(jdwp) << StringPrintf(" %s id %#" PRIx64, specific_kind, id); + VLOG(jdwp) << android::base::StringPrintf(" %s id %#" PRIx64, specific_kind, id); return id; } diff --git a/runtime/jdwp/jdwp_socket.cc b/runtime/jdwp/jdwp_socket.cc index 3be7fd6428..97662f0727 100644 --- a/runtime/jdwp/jdwp_socket.cc +++ b/runtime/jdwp/jdwp_socket.cc @@ -26,8 +26,9 @@ #include <sys/types.h> #include <unistd.h> +#include "android-base/stringprintf.h" + #include "base/logging.h" -#include "base/stringprintf.h" #include "jdwp/jdwp_priv.h" namespace art { @@ -500,7 +501,7 @@ bool JdwpSocketState::ProcessIncoming() { */ if (IsAwaitingHandshake()) { if (memcmp(input_buffer_, kMagicHandshake, kMagicHandshakeLen) != 0) { - LOG(ERROR) << StringPrintf("ERROR: bad handshake '%.14s'", input_buffer_); + LOG(ERROR) << android::base::StringPrintf("ERROR: bad handshake '%.14s'", input_buffer_); goto fail; } diff --git a/runtime/jni_env_ext.cc b/runtime/jni_env_ext.cc index 342e0d2a53..5a3fafa726 100644 --- a/runtime/jni_env_ext.cc +++ b/runtime/jni_env_ext.cc @@ -19,6 +19,8 @@ #include <algorithm> #include <vector> +#include "android-base/stringprintf.h" + #include "check_jni.h" #include "indirect_reference_table.h" #include "java_vm_ext.h" @@ -30,6 +32,8 @@ namespace art { +using android::base::StringPrintf; + static constexpr size_t kMonitorsInitial = 32; // Arbitrary. static constexpr size_t kMonitorsMax = 4096; // Arbitrary sanity check. diff --git a/runtime/jni_internal_test.cc b/runtime/jni_internal_test.cc index a421c340ae..4da5e23502 100644 --- a/runtime/jni_internal_test.cc +++ b/runtime/jni_internal_test.cc @@ -16,6 +16,8 @@ #include "jni_internal.h" +#include "android-base/stringprintf.h" + #include "art_method-inl.h" #include "common_compiler_test.h" #include "indirect_reference_table.h" @@ -27,6 +29,8 @@ namespace art { +using android::base::StringPrintf; + // TODO: Convert to CommonRuntimeTest. Currently MakeExecutable is used. class JniInternalTest : public CommonCompilerTest { protected: diff --git a/runtime/mem_map.cc b/runtime/mem_map.cc index 6da72e4625..19a65bb27e 100644 --- a/runtime/mem_map.cc +++ b/runtime/mem_map.cc @@ -24,7 +24,8 @@ #include <memory> #include <sstream> -#include "base/stringprintf.h" +#include "android-base/stringprintf.h" + #include "base/unix_file/fd_file.h" #include "os.h" #include "thread-inl.h" @@ -42,6 +43,8 @@ namespace art { +using android::base::StringPrintf; + static std::ostream& operator<<( std::ostream& os, std::pair<BacktraceMap::const_iterator, BacktraceMap::const_iterator> iters) { diff --git a/runtime/method_handles.cc b/runtime/method_handles.cc index 3c22d7f656..da510ceb5c 100644 --- a/runtime/method_handles.cc +++ b/runtime/method_handles.cc @@ -14,9 +14,10 @@ * limitations under the License. */ -#include "method_handles.h" - #include "method_handles-inl.h" + +#include "android-base/stringprintf.h" + #include "jvalue.h" #include "jvalue-inl.h" #include "reflection.h" @@ -25,6 +26,8 @@ namespace art { +using android::base::StringPrintf; + namespace { #define PRIMITIVES_LIST(V) \ diff --git a/runtime/mirror/array-inl.h b/runtime/mirror/array-inl.h index 7d7c1d7cfd..a5db0c0a8a 100644 --- a/runtime/mirror/array-inl.h +++ b/runtime/mirror/array-inl.h @@ -19,10 +19,11 @@ #include "array.h" +#include "android-base/stringprintf.h" + #include "base/bit_utils.h" #include "base/casts.h" #include "base/logging.h" -#include "base/stringprintf.h" #include "class-inl.h" #include "gc/heap-inl.h" #include "obj_ptr-inl.h" @@ -167,9 +168,9 @@ inline Array* Array::Alloc(Thread* self, #else // 32-bit. if (UNLIKELY(size == 0)) { - self->ThrowOutOfMemoryError(StringPrintf("%s of length %d would overflow", - array_class->PrettyDescriptor().c_str(), - component_count).c_str()); + self->ThrowOutOfMemoryError(android::base::StringPrintf("%s of length %d would overflow", + array_class->PrettyDescriptor().c_str(), + component_count).c_str()); return nullptr; } #endif diff --git a/runtime/mirror/array.cc b/runtime/mirror/array.cc index 8afa4aa744..cc548b9cc8 100644 --- a/runtime/mirror/array.cc +++ b/runtime/mirror/array.cc @@ -14,7 +14,7 @@ * limitations under the License. */ -#include "array.h" +#include "array-inl.h" #include "class.h" #include "class-inl.h" @@ -23,7 +23,6 @@ #include "dex_file-inl.h" #include "gc/accounting/card_table-inl.h" #include "object-inl.h" -#include "object_array.h" #include "object_array-inl.h" #include "handle_scope-inl.h" #include "thread.h" @@ -32,6 +31,8 @@ namespace art { namespace mirror { +using android::base::StringPrintf; + // Create a multi-dimensional array of Objects or primitive types. // // We have to generate the names for X[], X[][], X[][][], and so on. The diff --git a/runtime/mirror/class.cc b/runtime/mirror/class.cc index a862c9798a..c1565df76b 100644 --- a/runtime/mirror/class.cc +++ b/runtime/mirror/class.cc @@ -16,6 +16,8 @@ #include "class.h" +#include "android-base/stringprintf.h" + #include "art_field-inl.h" #include "art_method-inl.h" #include "class_ext.h" @@ -40,6 +42,8 @@ namespace art { namespace mirror { +using android::base::StringPrintf; + GcRoot<Class> Class::java_lang_Class_; void Class::SetClassClass(ObjPtr<Class> java_lang_Class) { diff --git a/runtime/mirror/object_array-inl.h b/runtime/mirror/object_array-inl.h index 0fdf1323eb..3e04bf6474 100644 --- a/runtime/mirror/object_array-inl.h +++ b/runtime/mirror/object_array-inl.h @@ -17,12 +17,13 @@ #ifndef ART_RUNTIME_MIRROR_OBJECT_ARRAY_INL_H_ #define ART_RUNTIME_MIRROR_OBJECT_ARRAY_INL_H_ +#include "object_array.h" + #include <string> -#include "object_array.h" +#include "android-base/stringprintf.h" #include "array-inl.h" -#include "base/stringprintf.h" #include "gc/heap.h" #include "mirror/class.h" #include "obj_ptr-inl.h" @@ -330,13 +331,15 @@ inline void ObjectArray<T>::AssignableCheckingMemcpy(int32_t dst_pos, std::string actualSrcType(mirror::Object::PrettyTypeOf(o)); std::string dstType(PrettyTypeOf()); Thread* self = Thread::Current(); + std::string msg = android::base::StringPrintf( + "source[%d] of type %s cannot be stored in destination array of type %s", + src_pos + i, + actualSrcType.c_str(), + dstType.c_str()); if (throw_exception) { - self->ThrowNewExceptionF("Ljava/lang/ArrayStoreException;", - "source[%d] of type %s cannot be stored in destination array of type %s", - src_pos + i, actualSrcType.c_str(), dstType.c_str()); + self->ThrowNewException("Ljava/lang/ArrayStoreException;", msg.c_str()); } else { - LOG(FATAL) << StringPrintf("source[%d] of type %s cannot be stored in destination array of type %s", - src_pos + i, actualSrcType.c_str(), dstType.c_str()); + LOG(FATAL) << msg; } } } diff --git a/runtime/mirror/string-inl.h b/runtime/mirror/string-inl.h index 95516ace9f..9b8445dc9e 100644 --- a/runtime/mirror/string-inl.h +++ b/runtime/mirror/string-inl.h @@ -16,6 +16,10 @@ #ifndef ART_RUNTIME_MIRROR_STRING_INL_H_ #define ART_RUNTIME_MIRROR_STRING_INL_H_ +#include "string.h" + +#include "android-base/stringprintf.h" + #include "array.h" #include "base/bit_utils.h" #include "class.h" @@ -24,7 +28,6 @@ #include "globals.h" #include "intern_table.h" #include "runtime.h" -#include "string.h" #include "thread.h" #include "utf.h" #include "utils.h" @@ -228,9 +231,10 @@ inline String* String::Alloc(Thread* self, int32_t utf16_length_with_flag, "kObjectAlignment must be at least as big as Java char alignment"); const size_t max_length = RoundDown(max_alloc_length, kObjectAlignment / block_size); if (UNLIKELY(length > max_length)) { - self->ThrowOutOfMemoryError(StringPrintf("%s of length %d would overflow", - Class::PrettyDescriptor(string_class).c_str(), - static_cast<int>(length)).c_str()); + self->ThrowOutOfMemoryError( + android::base::StringPrintf("%s of length %d would overflow", + Class::PrettyDescriptor(string_class).c_str(), + static_cast<int>(length)).c_str()); return nullptr; } diff --git a/runtime/mirror/throwable.cc b/runtime/mirror/throwable.cc index ade4e87afd..e50409f2c5 100644 --- a/runtime/mirror/throwable.cc +++ b/runtime/mirror/throwable.cc @@ -16,6 +16,8 @@ #include "throwable.h" +#include "android-base/stringprintf.h" + #include "art_method-inl.h" #include "base/enums.h" #include "class-inl.h" @@ -31,6 +33,8 @@ namespace art { namespace mirror { +using android::base::StringPrintf; + GcRoot<Class> Throwable::java_lang_Throwable_; void Throwable::SetDetailMessage(ObjPtr<String> new_detail_message) { diff --git a/runtime/monitor.cc b/runtime/monitor.cc index e7de7e64c6..222eb5c556 100644 --- a/runtime/monitor.cc +++ b/runtime/monitor.cc @@ -18,6 +18,8 @@ #include <vector> +#include "android-base/stringprintf.h" + #include "art_method-inl.h" #include "base/mutex.h" #include "base/stl_util.h" @@ -38,6 +40,8 @@ namespace art { +using android::base::StringPrintf; + static constexpr uint64_t kLongWaitMs = 100; /* diff --git a/runtime/native/dalvik_system_DexFile.cc b/runtime/native/dalvik_system_DexFile.cc index 1a77072921..cd0e55f261 100644 --- a/runtime/native/dalvik_system_DexFile.cc +++ b/runtime/native/dalvik_system_DexFile.cc @@ -18,9 +18,10 @@ #include <sstream> +#include "android-base/stringprintf.h" + #include "base/logging.h" #include "base/stl_util.h" -#include "base/stringprintf.h" #include "class_linker.h" #include "common_throws.h" #include "compiler_filter.h" @@ -43,6 +44,8 @@ namespace art { +using android::base::StringPrintf; + static bool ConvertJavaArrayToDexFiles( JNIEnv* env, jobject arrayObject, diff --git a/runtime/native/dalvik_system_InMemoryDexClassLoader_DexData.cc b/runtime/native/dalvik_system_InMemoryDexClassLoader_DexData.cc index db245aa0d8..981be68199 100644 --- a/runtime/native/dalvik_system_InMemoryDexClassLoader_DexData.cc +++ b/runtime/native/dalvik_system_InMemoryDexClassLoader_DexData.cc @@ -16,6 +16,8 @@ #include "dalvik_system_InMemoryDexClassLoader_DexData.h" +#include "android-base/stringprintf.h" + #include "class_linker.h" #include "common_throws.h" #include "dex_file.h" @@ -29,6 +31,8 @@ namespace art { +using android::base::StringPrintf; + static std::unique_ptr<MemMap> AllocateDexMemoryMap(JNIEnv* env, jint start, jint end) { if (end <= start) { ScopedObjectAccess soa(env); diff --git a/runtime/native/dalvik_system_VMRuntime.cc b/runtime/native/dalvik_system_VMRuntime.cc index 3058df442c..1af861929e 100644 --- a/runtime/native/dalvik_system_VMRuntime.cc +++ b/runtime/native/dalvik_system_VMRuntime.cc @@ -27,6 +27,8 @@ extern "C" void android_set_application_target_sdk_version(uint32_t version); #include "toStringArray.h" #pragma GCC diagnostic pop +#include "android-base/stringprintf.h" + #include "art_method-inl.h" #include "arch/instruction_set.h" #include "base/enums.h" @@ -54,6 +56,8 @@ extern "C" void android_set_application_target_sdk_version(uint32_t version); namespace art { +using android::base::StringPrintf; + static jfloat VMRuntime_getTargetHeapUtilization(JNIEnv*, jobject) { return Runtime::Current()->GetHeap()->GetTargetHeapUtilization(); } diff --git a/runtime/native/dalvik_system_ZygoteHooks.cc b/runtime/native/dalvik_system_ZygoteHooks.cc index a78909b879..10fc90bc27 100644 --- a/runtime/native/dalvik_system_ZygoteHooks.cc +++ b/runtime/native/dalvik_system_ZygoteHooks.cc @@ -18,6 +18,8 @@ #include <stdlib.h> +#include "android-base/stringprintf.h" + #include "arch/instruction_set.h" #include "debugger.h" #include "java_vm_ext.h" @@ -37,6 +39,8 @@ namespace art { +using android::base::StringPrintf; + static void EnableDebugger() { #if defined(__linux__) // To let a non-privileged gdbserver attach to this diff --git a/runtime/native/java_lang_reflect_Executable.cc b/runtime/native/java_lang_reflect_Executable.cc index 73b81a71f8..ee59c4a9e2 100644 --- a/runtime/native/java_lang_reflect_Executable.cc +++ b/runtime/native/java_lang_reflect_Executable.cc @@ -16,6 +16,8 @@ #include "java_lang_reflect_Executable.h" +#include "android-base/stringprintf.h" + #include "art_method-inl.h" #include "dex_file_annotations.h" #include "handle.h" @@ -30,6 +32,8 @@ namespace art { +using android::base::StringPrintf; + static jobjectArray Executable_getDeclaredAnnotationsNative(JNIEnv* env, jobject javaMethod) { ScopedFastNativeObjectAccess soa(env); ArtMethod* method = ArtMethod::FromReflectedMethod(soa, javaMethod); diff --git a/runtime/native/java_lang_reflect_Field.cc b/runtime/native/java_lang_reflect_Field.cc index 6206948225..374eeb5806 100644 --- a/runtime/native/java_lang_reflect_Field.cc +++ b/runtime/native/java_lang_reflect_Field.cc @@ -16,6 +16,8 @@ #include "java_lang_reflect_Field.h" +#include "android-base/stringprintf.h" + #include "class_linker.h" #include "class_linker-inl.h" #include "common_throws.h" @@ -30,6 +32,8 @@ namespace art { +using android::base::StringPrintf; + template<bool kIsSet> ALWAYS_INLINE inline static bool VerifyFieldAccess(Thread* self, ObjPtr<mirror::Field> field, diff --git a/runtime/native/java_lang_reflect_Parameter.cc b/runtime/native/java_lang_reflect_Parameter.cc index 16164d2f9b..0bb9e382d3 100644 --- a/runtime/native/java_lang_reflect_Parameter.cc +++ b/runtime/native/java_lang_reflect_Parameter.cc @@ -16,6 +16,8 @@ #include "java_lang_reflect_Parameter.h" +#include "android-base/stringprintf.h" + #include "art_method-inl.h" #include "common_throws.h" #include "dex_file-inl.h" @@ -26,6 +28,8 @@ namespace art { +using android::base::StringPrintf; + static jobject Parameter_getAnnotationNative(JNIEnv* env, jclass, jobject javaMethod, diff --git a/runtime/native_stack_dump.cc b/runtime/native_stack_dump.cc index 5565565c7b..7460d622b5 100644 --- a/runtime/native_stack_dump.cc +++ b/runtime/native_stack_dump.cc @@ -37,10 +37,11 @@ #include <sys/time.h> #include <sys/types.h> +#include "android-base/stringprintf.h" + #include "arch/instruction_set.h" #include "base/memory_tool.h" #include "base/mutex.h" -#include "base/stringprintf.h" #include "base/unix_file/fd_file.h" #include "oat_quick_method_header.h" #include "os.h" @@ -53,6 +54,8 @@ namespace art { #if defined(__linux__) +using android::base::StringPrintf; + static constexpr bool kUseAddr2line = !kIsTargetBuild; ALWAYS_INLINE diff --git a/runtime/oat.cc b/runtime/oat.cc index aab0e81047..cebe765369 100644 --- a/runtime/oat.cc +++ b/runtime/oat.cc @@ -19,12 +19,15 @@ #include <string.h> #include <zlib.h> +#include "android-base/stringprintf.h" + #include "arch/instruction_set_features.h" #include "base/bit_utils.h" -#include "base/stringprintf.h" namespace art { +using android::base::StringPrintf; + constexpr uint8_t OatHeader::kOatMagic[4]; constexpr uint8_t OatHeader::kOatVersion[4]; constexpr const char OatHeader::kTrueValue[]; diff --git a/runtime/oat_file.cc b/runtime/oat_file.cc index bdf8b0e65d..0bf713679b 100644 --- a/runtime/oat_file.cc +++ b/runtime/oat_file.cc @@ -32,6 +32,8 @@ #include "android/dlext.h" #endif +#include "android-base/stringprintf.h" + #include "art_method-inl.h" #include "base/bit_vector.h" #include "base/enums.h" @@ -58,6 +60,8 @@ namespace art { +using android::base::StringPrintf; + // Whether OatFile::Open will try dlopen. Fallback is our own ELF loader. static constexpr bool kUseDlopen = true; diff --git a/runtime/oat_file_assistant.cc b/runtime/oat_file_assistant.cc index 7f7b1b5b06..ee7cf9deef 100644 --- a/runtime/oat_file_assistant.cc +++ b/runtime/oat_file_assistant.cc @@ -23,7 +23,6 @@ #include "android-base/strings.h" #include "base/logging.h" -#include "base/stringprintf.h" #include "compiler_filter.h" #include "class_linker.h" #include "gc/heap.h" diff --git a/runtime/oat_file_manager.cc b/runtime/oat_file_manager.cc index 5641459f41..33bd0f311d 100644 --- a/runtime/oat_file_manager.cc +++ b/runtime/oat_file_manager.cc @@ -20,6 +20,8 @@ #include <queue> #include <vector> +#include "android-base/stringprintf.h" + #include "base/logging.h" #include "base/stl_util.h" #include "base/systrace.h" @@ -38,6 +40,8 @@ namespace art { +using android::base::StringPrintf; + // If true, then we attempt to load the application image if it exists. static constexpr bool kEnableAppImage = true; diff --git a/runtime/openjdkjvmti/ti_redefine.cc b/runtime/openjdkjvmti/ti_redefine.cc index d0349b987f..e85286c969 100644 --- a/runtime/openjdkjvmti/ti_redefine.cc +++ b/runtime/openjdkjvmti/ti_redefine.cc @@ -33,6 +33,8 @@ #include <limits> +#include "android-base/stringprintf.h" + #include "art_jvmti.h" #include "base/logging.h" #include "events-inl.h" @@ -49,13 +51,15 @@ namespace openjdkjvmti { +using android::base::StringPrintf; + // Moves dex data to an anonymous, read-only mmap'd region. std::unique_ptr<art::MemMap> Redefiner::MoveDataToMemMap(const std::string& original_location, jint data_len, unsigned char* dex_data, std::string* error_msg) { std::unique_ptr<art::MemMap> map(art::MemMap::MapAnonymous( - art::StringPrintf("%s-transformed", original_location.c_str()).c_str(), + StringPrintf("%s-transformed", original_location.c_str()).c_str(), nullptr, data_len, PROT_READ|PROT_WRITE, @@ -246,9 +250,9 @@ art::mirror::LongArray* Redefiner::AllocateDexFileCookie( } void Redefiner::RecordFailure(jvmtiError result, const std::string& error_msg) { - *error_msg_ = art::StringPrintf("Unable to perform redefinition of '%s': %s", - class_sig_, - error_msg.c_str()); + *error_msg_ = StringPrintf("Unable to perform redefinition of '%s': %s", + class_sig_, + error_msg.c_str()); result_ = result; } diff --git a/runtime/parsed_options_test.cc b/runtime/parsed_options_test.cc index 5b90c6adad..8948c710db 100644 --- a/runtime/parsed_options_test.cc +++ b/runtime/parsed_options_test.cc @@ -19,7 +19,6 @@ #include <memory> #include "arch/instruction_set.h" -#include "base/stringprintf.h" #include "common_runtime_test.h" namespace art { diff --git a/runtime/plugin.cc b/runtime/plugin.cc index 481b1caa15..731967c738 100644 --- a/runtime/plugin.cc +++ b/runtime/plugin.cc @@ -17,11 +17,15 @@ #include "plugin.h" #include <dlfcn.h> -#include "base/stringprintf.h" + +#include "android-base/stringprintf.h" + #include "base/logging.h" namespace art { +using android::base::StringPrintf; + const char* PLUGIN_INITIALIZATION_FUNCTION_NAME = "ArtPlugin_Initialize"; const char* PLUGIN_DEINITIALIZATION_FUNCTION_NAME = "ArtPlugin_Deinitialize"; diff --git a/runtime/reference_table.cc b/runtime/reference_table.cc index 1c975a453a..d8b9dcc016 100644 --- a/runtime/reference_table.cc +++ b/runtime/reference_table.cc @@ -16,6 +16,8 @@ #include "reference_table.h" +#include "android-base/stringprintf.h" + #include "base/mutex.h" #include "indirect_reference_table.h" #include "mirror/array.h" @@ -30,6 +32,9 @@ namespace art { +using android::base::StringAppendF; +using android::base::StringPrintf; + ReferenceTable::ReferenceTable(const char* name, size_t initial_size, size_t max_size) : name_(name), max_size_(max_size) { CHECK_LE(initial_size, max_size); diff --git a/runtime/reference_table_test.cc b/runtime/reference_table_test.cc index d80a9b3dd1..9523e92d7c 100644 --- a/runtime/reference_table_test.cc +++ b/runtime/reference_table_test.cc @@ -16,6 +16,8 @@ #include "reference_table.h" +#include "android-base/stringprintf.h" + #include "class_linker.h" #include "common_runtime_test.h" #include "handle_scope-inl.h" @@ -30,6 +32,8 @@ namespace art { +using android::base::StringPrintf; + class ReferenceTableTest : public CommonRuntimeTest {}; static mirror::Object* CreateWeakReference(mirror::Object* referent) diff --git a/runtime/reflection-inl.h b/runtime/reflection-inl.h index 68e7a10e01..62ce9e9509 100644 --- a/runtime/reflection-inl.h +++ b/runtime/reflection-inl.h @@ -19,7 +19,8 @@ #include "reflection.h" -#include "base/stringprintf.h" +#include "android-base/stringprintf.h" + #include "common_throws.h" #include "jvalue-inl.h" #include "mirror/object-inl.h" @@ -103,13 +104,14 @@ inline bool ConvertPrimitiveValue(bool unbox_for_result, } if (!unbox_for_result) { - ThrowIllegalArgumentException(StringPrintf("Invalid primitive conversion from %s to %s", - PrettyDescriptor(srcType).c_str(), - PrettyDescriptor(dstType).c_str()).c_str()); + ThrowIllegalArgumentException( + android::base::StringPrintf("Invalid primitive conversion from %s to %s", + PrettyDescriptor(srcType).c_str(), + PrettyDescriptor(dstType).c_str()).c_str()); } else { - ThrowClassCastException(StringPrintf("Couldn't convert result of type %s to %s", - PrettyDescriptor(srcType).c_str(), - PrettyDescriptor(dstType).c_str()).c_str()); + ThrowClassCastException(android::base::StringPrintf("Couldn't convert result of type %s to %s", + PrettyDescriptor(srcType).c_str(), + PrettyDescriptor(dstType).c_str()).c_str()); } return false; } diff --git a/runtime/reflection.cc b/runtime/reflection.cc index 8446b525ad..4d2450135e 100644 --- a/runtime/reflection.cc +++ b/runtime/reflection.cc @@ -34,6 +34,8 @@ namespace art { +using android::base::StringPrintf; + class ArgArray { public: ArgArray(const char* shorty, uint32_t shorty_len) diff --git a/runtime/runtime_android.cc b/runtime/runtime_android.cc index be9786024a..0a996a9e55 100644 --- a/runtime/runtime_android.cc +++ b/runtime/runtime_android.cc @@ -21,7 +21,6 @@ #include "base/logging.h" #include "base/mutex.h" -#include "base/stringprintf.h" #include "thread-inl.h" #include "utils.h" diff --git a/runtime/runtime_linux.cc b/runtime/runtime_linux.cc index 93704a971c..b8894d2569 100644 --- a/runtime/runtime_linux.cc +++ b/runtime/runtime_linux.cc @@ -24,11 +24,12 @@ #include <iostream> #include <sstream> +#include "android-base/stringprintf.h" + #include "base/dumpable.h" #include "base/logging.h" #include "base/macros.h" #include "base/mutex.h" -#include "base/stringprintf.h" #include "native_stack_dump.h" #include "thread-inl.h" #include "thread_list.h" @@ -36,6 +37,8 @@ namespace art { +using android::base::StringPrintf; + static constexpr bool kUseSigRTTimeout = true; static constexpr bool kDumpNativeStackOnTimeout = true; diff --git a/runtime/stack.cc b/runtime/stack.cc index 792da88a63..3fed7c9458 100644 --- a/runtime/stack.cc +++ b/runtime/stack.cc @@ -16,6 +16,8 @@ #include "stack.h" +#include "android-base/stringprintf.h" + #include "arch/context.h" #include "art_method-inl.h" #include "base/enums.h" @@ -39,6 +41,8 @@ namespace art { +using android::base::StringPrintf; + static constexpr bool kDebugStackWalk = false; mirror::Object* ShadowFrame::GetThisObject() const { diff --git a/runtime/thread.cc b/runtime/thread.cc index d79bf36380..9c93a5f962 100644 --- a/runtime/thread.cc +++ b/runtime/thread.cc @@ -28,6 +28,8 @@ #include <list> #include <sstream> +#include "android-base/stringprintf.h" + #include "arch/context.h" #include "art_field-inl.h" #include "art_method-inl.h" @@ -88,6 +90,9 @@ namespace art { +using android::base::StringAppendV; +using android::base::StringPrintf; + extern "C" NO_RETURN void artDeoptimize(Thread* self); bool Thread::is_started_ = false; diff --git a/runtime/thread_list.cc b/runtime/thread_list.cc index 664eeb4b94..bf9eef8370 100644 --- a/runtime/thread_list.cc +++ b/runtime/thread_list.cc @@ -25,6 +25,8 @@ #include <sstream> +#include "android-base/stringprintf.h" + #include "base/histogram-inl.h" #include "base/mutex-inl.h" #include "base/systrace.h" @@ -52,6 +54,8 @@ namespace art { +using android::base::StringPrintf; + static constexpr uint64_t kLongThreadSuspendThreshold = MsToNs(5); static constexpr uint64_t kThreadSuspendTimeoutMs = 30 * 1000; // 30s. // Use 0 since we want to yield to prevent blocking for an unpredictable amount of time. diff --git a/runtime/thread_pool.cc b/runtime/thread_pool.cc index d9d2ea31a2..6abdca176d 100644 --- a/runtime/thread_pool.cc +++ b/runtime/thread_pool.cc @@ -21,6 +21,8 @@ #include <sys/time.h> #include <sys/resource.h> +#include "android-base/stringprintf.h" + #include "base/bit_utils.h" #include "base/casts.h" #include "base/logging.h" @@ -31,6 +33,8 @@ namespace art { +using android::base::StringPrintf; + static constexpr bool kMeasureWaitTime = false; ThreadPoolWorker::ThreadPoolWorker(ThreadPool* thread_pool, const std::string& name, diff --git a/runtime/ti/agent.cc b/runtime/ti/agent.cc index d21ff77849..0bba44c988 100644 --- a/runtime/ti/agent.cc +++ b/runtime/ti/agent.cc @@ -15,12 +15,17 @@ */ #include "agent.h" + +#include "android-base/stringprintf.h" + #include "java_vm_ext.h" #include "runtime.h" namespace art { namespace ti { +using android::base::StringPrintf; + const char* AGENT_ON_LOAD_FUNCTION_NAME = "Agent_OnLoad"; const char* AGENT_ON_ATTACH_FUNCTION_NAME = "Agent_OnAttach"; const char* AGENT_ON_UNLOAD_FUNCTION_NAME = "Agent_OnUnload"; diff --git a/runtime/ti/agent.h b/runtime/ti/agent.h index 6561756edd..7408aeec35 100644 --- a/runtime/ti/agent.h +++ b/runtime/ti/agent.h @@ -20,7 +20,6 @@ #include <dlfcn.h> #include <jni.h> // for jint, JavaVM* etc declarations -#include "base/stringprintf.h" #include "runtime.h" #include "utils.h" diff --git a/runtime/trace.cc b/runtime/trace.cc index f564de4952..9d9360e9cb 100644 --- a/runtime/trace.cc +++ b/runtime/trace.cc @@ -19,6 +19,8 @@ #include <sys/uio.h> #include <unistd.h> +#include "android-base/stringprintf.h" + #include "art_method-inl.h" #include "base/casts.h" #include "base/enums.h" @@ -46,6 +48,8 @@ namespace art { +using android::base::StringPrintf; + static constexpr size_t TraceActionBits = MinimumBitsToStore( static_cast<size_t>(kTraceMethodActionMask)); static constexpr uint8_t kOpNewMethod = 1U; diff --git a/runtime/utils.cc b/runtime/utils.cc index 4732f59ae1..8867743ec1 100644 --- a/runtime/utils.cc +++ b/runtime/utils.cc @@ -25,6 +25,7 @@ #include <unistd.h> #include <memory> +#include "android-base/stringprintf.h" #include "android-base/strings.h" #include "base/stl_util.h" @@ -48,6 +49,9 @@ namespace art { +using android::base::StringAppendF; +using android::base::StringPrintf; + static const uint8_t kBase64Map[256] = { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, diff --git a/runtime/verifier/method_verifier.cc b/runtime/verifier/method_verifier.cc index ebecc85a3c..7e23c8b4bc 100644 --- a/runtime/verifier/method_verifier.cc +++ b/runtime/verifier/method_verifier.cc @@ -18,6 +18,8 @@ #include <iostream> +#include "android-base/stringprintf.h" + #include "art_field-inl.h" #include "art_method-inl.h" #include "base/enums.h" @@ -55,6 +57,8 @@ namespace art { namespace verifier { +using android::base::StringPrintf; + static constexpr bool kTimeVerifyMethod = !kIsDebugBuild; static constexpr bool kDebugVerify = false; // TODO: Add a constant to method_verifier to turn on verbose logging? diff --git a/runtime/verifier/reg_type.cc b/runtime/verifier/reg_type.cc index ab23773bc4..52f7e348ce 100644 --- a/runtime/verifier/reg_type.cc +++ b/runtime/verifier/reg_type.cc @@ -16,6 +16,8 @@ #include "reg_type-inl.h" +#include "android-base/stringprintf.h" + #include "base/arena_bit_vector.h" #include "base/bit_vector-inl.h" #include "base/casts.h" @@ -35,6 +37,8 @@ namespace art { namespace verifier { +using android::base::StringPrintf; + const UndefinedType* UndefinedType::instance_ = nullptr; const ConflictType* ConflictType::instance_ = nullptr; const BooleanType* BooleanType::instance_ = nullptr; diff --git a/runtime/verifier/register_line.cc b/runtime/verifier/register_line.cc index a6088aa036..383d890702 100644 --- a/runtime/verifier/register_line.cc +++ b/runtime/verifier/register_line.cc @@ -16,7 +16,8 @@ #include "register_line.h" -#include "base/stringprintf.h" +#include "android-base/stringprintf.h" + #include "dex_instruction-inl.h" #include "method_verifier-inl.h" #include "register_line-inl.h" @@ -25,6 +26,8 @@ namespace art { namespace verifier { +using android::base::StringPrintf; + bool RegisterLine::CheckConstructorReturn(MethodVerifier* verifier) const { if (kIsDebugBuild && this_initialized_) { // Ensure that there is no UninitializedThisReference type anymore if this_initialized_ is true. diff --git a/runtime/well_known_classes.cc b/runtime/well_known_classes.cc index 35495867c7..009170cb1c 100644 --- a/runtime/well_known_classes.cc +++ b/runtime/well_known_classes.cc @@ -20,6 +20,8 @@ #include <sstream> +#include "android-base/stringprintf.h" + #include "base/logging.h" #include "entrypoints/quick/quick_entrypoints_enum.h" #include "jni_internal.h" @@ -189,7 +191,7 @@ jmethodID CacheMethod(JNIEnv* env, jclass c, bool is_static, static jmethodID CachePrimitiveBoxingMethod(JNIEnv* env, char prim_name, const char* boxed_name) { ScopedLocalRef<jclass> boxed_class(env, env->FindClass(boxed_name)); return CacheMethod(env, boxed_class.get(), true, "valueOf", - StringPrintf("(%c)L%s;", prim_name, boxed_name).c_str()); + android::base::StringPrintf("(%c)L%s;", prim_name, boxed_name).c_str()); } #define STRING_INIT_LIST(V) \ diff --git a/runtime/zip_archive.cc b/runtime/zip_archive.cc index d96fb429e5..cd79bb61f3 100644 --- a/runtime/zip_archive.cc +++ b/runtime/zip_archive.cc @@ -23,7 +23,6 @@ #include <unistd.h> #include <vector> -#include "base/stringprintf.h" #include "base/unix_file/fd_file.h" namespace art { diff --git a/test/137-cfi/cfi.cc b/test/137-cfi/cfi.cc index 113b35f98d..3b237f40ff 100644 --- a/test/137-cfi/cfi.cc +++ b/test/137-cfi/cfi.cc @@ -25,11 +25,11 @@ #include "jni.h" +#include "android-base/stringprintf.h" #include <backtrace/Backtrace.h> #include "base/logging.h" #include "base/macros.h" -#include "base/stringprintf.h" #include "gc/heap.h" #include "gc/space/image_space.h" #include "oat_file.h" @@ -91,7 +91,7 @@ static bool CheckStack(Backtrace* bt, const std::vector<std::string>& seq) { static void MoreErrorInfo(pid_t pid, bool sig_quit_on_fail) { printf("Secondary pid is %d\n", pid); - PrintFileToLog(StringPrintf("/proc/%d/maps", pid), ::android::base::ERROR); + PrintFileToLog(android::base::StringPrintf("/proc/%d/maps", pid), ::android::base::ERROR); if (sig_quit_on_fail) { int res = kill(pid, SIGQUIT); diff --git a/test/911-get-stack-trace/stack_trace.cc b/test/911-get-stack-trace/stack_trace.cc index 9092f2f7d3..57f6a927ea 100644 --- a/test/911-get-stack-trace/stack_trace.cc +++ b/test/911-get-stack-trace/stack_trace.cc @@ -20,9 +20,10 @@ #include <memory> #include <stdio.h> +#include "android-base/stringprintf.h" + #include "base/logging.h" #include "base/macros.h" -#include "base/stringprintf.h" #include "jni.h" #include "openjdkjvmti/jvmti.h" #include "ScopedLocalRef.h" @@ -32,6 +33,8 @@ namespace art { namespace Test911GetStackTrace { +using android::base::StringPrintf; + static jint FindLineNumber(jint line_number_count, jvmtiLineNumberEntry* line_number_table, jlocation location) { diff --git a/test/913-heaps/heaps.cc b/test/913-heaps/heaps.cc index 7b00fcdcc1..9c4fa8d6c0 100644 --- a/test/913-heaps/heaps.cc +++ b/test/913-heaps/heaps.cc @@ -22,9 +22,10 @@ #include <vector> +#include "android-base/stringprintf.h" + #include "base/logging.h" #include "base/macros.h" -#include "base/stringprintf.h" #include "jit/jit.h" #include "jni.h" #include "native_stack_dump.h" @@ -39,6 +40,8 @@ namespace art { namespace Test913Heaps { +using android::base::StringPrintf; + extern "C" JNIEXPORT void JNICALL Java_Main_forceGarbageCollection(JNIEnv* env ATTRIBUTE_UNUSED, jclass klass ATTRIBUTE_UNUSED) { jvmtiError ret = jvmti_env->ForceGarbageCollection(); |