RFR: aaload/aastore profiling

Roland Westrelin rwestrel at redhat.com
Fri Nov 15 15:00:29 UTC 2019


Hi Tobias,

Thanks for reviewing this.

> - c1_Runtime1.cpp:476, can you move this into the else branch (line 485) to avoid the is_flattened()
> check and also move the assert into the two branches?

This?

diff -r f81c768ad125 src/hotspot/share/c1/c1_Runtime1.cpp
--- a/src/hotspot/share/c1/c1_Runtime1.cpp	Wed Nov 13 17:51:40 2019 +0100
+++ b/src/hotspot/share/c1/c1_Runtime1.cpp	Fri Nov 15 15:55:56 2019 +0100
@@ -473,15 +473,16 @@
 
 
 JRT_ENTRY(void, Runtime1::store_flattened_array(JavaThread* thread, valueArrayOopDesc* array, int index, oopDesc* value))
-  assert(ArrayKlass::cast(array->klass())->storage_properties().is_flattened() || (ArrayKlass::cast(array->klass())->storage_properties().is_null_free() && value == NULL), "should not be called");
   if (ArrayKlass::cast(array->klass())->storage_properties().is_flattened()) {
     profile_flat_array(thread);
   }
 
   NOT_PRODUCT(_store_flattened_array_slowcase_cnt++;)
   if (value == NULL) {
+    assert(ArrayKlass::cast(array->klass())->storage_properties().is_flattened() || ArrayKlass::cast(array->klass())->storage_properties().is_null_free(), "should not be called");
     SharedRuntime::throw_and_post_jvmti_exception(thread, vmSymbols::java_lang_NullPointerException());
   } else {
+    assert(ArrayKlass::cast(array->klass())->storage_properties().is_flattened(), "should not be called");
     array->value_copy_to_index(value, index);
   }
 JRT_END


> - ciObjArrayKlass.cpp: why are these checks required?

A non null free value array has a subtype, the null free value array,
right?
Without that change, the c1 code assumes that if it sees any value
array, it knows the exact type.

> - TestLWorld.java:2318, can this be removed?
> - ValueTypeTest.java, nice refactoring. I had something similar in the queue. Can lines 553, 565 be
> removed?

Yep. Sorry, I forgot about those. 

> - Should the C1 and interpreter profiling be guarded by EnableValhalla?

The problem is that I replaced the existing aastore profiling. So with
-EnableValhalla we would go back to the previous aastore profiling and
previous MonomorphicArrayCheck?

> I've executed some testing, all passed! How did you verify performance?

Easy. I didn't. It obviously improves performance! :-)

> Please file an enhancement for this so we can better keep track of related tasks.

What you're saying is I need a bug id for this change, right?

Roland.



More information about the valhalla-dev mailing list