• Joshua Haberman's avatar
    Optimized away the creation of empty string objects. · 1e37a94b
    Joshua Haberman authored
    Prior to this CL, creating an empty message object would create
    two empty string objects for every declared field.  First we
    created a unique string object for the field's default.  Then
    we created yet another string object when we assigned the
    default value into the message: we called #encode to ensure
    that the string would have the correct encoding and be frozen.
    
    I optimized these unnecessary objects away with two fixes:
    
    1. Memoize the empty string so that we don't create a new empty
       string for every field's default.
    2. If we are assigning a string to a message object, avoid creating
       a new string if the assigned string has the correct encoding and
       is already frozen.
    1e37a94b
Name
Last commit
Last update
.github Loading commit data...
benchmarks Loading commit data...
cmake Loading commit data...
conformance Loading commit data...
csharp Loading commit data...
docs Loading commit data...
editors Loading commit data...
examples Loading commit data...
java Loading commit data...
js Loading commit data...
kokoro Loading commit data...
m4 Loading commit data...
objectivec Loading commit data...
php Loading commit data...
protoc-artifacts Loading commit data...
python Loading commit data...
ruby Loading commit data...
src Loading commit data...
third_party Loading commit data...
util/python Loading commit data...
.gitignore Loading commit data...
.gitmodules Loading commit data...
BUILD Loading commit data...
CHANGES.txt Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS.txt Loading commit data...
LICENSE Loading commit data...
Makefile.am Loading commit data...
Protobuf-C++.podspec Loading commit data...
Protobuf.podspec Loading commit data...
README.md Loading commit data...
WORKSPACE Loading commit data...
appveyor.bat Loading commit data...
appveyor.yml Loading commit data...
autogen.sh Loading commit data...
build_files_updated_unittest.sh Loading commit data...
compiler_config_setting.bzl Loading commit data...
composer.json Loading commit data...
configure.ac Loading commit data...
generate_changelog.py Loading commit data...
generate_descriptor_proto.sh Loading commit data...
global.json Loading commit data...
post_process_dist.sh Loading commit data...
protobuf-lite.pc.in Loading commit data...
protobuf.bzl Loading commit data...
protobuf.pc.in Loading commit data...
protobuf_deps.bzl Loading commit data...
six.BUILD Loading commit data...
tests.sh Loading commit data...
update_compatibility_version.py Loading commit data...
update_file_lists.sh Loading commit data...
update_version.py Loading commit data...