Age | Commit message (Collapse) | Author |
|
This reverts commit d6d49e56c2b7b11f474acb80cb02bb1fe9b7861e.
Bug: 29083330
Change-Id: Ie209b27897b8079f2d13fd0837fe5f83a7e61afc
|
|
Prevents temporary dex caches being unloaded for the same dex file.
Usually this is OK, but if someone resolved a string in that dex
cache, it could leave stale pointers in BSS. Also it can use extra
memory in linear alloc if we allocate dex cache arrays multiple
times.
Bug: 29083330
(cherry picked from commit f284d448e3edd428b6ade473d0993028638b2064)
Change-Id: Ie1b0b0cf835a998e19227cbb90014011a6cd40c4
|
|
There was race condition where the GC would be visiting the methods
of a class while the class linker overwrote the contents with 0xFE
when copying to a new array.
Since the GC is holding the class table lock at this time, we can
use this lock in the class linker to prevent the race.
Bug: 28699001
(cherry picked from commit 10c5f56423feaf3eadb3d4c09c61d2b998404162)
Change-Id: I5ddca93106cb8e48962cf44e5ce434c45e05cd0c
|
|
Used to guard adding and removing classes.
Previously we used the class linker classes lock, but this had
a deadlock issue since the reference processor may need to acquire
the lock to mark the classes of a class loader. Another thread could
be blocked trying to access weak globals while also holding the
class linker classes lock.
Bug: 27946564
Change-Id: If7c13e8775f0912e104d1382eacdba7e7edf6818
|
|
Only update dex cache arrays of added classes since the declaring
class is in image DCHECK fails for other classes in the class loader.
Also some cleanup to prevent app images leaving invalid state if
they get rejected.
Bug: 22858531
Bug: 27431418
(cherry picked from commit 6973100705716bffce3768a8a0908d7ca1d02ec1)
Change-Id: Ib05364c44f2b943e3341ef2b1dd43337833de143
|
|
Previously we left the image pointer instead of fixing up the pointer
to the one in the BSS. This only showed up because JIT does the same
as boot image, bypassing null check.
Fixed a bug where oat files without embedded dex cache arrays would
get their dex cache arrays corrupted.
Added a non virtual class visitor for performance.
Bug: 26846419
Bug: 22858531
Change-Id: I8cd0d61e440f753b4628ddb8c932eb23a0a81027
|
|
This reverts commit 1bc977cf2f8199311a97f2ba9431a184540e3e9c.
Bug: 22858531
Change-Id: Ide00bf3a73a02cba3bb364177204ad1b13f70295
|
|
Fails when a method is duplicated (see test 097-duplicate-method)
Bug: 22858531
This reverts commit f7fd970244f143b1abb956e29794c446e4d57f46.
Change-Id: Ib30ae5be00cc568e799290be6b3c8f29cbbe4c20
|
|
Support in-place patching of the app image based on boot image
location and app oat location. Only loads for art run test so far
since we do not automatically generate app images for app installs.
N5 maps launch time (~200 runs):
Before: 930ms
After: 878.18ms
After + image class table: 864.57ms
TODO:
Oatdump support.
Store class loaders as class roots in image.
Bug: 22858531
Change-Id: I9cbc645645e62ea2ed1ad8e139e91af7d88514c1
|
|
Changes, create one temporary class table per ImageInfo. Don't keep
track of class loaders.
Bug: 26317072
Change-Id: I4f9121194f39031fb8629d60b6feeb2747a77870
|
|
Reduces the boot.art size since we allocate a new class set with the
default load factor. The load factor in the combined class table is
higher to pruning classes, this reduces the size of the boot image.
Also fixes the hypothetical case where the class table being written
has multiple class sets.
Boot.art size
Before: 8122368
After: 8044544
Slight cleanup in patchoat.cc.
Bug: 22858531
Change-Id: I31b3ea2004ece6f6c853ee906074bb2792dee958
|
|
Reduces how long it takes to load an application image.
N5 boot.art size
Before: 8007680
After: 8122368
Also reduces boot time by how long AddImageClassesToClassTable
used to take (~20ms).
Changed class hashes to be uint32_t to fix cross compilation. We need
serialized hash tables to be valid with different pointer sizes.
Bug: 22858531
Change-Id: I463fc83f499ff75f509e80c253a55b9116ee5b89
|
|
The DexFile.loadClass API allows callers to load classes using a
dex file without having that dex file owned by the specified class
loader. We now add the dex file to the class table to make sure it
stays live until the class loader is unreachable.
Fixes interpreter gcstress test 087 with 64 bit.
Bug: 22720414
Change-Id: Ia4341149f45b6293312f8b275c7a68cea179f718
|
|
Making the class loaders weak roots in the class linker prevents them
from keeping the classes as live. However we currently do mark them
as strong roots to make sure no accidental class unloading occurs
until the logic to free from linear alloc is complete.
Bug: 22720414
Change-Id: I57466236d9ce6fd064dda9a30ce8ab68094fb8b0
|
|
This causes the classes of a class loader to get marked when that
class loader gets marked instead of during class root visiting.
Bug: 22720414
Change-Id: If53f042aff1d9f7bf94ecbe6886601edda029b7d
|
|
Change-Id: I538cf204f1c89d5fc81f8fc5e5800fcf1cf87359
|
|
Move from function pointers to virtual function visitors.
Change-Id: I68cb83c1d2ed9b5a89f8e534fe7ca4bbc1c91f45
|
|
Each class loader now has its own class table. This makes it easier
to mark classes when a classloader is marked.
Fixed a bug in LookupClass where we used to look ignore the return
value of InsertClass.
Bug: 22720414
Change-Id: If2cd717989a20a6e245ebec24ad52dc47dd3207d
|