History log of /libcore/ojluni/src/main/java/java/util/regex/Matcher.java
Revision Date Author Comments
e31b37859051d3902e06e4ba384995df7188917f 02-Dec-2017 Hans Boehm <hboehm@google.com> Add reachabilityFence, ReachabilitySensitive

Add the @ReachabilitySensitive annotation itself, and use it
in libcore itself, where needed.

Import OpenJDK9+181's reachabilityFence, so that it can be used in
preference to the annotation where it makes sense. Java 9's
stopgap reachabilityFence implementation doesn't work for us,
so replace it with a different stopgap.

The libcore changes correct many situations in which finalizers
could previously run prematurely according to the JLS. Or they
would correct them if we had a real implementation for
@ReachabilitySensitive.

The ZipFile constructor could close the file before notifying the
CloseGuard that it was open.

Aside from the ZipFile change, there should be no functional
change, yet.

Note that the ExemptionMechanism.java fix is the same as upstream.

Conspicuously missing:

- Any code, e.g. in ART or D8, that actually looks for the annotation.
- Uses in frameworks code, where it's probably most critical.

Bug: 63934467
Bug: 70906684
Bug: 28342794
Test: Build & boot AOSP
Change-Id: I652f0625b39b2ba9ac901d4f63e6aa6cf3b74af5
4f5f16ccda77bc0448b42e4dc36da50e0c100591 19-Jul-2017 Victor Chang <vichang@google.com> Fix comments in Matcher.java and MatcherTest.java

Bug: 33737213
Test: cts-tradefed run cts -m CtsLibcoreTestCases --primary-abi-only
Change-Id: Id4147185591e1237fb99a231a8a39d831b9d3f48
faa2342e585ce148d6de982106ec7b5735f07f1f 13-Jul-2017 Victor Chang <vichang@google.com> Fix Matcher.find and reset

- Matcher.find didn't call reset(), but according to the javadoc, it
should.
- reset() didn't obtain a fresh value from mutable CharSequence.
Given that the constructor uses CharSequence, it should obtain a new value
from the CharSequence and match it again

Added 2 tests to verify such behaviors accordingly

Bug: 33737213
Test: cts-tradefed run cts -m CtsLibcoreTestCases --primary-abi-only
Change-Id: I16ce01944b8c1baac9b7947d5551fb030eb95fc8
4fdd044dd2cf0566613e2b1f79ca56711894446d 28-Mar-2017 Przemyslaw Szczepaniak <pszczepaniak@google.com> java.util.regex javadoc chages from openJdk8u121

Test: make -j 32
Bug: 36461944
Change-Id: I85ab28f2a7629c450ee6cee614dd25ed77a00123
(cherry picked from commit 8510e5234e7f0bda32cf4507e679ca856c6040b5)
285e53bf2b7c81134ae8bdb4044df216610bed17 04-Apr-2017 Narayan Kamath <narayan@google.com> Revert "Revert "Matcher: Avoid excessive String copies.""

This reverts commit 53e4e15bb0fc2f789274998f3ce62c4fc021fbe8.

Fixes a memory leak introduced in 53e4e15bb0f. Also :
- switches to using ScopedStringChars to simplify the code further.
- better ICU error checking.

Bug: 36366255
Bug: 36818684

Test: cts -m CtsLibcoreTestCases
Test: ScannerTest on host/x86

(cherry picked from commit 9084fb6f7c4da5d42c6b58b523d71e8ad65dd754)

Change-Id: Iad7c5b07647542bcaa2e6621107c0cd206249bae
9084fb6f7c4da5d42c6b58b523d71e8ad65dd754 04-Apr-2017 Narayan Kamath <narayan@google.com> Revert "Revert "Matcher: Avoid excessive String copies.""

This reverts commit 53e4e15bb0fc2f789274998f3ce62c4fc021fbe8.

Fixes a memory leak introduced in 53e4e15bb0f. Also :
- switches to using ScopedStringChars to simplify the code further.
- better ICU error checking.

Bug: 36366255
Bug: 36818684

Test: cts -m CtsLibcoreTestCases
Test: ScannerTest on host/x86
Change-Id: I3f108931cd5236be4ff9c0bd608a87701370dbf1
53e4e15bb0fc2f789274998f3ce62c4fc021fbe8 03-Apr-2017 Narayan Kamath <narayan@google.com> Revert "Matcher: Avoid excessive String copies."

This reverts commit 903563600f39b4efdf22a179f0d270e4d2a72469.

Reason for revert: this results in sporadic crashes on
host/x86.

Change-Id: Ibb914b298df0e814a8684904b118fbaa8b8cab2c
bug: 36366255
903563600f39b4efdf22a179f0d270e4d2a72469 24-Mar-2017 Narayan Kamath <narayan@google.com> Matcher: Avoid excessive String copies.

