| // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| package jumbostring; |
| |
| import java.io.IOException; |
| import java.io.PrintStream; |
| import java.nio.file.FileSystems; |
| import java.nio.file.Files; |
| import java.nio.file.Path; |
| import java.nio.file.StandardOpenOption; |
| |
| class JumboString { |
| public static void main(String[] args) { |
| // Make sure this string sorts after the field names and string values in the StringPoolX.java |
| // files to ensure this is a jumbo string. |
| System.out.println("zzzz - jumbo string"); |
| } |
| |
| // Code for generating the StringPoolX.java files. |
| // |
| // We only need to generate two files to get jumbo strings. Each file has 16k static final fields |
| // with values, and both the field name and the value will be in the string pool. |
| public static void generate() throws IOException { |
| int stringsPerFile = (1 << 14); |
| for (int fileNumber = 0; fileNumber < 2; fileNumber++) { |
| Path path = FileSystems.getDefault().getPath("StringPool" + fileNumber + ".java"); |
| PrintStream out = new PrintStream( |
| Files.newOutputStream(path, StandardOpenOption.CREATE, StandardOpenOption.APPEND)); |
| |
| out.println( |
| "// Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file"); |
| out.println( |
| "// for details. All rights reserved. Use of this source code is governed by a"); |
| out.println("// BSD-style license that can be found in the LICENSE file."); |
| out.println("package jumbostring;"); |
| out.println(); |
| out.println("class StringPool" + fileNumber + " {"); |
| |
| int offset = fileNumber * stringsPerFile; |
| for (int i = offset; i < offset + stringsPerFile; i++) { |
| out.println(" public static final String s" + i + " = \"" + i + "\";"); |
| } |
| out.println("}"); |
| out.close(); |
| } |
| } |
| } |