Hi 

During testing of 
[JDK-8383787](https://bugs.openjdk.org/browse/JDK-8383787): 
JVMTI_EVENT_SAMPLED_OBJECT_ALLOC may make a cloned object accessible to Java 
before clone

I find that clone() intrinsic doesn't call JVMTI VMObjectAlloc as well as 
SampledObjecAlloc. There is no requirement for SampledObjectAlloc to be 
triggered by any allocation. While VMObjectAlloc should be called. 
I find 2 compiler optimizations that allocated object during clone without 
corresponding notification.

I applied fix similar to
[JDK-8307462](https://bugs.openjdk.org/browse/JDK-8307462) [REDO] VmObjectAlloc 
is not generated by intrinsics methods which allocate objects

The allocation check if notification are enabled using 
JvmtiExport::_should_notify_object_alloc and deoptimize clone in this case.

I verified that VMObjectAllocCloneTest.java failed with `-Xcomp 
-XX:-TieredCompilation `and -`Xcomp -XX:TieredStopAtLevel=1`. However I haven't 
added them as separate testcases.

---------
- [x] I confirm that I make this contribution in accordance with the [OpenJDK 
Interim AI Policy](https://openjdk.org/legal/ai).

-------------

Commit messages:
 - added new line
 - space added
 - small refactoring
 - Merge branch 'master' of https://github.com/openjdk/jdk into 8396399
 - Updated C1 allocation for array.
 - 8396399: VMObjectAlloc is not called from clone() intrinsic

Changes: https://git.openjdk.org/jdk/pull/33684/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=33684&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8396399
  Stats: 236 lines in 11 files changed: 236 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/33684.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/33684/head:pull/33684

PR: https://git.openjdk.org/jdk/pull/33684

Reply via email to