We avoid calls to GetStringChars on every JNI call to find or findNext.
Given that we now have a moving collector, we always copy on GetStringChars.
Moreover, on Android O, we incur the cost of these copies even if the
String in question is in a non-moveable space because the String might
be compressed. The cost of these calls can quickly add up, especially
for the case where the pattern in question occurs several times in the
string.

Relevant benchmark results are included below. This shows that for a
String size of 64kb with near worst case repetition of patterns, the new
implementation takes ~1/100th the time (8ms vs 737ms)

BEFORE:
Experiment {instrument=runtime, benchmarkMethod=timeReplaceAllTrivialPatternSingleOccurence, vm=default, parameters={s=NON_MOVEABLE}}
runtime(ns): min=1832194.71, 1st qu.=1865190.38, median=1918799.21, mean=1951987.04, 3rd qu.=2032988.61, max=2171749.44
Experiment {instrument=runtime, benchmarkMethod=timeReplaceTrivialPatternAllRepeated, vm=default, parameters={s=MOVEABLE_256}}
runtime(ns): min=91264.94, 1st qu.=91999.01, median=92500.85, mean=92864.29, 3rd qu.=94001.42, max=94304.77
Experiment {instrument=runtime, benchmarkMethod=timeReplaceTrivialPatternAllRepeated, vm=default, parameters={s=MOVEABLE_1024}}
runtime(ns): min=460049.96, 1st qu.=464198.96, median=473150.38, mean=477171.31, 3rd qu.=489764.60, max=508391.29
Experiment {instrument=runtime, benchmarkMethod=timeReplaceTrivialPatternAllRepeated, vm=default, parameters={s=NON_MOVEABLE}}
runtime(ns): min=736209191.00, 1st qu.=736360924.50, median=737412847.00, mean=737419384.78, 3rd qu.=738278240.00, max=738760545.00

AFTER:
Experiment {instrument=runtime, benchmarkMethod=timeReplaceAllTrivialPatternSingleOccurence, vm=default, parameters={s=NON_MOVEABLE}}
runtime(ns): min=1518890.99, 1st qu.=1528913.92, median=1637897.87, mean=1626845.46, 3rd qu.=1712046.38, max=1750239.83
Experiment {instrument=runtime, benchmarkMethod=timeReplaceTrivialPatternAllRepeated, vm=default, parameters={s=MOVEABLE_256}}
runtime(ns): min=61491.55, 1st qu.=62453.80, median=63083.26, mean=63023.21, 3rd qu.=63730.98, max=64245.10
Experiment {instrument=runtime, benchmarkMethod=timeReplaceTrivialPatternAllRepeated, vm=default, parameters={s=MOVEABLE_1024}}
runtime(ns): min=175484.27, 1st qu.=176039.91, median=177751.78, mean=179295.87, 3rd qu.=183334.40, max=187095.50
Experiment {instrument=runtime, benchmarkMethod=timeReplaceTrivialPatternAllRepeated, vm=default, parameters={s=NON_MOVEABLE}}
runtime(ns): min=8268762.61, 1st qu.=8396197.28, median=8662951.07, mean=8596467.31, 3rd qu.=8731159.36, max=8973943.49

bug: 36366255
bug: 36818684
Test: cts -m CtsLibcoreTestCases
Test: benchmark

Change-Id: Iff07cf2c2ebe89f04289bfa92bcd2469fec349e7
8510e5234e7f0bda32cf4507e679ca856c6040b5 28-Mar-2017 Przemyslaw Szczepaniak <pszczepaniak@google.com> java.util.regex javadoc chages from openJdk8u121

Test: make -j 32
Bug: 36461944
Change-Id: I85ab28f2a7629c450ee6cee614dd25ed77a00123
69860bf2b28f0e14741a8895abdb77b45d1ed55d 11-Jan-2017 Przemyslaw Szczepaniak <pszczepaniak@google.com> Regex support for named capture groups.

3 new methods in Matcher class: group(String), start(String),
end(String) that takes the name of named capture group.
Definition (?<name>X) and backreferencing (\k<name>) both
work fine. Added support for ${name} in replace methods.

Test: vogar OldMatcherTest
Bug: 19717812
Change-Id: Id6dce9158721917d644adb1a0b88d25ddb000fcd
49965c1dc9da104344f4893a05e45795a5740d20 30-Jun-2016 Ganesh Mahendran <opensource.ganesh@gmail.com> remove x attribute of java file

java file does not need x attribute. This patch removes it.

