RFR: 8286302: Port JEP 425 to PPC64 [v5]
Richard Reingruber
rrich at openjdk.org
Fri Nov 18 11:17:38 UTC 2022
On Thu, 17 Nov 2022 17:48:12 GMT, Martin Doerr <mdoerr at openjdk.org> wrote:
>> Richard Reingruber has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Cleanup BasicExp.java
>
> src/hotspot/cpu/aarch64/frame_aarch64.hpp line 110:
>
>> 108: // between a callee frame and its stack arguments, where it is part
>> 109: // of the caller/callee overlap
>> 110: metadata_words_at_top = 0,
>
> I like the `_at_bottom` and `_at_top` versions. The old version could possibly get replaced completely in a separate RFE (this change is already large enough).
Thanks. I don't think though that these can replace metadata_words completely because for at least one platform you would replace it with 0.
> src/hotspot/cpu/ppc/continuationFreezeThaw_ppc.inline.hpp line 498:
>
>> 496: // align fp
>> 497: int padding = fp - align_down(fp, frame::frame_alignment);
>> 498: fp -= padding;
>
> Additional whitespaces should better get removed.
Done
> src/hotspot/cpu/ppc/continuationFreezeThaw_ppc.inline.hpp line 520:
>
>> 518:
>> 519: if ((bottom && argsize > 0) || caller.is_interpreted_frame()) {
>> 520: frame_sp -= argsize + frame::metadata_words_at_top;
>
> whitespace
Done
> src/hotspot/cpu/ppc/frame_ppc.hpp line 370:
>
>> 368:
>> 369: union {
>> 370: intptr_t* _fp; // frame pointer
>
> whitespace
Done.
> src/hotspot/cpu/ppc/frame_ppc.inline.hpp line 113:
>
>> 111: // In thaw, non-heap frames use this constructor to pass oop_map. I don't know why.
>> 112: assert(_on_heap || _cb != nullptr, "these frames are always heap frames");
>> 113: if (cb != NULL) {
>
> Better use `nullptr`.
Done
> src/hotspot/cpu/ppc/nativeInst_ppc.cpp line 448:
>
>> 446: }
>> 447:
>> 448: // Inserts an undefined instruction at a given pc
>
> More precisely: An instruction which is specified to cause a SIGILL.
Done
> src/hotspot/cpu/ppc/ppc.ad line 14386:
>
>> 14384:
>> 14385: format %{ "CALL,static $meth \t// ==> " %}
>> 14386: size(8);
>
> Please make the sizes precise. They are only 8 Byte when continuations are enabled.
Done (note it's not done on other platforms).
> src/hotspot/cpu/ppc/sharedRuntime_ppc.cpp line 1803:
>
>> 1801:
>> 1802: // Read interpreter arguments into registers (this is an ad-hoc i2c adapter)
>> 1803: __ ld(reg_cont_obj, Interpreter::stackElementSize*3, R15_esp);
>
> Would you like to align the indentation?
Done
> src/hotspot/cpu/ppc/stackChunkFrameStream_ppc.inline.hpp line 194:
>
>> 192: + 1 // for the mirror oop
>> 193: + ((intptr_t*)f.interpreter_frame_monitor_begin()
>> 194: - (intptr_t*)f.interpreter_frame_monitor_end())/BasicObjectLock::size();
>
> whitespace
Ok now?
> src/hotspot/share/runtime/continuationFreezeThaw.cpp line 488:
>
>> 486: assert(!Interpreter::contains(_cont.entryPC()), "");
>> 487: static const int doYield_stub_frame_size = NOT_PPC64(frame::metadata_words)
>> 488: PPC64_ONLY(frame::abi_reg_args_size >> LogBytesPerWord);
>
> Unfortunate that we still need to distinguish, here. But, ok. I don't have a better idea atm.
A pd constant could be introduced. Not sure if it's worth it.
-------------
PR: https://git.openjdk.org/jdk/pull/10961
More information about the hotspot-compiler-dev
mailing list