From f63b0ece75149a6b25ebe79c1ddfac28602a4503 Mon Sep 17 00:00:00 2001 From: Mark Hansen Date: Tue, 15 Oct 2024 19:25:43 -0700 Subject: [PATCH] Combine dead-code gencode switch clauses for smaller codegen For messages with no required fields, SET_MEMOIZED_IS_INITIALIZED is never called, see the early returns above http://google3/third_party/java_src/protobuf/current/java/com/google/protobuf/GeneratedMessageLite.java;l=1526;rcl=684621860 if we return '1'. So we can put whatever logic in here we want, and we can avoid codegenning the 'return null' instructions. This should generate slightly smaller dex and oat code. https://godbolt.org/z/bGWaf68xv PiperOrigin-RevId: 686323338 --- cmake/dependencies.cmake | 34 ------------------- .../protobuf/compiler/java/lite/message.cc | 7 ++-- 2 files changed, 4 insertions(+), 37 deletions(-) delete mode 100644 cmake/dependencies.cmake diff --git a/cmake/dependencies.cmake b/cmake/dependencies.cmake deleted file mode 100644 index e806f5dd8a..0000000000 --- a/cmake/dependencies.cmake +++ /dev/null @@ -1,34 +0,0 @@ -# Auto-generated by @//cmake:make_dependencies -# -# This file contains lists of external dependencies based on our Bazel -# config. It should be included from a hand-written CMake file that uses -# them. -# -# Changes to this file will be overwritten based on Bazel definitions. - -if(${CMAKE_VERSION} VERSION_GREATER 3.10 OR ${CMAKE_VERSION} VERSION_EQUAL 3.10) - include_guard() -endif() - -set(abseil-cpp-version "20230802.1") -set(bazel_skylib-version "1.7.0") -set(jsoncpp-version "1.9.5") -set(rules_cc-version "0.0.13") -set(rules_fuzzing-version "0.5.2") -set(rules_java-version "7.11.1") -set(rules_jvm_external-version "6.3") -set(rules_kotlin-version "1.9.6") -set(rules_license-version "1.0.0") -set(rules_pkg-version "1.0.1") -set(rules_python-version "0.28.0") -set(rules_rust-version "0.51.0") -set(platforms-version "0.0.8") -set(zlib-version "1.3.1") -set(bazel_features-version "1.17.0") -set(rules_shell-version "0.2.0") -set(googletest-version "1.14.0") -set(rules_buf-version "0.3.0") -set(rules_testing-version "0.6.0") -set(rules_proto-version "4.0.0") - - diff --git a/src/google/protobuf/compiler/java/lite/message.cc b/src/google/protobuf/compiler/java/lite/message.cc index ff9dd36889..c63228142b 100644 --- a/src/google/protobuf/compiler/java/lite/message.cc +++ b/src/google/protobuf/compiler/java/lite/message.cc @@ -399,9 +399,10 @@ void ImmutableMessageLiteGenerator::Generate(io::Printer* printer) { "case GET_MEMOIZED_IS_INITIALIZED: {\n" " return (byte) 1;\n" "}\n" - "case SET_MEMOIZED_IS_INITIALIZED: {\n" - " return null;\n" - "}\n"); + "// SET_MEMOIZED_IS_INITIALIZED is never called for this message.\n" + "// So it can do anything. Combine with default case for smaller " + "codegen.\n" + "case SET_MEMOIZED_IS_INITIALIZED:\n"); } printer->Outdent();