JBR-5183 - ref openjdk/8292818 - special access flags removed
JBR-5183 - add new DeoptimizationScope from openjdk
JBR-5183 clean DCEVM code separation in standard jdk code + typo fix
JBR-5464 Fix native method registration
JBR-5183 - fix compilation on win - using size_t
JBR-5183 - fix error: invalid use of incomplete type 'struct Atomic::StoreImpl
JBR-5183 - fix windows build
JBR-5183 - nullptr in VM_EnhancedRedefineClasses
JBR-5183 - fix compilation locking
JBR-5183 fix G1GC forward pointer check
JBR-5183 fix problem with _first_dead in serial GC
JBR-5183 fix bug from dcevm21 merge resolving
JBR-5183 use sorted static fields in class comparison
JBR-5183 do not use EnhancedRedefineClasses_lock
JBR-5183 fix assert in make_jmethod_id
JBR-5183 remove VM_ThreadsSuspendJVMTI
JBR-5183 fix dcevm21 issues after merge dcevm17 updates
JBR-5183 dcevm17 squashed commits
JBR-3111 Update class in all dictionaries where it was already defined
This patch keeps compatibility with std redefinition, that does not
create a new Klass, but modifies it, then it is modified in all
dictionaries containing this class.
Add ClassLoaderDataGraph_lock to define new class in enhanced
redefiniton
ClassLoaderDataGraph locking for introduced in redefinition in
java.version>11
JBR-3140 - support for modularized HotswapAgent
Add -XX:HotswapAgent=[disabled,fatjar.core]
Support for redefinition of Well Known classses (java.*,jdk.*, sun.*)
Fix fastdebug compilation issues - cast_to_oop
JBR-3458: Skip dynamic proxy classes based on com.sun.proxy
JBR-3459: Fix race condition in ClassLoaderDataGraph::classes_do
InstanceKlass in ClassLoaderData can be uninitialized when
ClassLoaderDataGraph::classes_do is called. Using
ClassLoaderDataGraph::dictionary_classes_do is safe but problem is still
persisting with anonymous classes.
Fix compilation problems
Fix dcevm issues related to refactorization of Thread to JavaThread
Fix init_method_MemberName after Thread to JavaThread refactorization
Fix "implicit conversion of NULL constant to 'bool'"
Fix, pass SystemDictionary::resolve_from_stream cl_info param
Search for affected classes in all initialized classes in cld
Fix also case when lambda interface is redefined. Lambda class is
missing in cld dictionary since it is hidden since j17
Fix compilation issue
Remove duplicated lambdaFormInvokers.cpp
JBR-3867 - update keys of jvmti TAG map after redefinition
jdwp keeps relation class_ptr->class_ref in jvmti tag. class_ptr is used
as a tag key, tag value is refnode. There are new class_ptrs after
redefinition, therefore jdwp redefinition method update all affected
keys in the tag map.
JBR-3867 - fix msvc compilation issue with non const array on stack
Attempt to fix JBR-3887
JBR-3937 Fix crashes in C1/C2 compilers
There is a race condition in enhanced redefinition with C1/C2. Therefore
the patch stops C1/C2 compilation before redefinition and release after
redefinition finishing. There is no performance impact since dcevm
flushes all code cache.
Fix line ending CRLF->LF
G1 fixes, code cleanup
JBR-3867 - fix dcevm redefinition stops due the not updated weak oops
Dcevm must update also oops in weak storage using WeakProcessor. Oops
storage is new concept in java17.
JBR-4018 - fix zero variant compilation issues
JBR-3997 - fix _invokehandle and _invokedynamic race conditions
Old clear mechanism of CpCacheEntry has cleared partially _flags and the
entire _f1, but both values could be later used in interpreter for
invocation. It ended up with various types of crashes. To prevent dcevm
crashes, we keep the old _f1 and _flags values until they are resolved
again. We need a new flag 'is_f1_null_dcevm_shift' indicating that _f1
is NULL (while f1 keeps old value).
JBR-4053 - Fix fastdebug compilation issue
JBR-4125 - fix wrong addition of java.lang.Object as superclass
JBR-4110 - disable UseEmptySlotsInSupers
dcevm instance transformation expects increasing field's offset when
fields of class are iterated. This ordering is no more valid if
UseEmptySlotsInSupers=true.
JBR-4148 - removed meaningless copying of data to itself
JBR-4312 - fix crash call ResolvedMethodTable from ServiceThread
adjust_metod_entries_dcevm incorrectly changed the hashes of resolved
method oops stored in ResolvedMethodTable. Now all oops of old methods
are first removed, then updated and then added to table again
JBR-4352 - fix AARCH64 compilation issues
- use correct INCLUDE_JFR condition for jfr code
- exclude jvmtiEnhancedRedefineClasses.cpp if INCLUDE_JVMTI=0
Remove version-numbers left over from the merge of dcevm17
JBR-4392 - use only loaded classes when collecting affected classes
JBR-4386 - disable AllowEnhancedClassRedefinition in jfr
JBR-5183 fix dcevm21 compilation issues
JBR-5183 pre-dcevm17 squashed commits
dcevm11 fixes
1. We need to set classRedefinitionCount on new class, not old class.
2.Fix crashes in MetadataOnStackMark::~MetadataOnSta
MetadataOnStackMark should not remove dcevm stuff. It was added
accidentaly in dcevm9 and never was part of doit() in previous versions.
3. Fix problem with nested members
Reported at :
https://stackoverflow.com/questions/53370380/hotswapagent-incompatibleclasschangeerror-type-headerpanel1-is-not-a-nest-mem
4. Use init_mark_raw()
method changed since j8 - it used init_mark()
5. Fix methodHandles and fieldHandles
6. Code cleanup
7. Fix force_forward in dead space
8. Fix check_class
9. increment_class_counter() using orig dcevm code
Probably it is cause of SISEGV on:
_
VM_EnhancedRedefineClasses::redefine_single_class->java_mirror()
10 Fix 11.0.7 compilation issues
11. Refactor ClearCpoolCacheAndUnpatch
12. not nullable oop_store_not_null() method+handle NULL in mem_name in
dmh
13. Use INCLUDE_CDS condition on "UseSharedSpaces" block from master
14. Add codecache flush optimization, but just flush all cache.
15. Cleanup
16. Use original code for adjust_method_entries in standard redefinition
17. iterate old method version only in dcevm
18. Revert code for !AllowEnhancedClassRedefinition
19. Code cleanup
20. Activate cpCache definition asserts for !dcevm
21. Skip GC runs for redefinitions without instance size change
22. This is the 2nd commit message:
23. dcevm15 - Cleanup code related to removed CMS
Fix class cast exception on redefinition of class A, that is superclass
of B that has anonymous class C
Support for Lambda class redefinition
Fix "no original bytecode found" error if method with bkp is missing
Sometimes IDE can deploy class with erroneous method, such method has
n bytecode, but breakpoint position can still exist.
Replace deleted method with Universe::throw_no_such_method_error
+ Change log level in advanced redefinition
- Change log level for "Comparing different class ver.." to debug
- Fix adjust_method_entries_dcevm logging levels and severity
Support for G1 gc
AllowEnhancedClassRedefinition is false (disabled) by default
Set HOTSPOT_VM_DISTRO=Dynamic Code Evolution
Clear dcevm code separation
Fix LoadedClassesClosure - fixes problems with remote debugging
dcevm15 - fix java15 compilation issues
dcevm15 - add ClassLoaderDataGraph_lock on
ClassLoaderDataGraph::classes_do
ClassLoaderDataGraph::classes_do and need safepoint or lock,
find_sorted_affected_classes is not in safepoint therefore it must be
locked
ClassLoaderDataGraph::rollback_redefinition need safepoint too
dcevm15 - fix Universe::root_oops_do
Removed ClassLoaderDataGraph::cld_do was cause of crashes due multiple
oop patching. ClassLoaderDataGraph::cld_do replaced in dcevm15
previously used and removed SystemDictionary:oops_do
dcevm15 - check if has_nestmate_access_to has newest host class
dcevm15 - mark_as_scavengable only alive methods
dcevm15 - fix hidded classes
dcevm15 - DON'T clear F2 in CP cache after indy unevolving
It's not clear why it was cleared in dcevm7-11
Cleanup and review comments
Disable AllowEnhancedClassRedefinition in flight recorder
dcevm17 - fix compilation issues
Fix crash on GrowableArray allocation in C_HEAP
Rename confusing method name old_if_redefined to old_if_redefining
Check InstanceKlass::has_nestmate_access_to with active classes
Dcevm can leave old host in nested class if nested class is not
redefined together with host class
OopStorage instance now owned by subsystems, and generalize dead entry notification
Co-authored-by: Erik Osterlund <erik.osterlund@oracle.com>
Co-authored-by: Stefan Karlsson <stefan.karlsson@oracle.com>
Reviewed-by: coleenp, tschatzl
8210457: JVM crash in ResolvedMethodTable::add_method(Handle)
Add a function to call NSME in ResolvedMethodTable to replace deleted methods.
Reviewed-by: sspitsyn, dholmes, dcubed
8193524: Redefining a method that removes use of 1 or more lambda expressions causes the JVM to hang
Remove oop pointers from runtime data structures.
Co-authored-by: Lois Foltan <lois.foltan@oracle.com>
Reviewed-by: lfoltan, stefank