History log of /libcore/libart/src/main/java/java/lang/Class.java
Revision Date Author Comments
86ea497b965fe86d084e109e6d2d1ff560e8f4bf 14-Jul-2015 Jeff Hao <jeffhao@google.com> Make isAssignableFrom not cast iftable entries to class.

The cast is unnecessary, and this change speeds up isAssignableFrom by
about 5%.

Bug: 22409569
Change-Id: I212f0302e007f1bbb6189d6e419db4d0d048b7ed
e9fbfba8affa05b7ed129da51f789985a1d379d0 03-May-2015 Mathieu Chartier <mathieuc@google.com> Move mirror::ArtMethod to native

Bug: 19264997

(cherry picked from commit c8595cdc1bd25e5ae6c889ed9b3ab14eca68e72b)

Change-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d
2abeaa62bbba16960e3d824745b77705478f8450 25-Apr-2015 Mathieu Chartier <mathieuc@google.com> Move Class.newInstance to native

Also add benchmark for Class.newInstance.

Bug: 20269715
Change-Id: Icd52155ce79a978a4d869855bfdfd7735abd8187
31ae6d22605a0967d722f935bc3a8b868ada4917 21-Apr-2015 Brian Carlstrom <bdc@google.com> Fix Class.forName(..., ..., null) to pass 068-classloader's testClassForName

This caused fallout elsewhere requiring
- Package fix to pass 005-annotations
- ObjectInputStream fix to pass 093-serialization

Change-Id: I6bc470e20fa177e8a3debe55c90a84eef7ef518e
826b803b4da92986bfbe7fc2618c326ccb50c971 17-Apr-2015 Mathieu Chartier <mathieuc@google.com> Move functionality from ArtMethod into Method

Bug: 19264997

Change-Id: Ife79c469fdb09f30e3aefcfc3e0ce5ed32303fce
df22ac586a1eab0cfaddd2c62f3b71ed74838b21 21-Apr-2015 Andreas Gampe <agampe@google.com> Libcore: Remove getClassLoaderImpl

This is an unnecessary method.

Change-Id: I4457ff8491628208312d0ba8b2fa4230a597c5de
d5178dc78b33c1d97af57b9ab047aa69717bc039 21-Apr-2015 Brian Carlstrom <bdc@google.com> Document behavior of Class.forName with a null ClassLoader

Change-Id: I65cdec4c0ad15fd4b9ecdf3ef076bb0ac02d9ccc
239a39fa24e3fc5b173a80de63a10f489539bb9e 01-Apr-2015 Mathieu Chartier <mathieuc@google.com> Remove ArtField

ArtFields are now handled in native. Java portion of this change:
https://android-review.googlesource.com/#/c/145032/

Bug: 19264997
Change-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c
3f58d2cbf86775ac97bddc1a8a0a9658b498d282 09-Apr-2015 Vladimir Marko <vmarko@google.com> Avoid using dex cache array pointers in libart.

In preparation for making dex cache arrays native, avoid
using them in Java code.

This causes a performance regression for our reflection
benchmarks. Class_getDeclaredMethod and Class_getMethod
take an up to 30% hit, measured using the Quick compiler.
We accept this hit at this stage and we will tune the
performance after we're done with the larger effort.

Companion art/ change:
https://android-review.googlesource.com/146068

Bug: 20134538
Change-Id: Ibbef3b50043a1311cd40723ed42e1f1c609b8fc1
eb183cdeab97f7fb25ae804319c1f5a46353dc4f 24-Mar-2015 Mathieu Chartier <mathieuc@google.com> Make ArtField have no functionality

Pre-requisite to making them non java objects. Some other changes to
speed up reflection.

TODO: Another CL for ArtMethod.

Bug: 19264997
Change-Id: I17ca0cf4b9ba853e59f4a6eff3a05d9d90cf23f9
3d38e8203d344acc9acd63c377b6a53683e1df67 25-Nov-2014 Mathieu Chartier <mathieuc@google.com> Move dexCacheStrings from ArtMethod to ArtClass