Change-Id: I2a7170d99f4bee7a7b819621c84dd197ded37fa2
Signed-off-by: Ganesh Mahendran <opensource.ganesh@gmail.com>
17d9d335a92b93da440e19d07c935c5f9e9e16fc 03-May-2016 Richard Uhler <ruhler@google.com> Hold a ClassLoader reference in NativeAllocationRegistry.

So that the native library isn't unloaded before we have a chance to
call the freeFunction.

Bug: 28406866

(cherry picked from commit 111fdf10801861427f59e42c34c40d5df484053b)

Change-Id: I80c15400335edfc31de0bb6e06ed514ac4ea1d4d
111fdf10801861427f59e42c34c40d5df484053b 03-May-2016 Richard Uhler <ruhler@google.com> Hold a ClassLoader reference in NativeAllocationRegistry.

So that the native library isn't unloaded before we have a chance to
call the freeFunction.

Bug: 28406866
Change-Id: I1c876b90837902ac3e65a41eb4a4fdd4f84a9b6c
5b53b8c56fb2aba6fffc5c467d092d9dcaf45f34 22-Apr-2016 Hans Boehm <hboehm@google.com> Convert Pattern and Matcher to use NativeAllocationRegistry

Avoid finalizer use, since already finalized objects may still
be accessed by other finalizers, causing native memory
corruption.

This should also improve memory tracking and deallocation
performance a bit.

Bug: 27887091
Change-Id: Ib1df6bcdacaf8eba622b67c10ac9ceb675067884
(cherry picked from commit d9e764ece41000c87d12d82a50eab6444ba02a8e)
d9e764ece41000c87d12d82a50eab6444ba02a8e 22-Apr-2016 Hans Boehm <hboehm@google.com> Convert Pattern and Matcher to use NativeAllocationRegistry

Avoid finalizer use, since already finalized objects may still
be accessed by other finalizers, causing native memory
corruption.

This should also improve memory tracking and deallocation
performance a bit.

Bug: 27887091
Change-Id: Ib1df6bcdacaf8eba622b67c10ac9ceb675067884
2c87ad3a45cecf9e344487cad1abfdebe79f2c7c 21-Dec-2015 Narayan Kamath <narayan@google.com> Update file headers.

Change-Id: I8149f41585768a1a4b72ab7bb4a1452376c05cc2
85d69e16fe1e59e50c1ad228e754abf325088362 20-Dec-2015 Narayan Kamath <narayan@google.com> Revert "Revert "Port ICU based regex implementation over to OpenJdk.""

This reverts commit fadaa97dd78736d94460684d87dcdadd14a5813c.

Fixes build breakage due to unresolved @link tags.

Change-Id: I329c28d872a2a40064b7219d3537eaae1cfe6fae
fadaa97dd78736d94460684d87dcdadd14a5813c 18-Dec-2015 Brian Carlstrom <bdc@google.com> Revert "Port ICU based regex implementation over to OpenJdk."

This reverts commit 075cf9ab88476958db0dd3ca80e21802fc623f66.

Change-Id: If343ef8a2f62b1ce301f1801b1660cfb21552178
075cf9ab88476958db0dd3ca80e21802fc623f66 18-Dec-2015 Narayan Kamath <narayan@google.com> Port ICU based regex implementation over to OpenJdk.

Change-Id: I5de7fa40dbf35843949ac3eb9d7cef680d64e45a
51b1b6997fd3f980076b8081f7f1165ccc2a4008 16-Feb-2015 Piotr Jastrzebski <haaawk@google.com> Initial import of OpenJdk files.

Create new libcore/ojluni directory with src/main/java and
src/main/native subdirectiories.

Build ojluni into core-oj jar.

Use openjdk classes from java.awt.font package.

Copy all files from jdk/src/share/classes and jdk/src/solaris/classes
directories in openjdk into libcore/ojluni/src/main/java.

