diff options
author | Googler <noreply@google.com> | 2016-09-15 13:22:36 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2016-09-15 15:41:14 +0000 |
commit | 03940330768479b679a2fe995f3041d96f5412a3 (patch) | |
tree | 06d1c17358677e695f7c61511eb8e30b2f32b602 /src/main/java/com/google | |
parent | cf773d29e7001293638f3411c33622a4598556b2 (diff) |
Store contents of FileWriteActions as UTF-8 bytes rather than java.lang.String.
--
MOS_MIGRATED_REVID=133253857
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteAction.java | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteAction.java index 1c7043ab46..64ea99c04d 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteAction.java @@ -22,6 +22,7 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.util.Fingerprint; +import com.google.devtools.build.lib.util.LazyString; import java.io.IOException; import java.io.OutputStream; @@ -75,9 +76,25 @@ public final class FileWriteAction extends AbstractFileWriteAction { public FileWriteAction(ActionOwner owner, Collection<Artifact> inputs, Artifact output, CharSequence fileContents, boolean makeExecutable) { super(owner, inputs, output, makeExecutable); + if (fileContents instanceof String && fileContents.length() > 256) { + fileContents = new StoredAsUTF8((String) fileContents); + } this.fileContents = fileContents; } + private static final class StoredAsUTF8 extends LazyString { + final byte[] bytes; + + StoredAsUTF8(String chars) { + this.bytes = chars.getBytes(UTF_8); + } + + @Override + public String toString() { + return new String(bytes, UTF_8); + } + } + /** * Creates a new FileWriteAction instance using UTF8 encoding. * |