Saves ram.

Bug: 17643507

(cherry picked from commit b9a5206b91a656c091e7055ff70e4eed2c76b8b1)

Change-Id: Ic446a8466eb877ddf680e1d312ae94df028f9e73
b9a5206b91a656c091e7055ff70e4eed2c76b8b1 25-Nov-2014 Mathieu Chartier <mathieuc@google.com> Move dexCacheStrings from ArtMethod to ArtClass

Saves ram.

Bug: 17643507

Change-Id: Iabfb224db0de47ceff3806c491ce33b772af6fbe
5346a96c353933579db184a8433fc0cc1e076950 13-Nov-2014 Narayan Kamath <narayan@google.com> Binary search through ArtFields to match by name.

Commit bfa3ed0ad988e1da13626ddbaf6dcae0c58ea79e in art preserves
the original field order for ArtFields, and they will therefore be
sorted by name. For classes with large numbers of static and instance
fields, a binary search is obviously much faster.

Before:
Scenario{vm=app_process, trial=0, benchmark=GetInstanceField} 275460.26 ns; σ=19.75 ns @ 3 trials
Scenario{vm=app_process, trial=0, benchmark=GetStaticField} 661690.26 ns; σ=6340.84 ns @ 5 trials

After:
Scenario{vm=app_process, trial=0, benchmark=GetInstanceField} 3502.96 ns; σ=32.15 ns @ 3 trials
Scenario{vm=app_process, trial=0, benchmark=GetStaticField} 6579.58 ns; σ=40.49 ns @ 3 trials

bug: 18211592

(cherry picked from commit 8d471d854e0b66d079014519b562e673f8762995)

Change-Id: I098192a217f858dcbb6f60472b5ad1c0d72906ee
8d471d854e0b66d079014519b562e673f8762995 13-Nov-2014 Narayan Kamath <narayan@google.com> Binary search through ArtFields to match by name.

Commit bfa3ed0ad988e1da13626ddbaf6dcae0c58ea79e in art preserves
the original field order for ArtFields, and they will therefore be
sorted by name. For classes with large numbers of static and instance
fields, a binary search is obviously much faster.

Before:
Scenario{vm=app_process, trial=0, benchmark=GetInstanceField} 275460.26 ns; σ=19.75 ns @ 3 trials
Scenario{vm=app_process, trial=0, benchmark=GetStaticField} 661690.26 ns; σ=6340.84 ns @ 5 trials

After:
Scenario{vm=app_process, trial=0, benchmark=GetInstanceField} 3502.96 ns; σ=32.15 ns @ 3 trials
Scenario{vm=app_process, trial=0, benchmark=GetStaticField} 6579.58 ns; σ=40.49 ns @ 3 trials

bug: 18211592

Change-Id: I8f979de62ffe37d1c7d5c721717d2f3501e7c9e6
9ba050b3b5e9dff1006f683131a1204c2fa4d3a4 08-Nov-2014 Mathieu Chartier <mathieuc@google.com> Delete unused imtable field

Bug: 17643507

(cherry picked from commit c46775d1a134eb1bf55557e33d34c732c0520660)

Change-Id: I9cddc73cbf4b79ad4d50c6d413bea7ec3e62e4b3
c46775d1a134eb1bf55557e33d34c732c0520660 08-Nov-2014 Mathieu Chartier <mathieuc@google.com> Delete unused imtable field

Bug: 17643507

Change-Id: Ic96554136f141440c3fbb2c03e80ae876a6162de
4bde7d71a45ca7d79b53d0770dc8cd6cd5469a76 16-Oct-2014 Alan Viverette <alanv@google.com> Make unchecked getDeclaredFields/Methods methods public-hidden

These are used by ViewDebug to obtain the declared fields and methods
and then perform type resolution checks on a per-field and per-method
basis. Also updates documentation and naming so that the newly exposed
methods are less likely to be used incorrectly within the framework.

BUG: 17375269

(cherry picked from commit 206773d0a85a03b70a5a5cd6bf5e6f2a2a2326d4)