Copy following native files from openjdk to
libcore/ojluni/src/main/native:
jdk/src/solaris/native/java/io/canonicalize_md.c
build/linux-amd64/include/classfile_constants.h
jdk/src/share/native/java/net/DatagramPacket.c
jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c
jdk/src/share/native/java/lang/Double.c
jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h
jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c
jdk/src/solaris/native/java/io/FileDescriptor_md.c
jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c
jdk/src/share/native/java/io/FileInputStream.c
jdk/src/solaris/native/sun/nio/ch/FileKey.c
jdk/src/solaris/native/java/io/FileOutputStream_md.c
jdk/src/solaris/native/java/io/FileSystem_md.c
jdk/src/share/native/java/lang/Float.c
jdk/src/share/native/java/net/Inet4Address.c
jdk/src/solaris/native/java/net/Inet4AddressImpl.c
jdk/src/share/native/java/net/Inet6Address.c
jdk/src/solaris/native/java/net/Inet6AddressImpl.c
jdk/src/share/native/java/net/InetAddress.c
jdk/src/solaris/native/java/net/InetAddressImplFactory.c
jdk/src/share/native/java/io/io_util.c
jdk/src/solaris/native/sun/nio/ch/IOUtil.c
jdk/src/share/native/java/io/io_util.h
jdk/src/solaris/native/java/io/io_util_md.c
jdk/src/solaris/native/java/io/io_util_md.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/java_io_FileDescriptor.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_FileInputStream.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_FileOutputStream.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_FileSystem.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_ObjectStreamClass.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_UnixFileSystem.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Double.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Float.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Integer.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Long.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Runtime.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Shutdown.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_StrictMath.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_String.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_System.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Thread.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Throwable.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_DatagramPacket.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_Inet4Address.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_Inet4AddressImpl.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_Inet6Address.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_Inet6AddressImpl.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_InetAddress.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_InetAddressImplFactory.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_NetworkInterface.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_PlainDatagramSocketImpl.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_PlainSocketImpl.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_SocketInputStream.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_SocketOptions.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_SocketOutputStream.h
jdk/src/share/native/java/lang/java_props.h
jdk/src/solaris/native/java/lang/java_props_md.c
jdk/src/share/native/java/util/zip/Adler32.c as java_util_zip_Adler32.c
jdk/src/share/native/java/util/zip/CRC32.c as java_util_zip_CRC32.c
build/linux-amd64/tmp/sun/java.util.zip/zip/CClassHeaders/java_util_zip_CRC32.h
jdk/src/share/native/java/util/zip/Deflater.c as java_util_zip_Deflater.c
build/linux-amd64/tmp/sun/java.util.zip/zip/CClassHeaders/java_util_zip_Deflater.h
jdk/src/share/native/java/util/zip/Inflater.c as java_util_zip_Inflater.c
build/linux-amd64/tmp/sun/java.util.zip/zip/CClassHeaders/java_util_zip_Inflater.h
jdk/src/share/native/java/util/zip/ZipFile.c as java_util_zip_ZipFile.c
build/linux-amd64/tmp/sun/java.util.zip/zip/CClassHeaders/java_util_zip_ZipFile.h
jdk/src/share/native/java/lang/fdlibm/include/jfdlibm.h
jdk/src/share/native/common/jlong.h
jdk/src/solaris/native/common/jlong_md.h
jdk/src/share/native/common/jni_util.c
jdk/src/share/native/common/jni_util.h
jdk/src/solaris/native/common/jni_util_md.c
jdk/src/share/javavm/export/jvm.h
jdk/src/solaris/javavm/export/jvm_md.h
jdk/src/solaris/native/java/net/linux_close.c
jdk/src/share/native/sun/misc/NativeSignalHandler.c
jdk/src/solaris/native/sun/nio/ch/NativeThread.c
jdk/src/share/native/java/net/net_util.c
jdk/src/share/native/java/net/net_util.h
jdk/src/solaris/native/java/net/net_util_md.c
jdk/src/solaris/native/java/net/net_util_md.h
jdk/src/solaris/native/java/net/NetworkInterface.c
jdk/src/share/native/sun/nio/ch/nio.h
jdk/src/solaris/native/sun/nio/ch/nio_util.h
jdk/src/share/native/java/io/ObjectStreamClass.c
jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
jdk/src/solaris/native/java/net/PlainSocketImpl.c
jdk/src/solaris/native/java/lang/ProcessEnvironment_md.c
jdk/src/share/native/java/lang/Runtime.c
jdk/src/share/native/java/lang/Shutdown.c
jdk/src/share/native/sun/misc/Signal.c
jdk/src/solaris/native/java/net/SocketInputStream.c
jdk/src/solaris/native/java/net/SocketOutputStream.c
jdk/src/share/native/java/lang/StrictMath.c
jdk/src/share/native/java/lang/String.c
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/sun_misc_NativeSignalHandler.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/sun_misc_Signal.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/sun_net_spi_DefaultProxySelector.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_FileChannelImpl.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_FileDispatcherImpl.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_FileKey.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_IOStatus.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_IOUtil.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_NativeThread.h
jdk/src/share/native/java/lang/System.c
jdk/src/share/native/java/lang/Thread.c
jdk/src/share/native/java/lang/Throwable.c
jdk/src/solaris/native/java/io/UnixFileSystem_md.c
jdk/src/solaris/native/java/lang/UNIXProcess_md.c
jdk/src/share/native/java/util/zip/zip_util.c
jdk/src/share/native/java/util/zip/zip_util.h

Change-Id: Ib237df4e1b7b5b4d9f12e74d189e6ec9eed3c31d