]> source.dussan.org Git - dcevm.git/commit
Cleaning up constant pool cache clearing code feature/experimental-cpcache
authorIvan Dubrov <idubrov@guidewire.com>
Wed, 8 Jul 2015 19:57:59 +0000 (12:57 -0700)
committerIvan Dubrov <idubrov@guidewire.com>
Wed, 8 Jul 2015 20:59:11 +0000 (13:59 -0700)
commit4d67683d0d7a5af417efa8f0d4da7d4b34d61863
treeac8726dbbce5826fcc11dd39e4d30828e3cf23cf
parentb217430b13678ea14db7b37aea4fc8e77b7518d9
Cleaning up constant pool cache clearing code

Clear constant pool cache entries which are related to
invokehandle/invokedynamic and ones which are unresolved
(have both bytecodes set to 0).

There are two cases when such entries could be non-empty
(have data in f1/f2):
  1. invokedynamic/invokehandle-related entries in which f2 was
     set during constant pool cache initialization.
  2. put/get into static field when class having the field
     is not initialized yet.

Previously, we didn't clear such entries as clearing f2 in
first case results in crash. However, if we don't clear f1
in the second case, we will not be able to initialize class
for the second time (to re-create all enum constants, for
example) as non-empty f2 will cause assertion to fail.

The current implementation uses free bit in constant pool cache
entry to mark all entries with resolved indices (case #1).
The clearing code preserves f2 for all such entries.
hotspot/.hg/patches/light-jdk8u40-b25.patch
hotspot/.hg/patches/series