Change-Id: Ia656d6e8a00ebcb0b729e68aa8a2c1959b9e260b
206773d0a85a03b70a5a5cd6bf5e6f2a2a2326d4 16-Oct-2014 Alan Viverette <alanv@google.com> Make unchecked getDeclaredFields/Methods methods public-hidden

These are used by ViewDebug to obtain the declared fields and methods
and then perform type resolution checks on a per-field and per-method
basis. Also updates documentation and naming so that the newly exposed
methods are less likely to be used incorrectly within the framework.

BUG: 17375269
Change-Id: I2f3d4f0ffe3a59e0466e7f7e401c1e5d170d36df
c519ec27ba900d5422c5a0d40388fb6620981564 25-Sep-2014 Hiroshi Yamauchi <yamauchi@google.com> Update Class.primitiveType field uses.

This goes with the array allocation path optimization CL 108967.

Bug: 9986565
Change-Id: I96de4725d4517d84af34ad05792fce8aa322f57a
9fa4a8df90b59d44218decb2d028671588559377 10-Sep-2014 Mingyao Yang <mingyao@google.com> Remove referenceStaticOffsets from Class.java since it's not needed anymore.

Bug: 16236588
Change-Id: Icebdf0febee72a5dbbebc1906b069d52bf756e80
793b9ef91876cb7bea31ddf74f110ac45302f1dd 23-Apr-2014 Jeff Hao <jeffhao@google.com> Fix Class.newInstance to not wrap its exceptions.

Unlike Constructor.newInstance, Class.newInstance should not wrap
exceptions it throws.

Bug: https://code.google.com/p/android/issues/detail?id=68620

Change-Id: I3b89e8417d770b1908fea585062e62d5de292331
96e2e4faf806aa22ca205354c16b04288d51ddbf 01-Apr-2014 Jeff Hao <jeffhao@google.com> Fix reflection access checks for app compatibility in libcore.

Libcore side of this change. Corresponding art change here:
https://android-review.googlesource.com/#/c/89620/

Change-Id: I00610421438155fc60d6780b06581b874419ca2b
0a21bb40b8ade2e932ef7608bc861f183bfe594d 26-Mar-2014 Jeff Hao <jeffhao@google.com> Add access checks to Method and Field reflection.

Libcore side of this change. Has a corresponding art change.

Bug: 13620925
Change-Id: I68f726af5f2b5a79c9ffd6f2c76a0b3f2600ca9d
3b8c8cba4defe9049aca66d505e509395e5485f5 21-Nov-2013 Narayan Kamath <narayan@google.com> Fix the art version of getGenericSuperclass.

art version of:
https://android-review.googlesource.com/#/c/70325

bug: 10918616
Change-Id: Id4e221137410027757a5353476d78290f73d7ad8
(cherry picked from commit 34ab628b61321c17b5c1406656e7b352ab0a76a2)
96caa8ec10a5d64d804a9ed3897c9a34c8626239 21-Oct-2013 Brian Carlstrom <bdc@google.com> Fix Class.getEnclosingClass for anonymous classes declared in <clinit> methods

(cherry picked from commit b9be313bdc257089534f738ff8e1e5ad4de3d25e)

Bug: 11245138
Related bug: https://code.google.com/p/android/issues/detail?id=61003

Change-Id: I5cc1db6ca6628b845409d7a6ea864da5f625fdc3
59351c4e69b0e917d1f60e7ae32e76615150690c 29-Oct-2013 Jeff Hao <jeffhao@google.com> Libcore support for Interface Method Tables (IMT).

(cherry picked from commit 500f98f9696baad7ba16bd5ad65e8caa475ebfe7)

Change-Id: I0d611ba7b24f2a990a4a2958939b0f6d739d3c14
4583b2cee94e9582a6c7a1d715f4896073d03bad 13-Oct-2013 Brian Carlstrom <bdc@google.com> Fix Class.getDeclaringClass bug for ART

