Offer explicit 3-byte vs 4-byte modified UTF-8.
As documented in art/runtime/jni/jni_internal.cc, ART has deviated from the RI by using a 4-byte encoding instead of the 3-byte encoding required by the JNI specification. Some users are okay with this 4-byte encoding (where they control both the reading and writing logic) but other users require compatibility with the DataOutput/DataInput API contract, so this change lets users request either behavior. This change now exercises all tests in both 4-byte and 3-byte modes, and exhaustively confirms that all valid code-points match the DataOutput/DataInput contract when in 3-byte mode. Benchmark results still show significant performance benefits when using this 3-byte encoding over the upstream RI: timeRead_Upstream_mean (ns): 5090068 timeRead_LocalUsing3ByteSequences_mean (ns): 1996032 timeRead_LocalUsing4ByteSequences_mean (ns): 1813250 timeWrite_Upstream_mean (ns): 3856276 timeWrite_LocalUsing3ByteSequences_mean (ns): 1632697 timeWrite_LocalUsing4ByteSequences_mean (ns): 886503 Bug: 236923096 Test: atest FrameworksCoreTests:CharsetUtilsTest Test: atest FrameworksCoreTests:FastDataTest Test: atest FrameworksCoreTests:XmlTest Test: atest FrameworksCoreTests:BinaryXmlTest Test: ./frameworks/base/libs/hwui/tests/scripts/prep_generic.sh little && atest CorePerfTests:FastDataPerfTest Change-Id: Ibddd36410a0d4a909522de011f23a337b53d6889
Showing
- apct-tests/perftests/core/src/com/android/internal/util/FastDataPerfTest.java 53 additions, 10 deletions.../core/src/com/android/internal/util/FastDataPerfTest.java
- core/java/android/util/CharsetUtils.java 24 additions, 0 deletionscore/java/android/util/CharsetUtils.java
- core/java/android/util/TEST_MAPPING 28 additions, 0 deletionscore/java/android/util/TEST_MAPPING
- core/java/com/android/internal/util/BinaryXmlPullParser.java 6 additions, 7 deletionscore/java/com/android/internal/util/BinaryXmlPullParser.java
- core/java/com/android/internal/util/BinaryXmlSerializer.java 1 addition, 7 deletionscore/java/com/android/internal/util/BinaryXmlSerializer.java
- core/java/com/android/internal/util/FastDataInput.java 101 additions, 1 deletioncore/java/com/android/internal/util/FastDataInput.java
- core/java/com/android/internal/util/FastDataOutput.java 68 additions, 7 deletionscore/java/com/android/internal/util/FastDataOutput.java
- core/java/com/android/internal/util/ModifiedUtf8.java 110 additions, 0 deletionscore/java/com/android/internal/util/ModifiedUtf8.java
- core/java/com/android/internal/util/TEST_MAPPING 15 additions, 2 deletionscore/java/com/android/internal/util/TEST_MAPPING
- core/jni/TEST_MAPPING 16 additions, 0 deletionscore/jni/TEST_MAPPING
- core/tests/coretests/src/android/util/XmlTest.java 1 addition, 1 deletioncore/tests/coretests/src/android/util/XmlTest.java
- core/tests/coretests/src/com/android/internal/util/FastDataTest.java 74 additions, 19 deletions...coretests/src/com/android/internal/util/FastDataTest.java
Loading
Please register or sign in to comment