RFR: 8337987: Relocate jfr and throw_exception stubs from StubGenerator to SharedRuntime [v4]

Yudi Zheng yzheng at openjdk.org
Wed Aug 14 13:27:51 UTC 2024


On Wed, 14 Aug 2024 13:19:35 GMT, Andrew Dinn <adinn at openjdk.org> wrote:

>> src/hotspot/share/jvmci/vmStructs_jvmci.cpp line 330:
>> 
>>> 328:   static_field(StubRoutines,                _verify_oop_count,                                jint)                                  \
>>> 329:                                                                                                                                      \
>>> 330:   static_field(StubRoutines,                _throw_delayed_StackOverflowError_entry,          address)                               \
>> 
>> Please add the following symbol exporting
>> 
>> diff --git a/src/hotspot/share/jvmci/jvmciCompilerToVM.hpp b/src/hotspot/share/jvmci/jvmciCompilerToVM.hpp
>> index 8fdb96a3038..0e96cea6596 100644
>> --- a/src/hotspot/share/jvmci/jvmciCompilerToVM.hpp
>> +++ b/src/hotspot/share/jvmci/jvmciCompilerToVM.hpp
>> @@ -50,6 +50,7 @@ class CompilerToVM {
>>      static address SharedRuntime_deopt_blob_unpack_with_exception_in_tls;
>>      static address SharedRuntime_deopt_blob_uncommon_trap;
>>      static address SharedRuntime_polling_page_return_handler;
>> +    static address SharedRuntime_throw_delayed_StackOverflowError_blob;
>>  
>>      static address nmethod_entry_barrier;
>>      static int thread_disarmed_guard_value_offset;
>> diff --git a/src/hotspot/share/jvmci/jvmciCompilerToVMInit.cpp b/src/hotspot/share/jvmci/jvmciCompilerToVMInit.cpp
>> index 2116133e56e..27031bf55fe 100644
>> --- a/src/hotspot/share/jvmci/jvmciCompilerToVMInit.cpp
>> +++ b/src/hotspot/share/jvmci/jvmciCompilerToVMInit.cpp
>> @@ -68,6 +68,7 @@ address CompilerToVM::Data::SharedRuntime_deopt_blob_unpack;
>>  address CompilerToVM::Data::SharedRuntime_deopt_blob_unpack_with_exception_in_tls;
>>  address CompilerToVM::Data::SharedRuntime_deopt_blob_uncommon_trap;
>>  address CompilerToVM::Data::SharedRuntime_polling_page_return_handler;
>> +address CompilerToVM::Data::SharedRuntime_throw_delayed_StackOverflowError_blob;
>>  
>>  address CompilerToVM::Data::nmethod_entry_barrier;
>>  int CompilerToVM::Data::thread_disarmed_guard_value_offset;
>> @@ -158,6 +159,7 @@ void CompilerToVM::Data::initialize(JVMCI_TRAPS) {
>>    SharedRuntime_deopt_blob_unpack_with_exception_in_tls = SharedRuntime::deopt_blob()->unpack_with_exception_in_tls();
>>    SharedRuntime_deopt_blob_uncommon_trap = SharedRuntime::deopt_blob()->uncommon_trap();
>>    SharedRuntime_polling_page_return_handler = SharedRuntime::polling_page_return_handler_blob()->entry_point();
>> +  SharedRuntime_throw_delayed_StackOverflowError_blob = SharedRuntime::throw_delayed_St...
>
> Hi @mur47x111. Thanks for looking at this PR.
> 
> I deleted the static field declaration from `vmStructs_jvmci.cpp` because I found no other mention of `throw_delayed_StackOverflowError_entry` under `src/hotspot/share/jvmci`. So, I assumed it was not being used by any JVMCI clients.
> 
> I am happy to push a patch with your proposed changes. However, I just wanted to check whether you are sure you want to use the name `SharedRuntime_throw_delayed_StackOverflowError_blob` in the new declarations of the `CompilerToVM` field.
> 
> I am asking because I when I moved the exception stubs from `StubGenerator` to `SharedRuntime` I also made a change in the way the stubs are named, stored and accessed.
> 
> The original field `StubGenerator::SharedRuntime_throw_delayed_StackOverflowError_entry` stored the entry point for the throw routine and was of type `address`. The getter method that returns the entry address simply returns the field value.
> 
> The relocated field `SharedRuntime::_throw_delayed_StackOverflowError_blob` stores a pointer to a `RuntimeBlob`, the one that contains the throw routine. That is why the field name ends with `_blob` not `_entry`. The entry address is not stored directly in class `SharedRuntime`. In the new code the getter method computes the address by calling the blob's `entry_point()` method.
> 
> So, your patch is seems to be mixing up things by using the name `SharedRuntime_throw_delayed_StackOverflowError_blob` for the `CompilerToVM` field but declaring it with type `address`. Would it make more sense to use the name `SharedRuntime_throw_delayed_StackOverflowError_entry` for this field?

Right, `SharedRuntime_throw_delayed_StackOverflowError_entry` is better. Thanks for the explanation!

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20566#discussion_r1716924978


More information about the graal-dev mailing list