Bug: https://code.google.com/p/android/issues/detail?id=61003
Change-Id: Ia2cc774a9239ecd64f8039b2ca9e27593126e2cf
a6e22fc9b70ebe39abd716ce37450bda935c0fb8 19-Sep-2013 Ian Rogers <irogers@google.com> Avoid computing class def indices.

Bug: 10244719
Also tidy AnnotationAccess.

(cherry-picked from 8b2c0b9abc3f520495f4387ea040132ba85cae69)
Change-Id: I6ec8fd4e36b428d7e16e01d98b7bebc143fac8c3

Conflicts:
libdvm/src/main/java/java/lang/Class.java
98430d0d75f4cfd40614b77debeb3c8d0abf40df 15-Sep-2013 Ian Rogers <irogers@google.com> Fix getGenericInterfaces for the no annotation case.

Bug: 10244719
(cherry-picked from 43111aab512b1a7c7c8095a7135a7ae2754ea5bd)
Change-Id: I758d32e9cffcabf771e6f5f86ffa2666c8e1cb02

Conflicts:
libdvm/src/main/java/java/lang/Class.java
d4ec55c4e1acc3c3df937facbd367aff6618536c 07-Sep-2013 Ian Rogers <irogers@google.com> Lazier annotation signature parsing.

Bug: 10244719.
Also, make wider use of empty arrays.
Also, use named inner classes to aid profiling.
Remove caching as the empty result will be fast.
Porting the ART changes to DVM, to avoid the caching, results in bringing
in a bunch of other ART clean-up.
TODO, avoid modified-UTF8 to String conversions by Dex.

Change-Id: I051b6e34b5a4e7a7f1383461a799755947a5ba36

Conflicts:
libdvm/src/main/java/java/lang/Class.java
71dc4f7d4829335f7aba5414b43d16cd316ba22f 31-Jul-2013 Brian Carlstrom <bdc@google.com> Refactor ART java.lang.reflect implementation

Bug: 10014286.

(cherry picked from commit 1222a700a25956b0e3634731160017f0d3aa0585)

Change-Id: Ic5672489f6c028d47e6c2a499d6a2bbdd5cc4e4c
d3e311496e0b08acd959c3ffa31d9930a71bae19 24-Jul-2013 Ian Rogers <irogers@google.com> Improve the performance of reflective operations.

Common dex index lookups require a number of different types to be constructed,
implement short-cuts that avoid the intermediate data types.
Refactor reflective operations to use dex methods that don't require temporary
objects.
Note: this change adds an empty short array to Dex, this code can't appear in
libcore.util as Dex doesn't always come with libcore.util.

Bug: 9968234

(cherry picked from commit 381db8de0ac5df124c7f482bf4be9d5756bf3ca4)

Change-Id: I9122a3f01b4f41b07a84aff768193c092e29698c
6a51140fd83dc16867ca38a4ca2e47cbbf090dfd 20-Jul-2013 Ian Rogers <irogers@google.com> Restructure Class.getDeclaredMethodInternal.

Prefer virtual over direct methods when searching for a specific method.
For direct methods, check they are method rather than constructors early
(cheap test) and cast to Method as check-cast ellision can remove.

Motivation, android.widget.RemoteViews is using Class.getMethod and showing
as hot in the calendar launcher widget.

Change-Id: Id12fe9549c8f6626fd1abf0494d81aee32e0bc7a
78728ebce868f5949739e6e204e3e0fbf0356f8d 15-Jun-2013 Elliott Hughes <enh@google.com> Fix Class.getModifiers for arrays of inner classes.

Bug: https://code.google.com/p/android/issues/detail?id=56267

(cherry picked from commit 8aa5892195543e80b1c4eb10d8764268927cc1be)

Change-Id: I3be5433b04607e5f41e7c68f03cfabc166b56d54
2cf03dc15c40b92634ff606694af5a6e9aa4db09 22-May-2013 Brian Carlstrom <bdc@google.com> Adding libart support to libcore

Change-Id: I86febf08eacf42bb4b2f06dbd51c5b2d5b25c9fb